ユーザー・イグジットの作成
次の内容は、WindowsおよびUNIXシステムでユーザー・イグジットを作成する場合に役立ちます。それらの説明に記載されているパラメータや関数の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
ノート:
ユーザー・イグジットは、データベース・オブジェクト名の大/小文字を区別します。名前は、ホスト・データベースで定義されたとおりに戻されます。オブジェクト名は完全修飾名である必要があります。
ユーザー・イグジットを作成する手順
-
Cコードで、共有オブジェクト(UNIXシステム)またはDLL(Windows)を作成し、ExtractまたはReplicatからコールするルーチンを作成またはエクスポートします。このルーチンは、Oracle GoldenGateとユーザー独自のルーチン間の通信ポイントになります。このルーチンに任意の名前を付けます。ルーチンでは、次のOracle GoldenGateユーザー・イグジット・パラメータを受け入れる必要があります。
-
EXIT_CALL_TYPE: 処理中にいつルーチンをコールするかを指定します。 -
EXIT_CALL_RESULT: ルーチンにレスポンスを提供します。 -
EXIT_PARAMS: ルーチンに情報を提供します。この関数を使用すると、TABLE文またはMAP文のEXITPARAMオプションを使用して、リテラル文字列のパラメータをユーザー・イグジットに渡すことができます。これは、特定のレコードを処理するイグジット・コール中にのみ有効です。この関数を使用すると、イグジット・コール起動時にCUSEREXITパラメータのPARAMSオプションで指定されたパラメータを渡すこともできます。
-
-
ソース・コードで、
usrdecs.hファイルをインクルードします。usrdecs.hファイルは、ユーザー・イグジットAPI用のインクルード・ファイルです。型定義、戻りステータス値、コールバック関数コード、および多数の他の定義が含まれます。usrdecs.hファイルは、Oracle GoldenGateディレクトリ内にインストールされます。このファイルは変更しないでください。 -
必要に応じてOracle GoldenGateコールバック・ルーチンをユーザー・イグジットに含めます。コールバック・ルーチンは、レコードおよびアプリケーション・コンテキスト情報を取得して、データ・レコードの内容を変更します。コールバック・ルーチンを実装するには、共有オブジェクトで
ERCALLBACK関数を使用します。ユーザー・コールバック・ルーチンは、コールバック・ルーチンに渡される関数コードに基づいて異なる動作をします。ERCALLBACK (
function_code,buffer,result_code);説明:
-
function_codeは、コールバック・ルーチンによって実行される関数です。 -
bufferは、指定した関数コードに関連付けられた事前定義構造を含むバッファへのvoidポインタです。 -
result_codeは、コールバック・ルーチンによって実行される関数のステータスです。コールバック・ルーチンによって戻される結果コードは、コールバック関数が成功したかどうかを示します。 -
Windowsシステムでは、ExtractおよびReplicatによって、ユーザー・イグジット・ルーチンからコールされる
ERCALLBACK関数がエクスポートされます。ユーザー・イグジットでは、適切なWindows APIコールを使用して実行時にコールバック関数を明示的にロードする必要があります。
-
-
ExtractまたはReplicatのパラメータ・ファイルに
CUSEREXITパラメータを含めます。このパラメータでは、共有オブジェクトまたはDLLの名前と、ExtractまたはReplicatからコールされるエクスポート・ルーチンの名前を使用します。共有オブジェクトまたはDLLのフルパスを指定するか、オペレーティング・システムの標準検索機能を使用して共有オブジェクトの場所を特定できます。CUSEREXIT {DLL|shared_object}routine[, INCLUDEUPDATEBEFORES] [, PARAMS 'startup_string']説明:
-
DLLはWindows DLLで、shared_objectはユーザー・イグジット関数を含むUNIX共有オブジェクトです。 -
INCLUDEUPDATEBEFORESは、UPDATE操作のために変更前イメージを取得します。 -
PARAMS'startup_string'は、起動文字列(起動パラメータなど)を指定します。
-
例8-31 ベース構文の例(UNIX)
CUSEREXIT eruserexit.so MyUserExit
例8-32 ベース構文の例(Windows)
CUSEREXIT eruserexit.dll MyUserExit