4 ユーザー・イグジット・ファンクション
Oracle GoldenGateユーザー・イグジットの使用の詳細は、『Oracle GoldenGateの管理』を参照してください。
トピック:
- ユーザー・イグジットのコール
- ユーザー・イグジット・ファンクションの概要
- EXIT_CALL_TYPEの使用
- EXIT_CALL_RESULTの使用
- EXIT_PARAMSの使用
- ERCALLBACKの使用
- ファンクション・コード
- COMPRESS_RECORD
- DECOMPRESS_RECORD
- GET_BASE_OBJECT_NAME
- GET_BASE_OBJECT_NAME_ONLY
- GET_BASE_SCHEMA_NAME_ONLY
- GET_BEFORE_AFTER_IND
- GET_CATALOG_NAME_ONLY
- GET_COL_METADATA_FROM_INDEX
- GET_COL_METADATA_FROM_NAME
- GET_COLUMN_INDEX_FROM_NAME
- GET_COLUMN_NAME_FROM_INDEX
- GET_COLUMN_VALUE_FROM_INDEX
- GET_COLUMN_VALUE_FROM_NAME
- GET_DATABASE_METADATA
- GET_DDL_RECORD_PROPERTIES
- GETENV
- GET_ENV_VALUE
- GET_ERROR_INFO
- GET_GMT_TIMESTAMP
- GET_MARKER_INFO
- GET_OBJECT_NAME
- GET_OBJECT_NAME_ONLY
- GET_OPERATION_TYPE
- GET_POSITION
- GET_RECORD_BUFFER
- GET_RECORD_LENGTH
- GET_RECORD_TYPE
- GET_SCHEMA_NAME_ONLY
- GET_SESSION_CHARSET
- GET_STATISTICS
- GET_TABLE_COLUMN_COUNT
- GET_TABLE_METADATA
- GET_TABLE_NAME
- GET_TABLE_NAME_ONLY
- GET_TIMESTAMP
- GET_TRANSACTION_IND
- GET_USER_TOKEN_VALUE
- OUTPUT_MESSAGE_TO_REPORT
- RESET_USEREXIT_STATS
- SET_COLUMN_VALUE_BY_INDEX
- SET_COLUMN_VALUE_BY_NAME
- SET_OPERATION_TYPE
- SET_RECORD_BUFFER
- SET_SESSION_CHARSET
- SET_TABLE_NAME
親トピック: Oracle GoldenGateの共通コンポーネント
4.1 EXIT_CALL_TYPEの使用
EXIT_CALL_TYPE
では、処理中にいつExtractまたはReplicatプロセス(コール元)がユーザー・イグジット・ルーチンをコールするかを指定します。プロセスは、次のコールを使用してルーチンをコールできます。
表4-1 ユーザー・イグジット・コール
コール・タイプ | 処理ポイント |
---|---|
|
|
|
次のいずれかの直前にコールされます。
|
|
ExtractまたはReplicatチェックポイントが書き込まれた直後にコールされます。 |
|
Extractの処理中に、ASCII入力レコードが破棄ファイルに書き込まれる前にコールされます。関連するASCIIバッファは、コールバック・ルーチンを使用してユーザー・イグジットによって取得および操作できます。 このコール・タイプは、Replicatプロセスでは使用できません。 |
|
Replicatの処理中に、レコードが破棄ファイルに書き込まれる前にコールされます。レコードは、Oracle GoldenGate変更レコードの値がターゲット表の現在のバージョンと異なっているときなど、複数の理由で破棄されます。関連する破棄バッファは、コールバック・ルーチンを使用してユーザー・イグジットによって取得および操作できます。 このコール・タイプは、Extractプロセスでは使用できません。 |
|
次のいずれかの直後にコールされます。
|
|
ExtractまたはReplicatの処理中に致命的なエラーが発生後、Oracle GoldenGateが停止する直前にコールされます。 |
|
Replicatの処理中に、NonStopサーバーのマーカーがトレイルから読み取られ、マーカー履歴ファイルに書き込まれる前にコールされます。 |
|
このコールは、ほとんどのユーザー・イグジット処理の基盤です。 |
|
処理開始時にコールされます。ユーザー・イグジットは、ファイルのオープンや変数の初期化などの初期化作業を実行できます。 |
|
プロセスが正常に停止または異常終了する前にコールされます。ユーザー・イグジットは、ファイルのクローズや合計の出力などの完了作業を実行できます。 |
|
各イグジット・コールの完了時に、コール元にレスポンス方法を指示するためにユーザー・イグジット・ルーチンによって設定されます。 |
親トピック: ユーザー・イグジット・ファンクション
4.2 SET_SESSION_CHARSET
適用対象
ExtractおよびReplicat
説明
SET_SESSION_CHARSET
ファンクションでは、ユーザー・イグジットの文字セットを設定します。ユーザー・イグジット・セッションの文字セットは、次のような(ただしこれらに限定されません)メタデータなど、ユーザー・イグジットとコール元プロセス(Extract、データ・ポンプ、Replicat)間で使用される文字ベースのコールバック構造メンバーのエンコーディングを示します。
-
データベースの名前およびロケール
-
表名および列名
-
DDLテキスト
-
エラー・メッセージ
-
CHAR
およびNCHAR
などの文字型の列 -
文字列形式で表される日時および数値の列
このファンクションは、ユーザー・イグジットが制御しているときはいつでも呼び出すことができます。ユーザー・イグジットがセッションの文字セットを設定すると、すぐに有効になり、すべての文字値は指定したセットへの変換を開始します。このファンクションを呼び出すには、コール・タイプEXIT_CALL_START
を使用することをお薦めします。
ノート:
SET_SESSION_CHARSET
はスレッドセーフではありません。
SET_SESSION_CHARSET
が呼び出されない場合、セッションは、ucharset.h
ファイルのULIB_CS_DEFAULT
の事前定義された列挙型の値であるオペレーティング・システムのデフォルトの文字セットに設定されます。セッションの文字セットがULIB_CS_DEFAULT
からのデフォルトである場合、ユーザー・イグジットとコール元プロセス間で交換される文字型の値に対して、Oracle GoldenGateでは変換は実行されません。さらに、データベースのオブジェクト名のメタデータは、オペレーティング・システムのデフォルトの文字セットであるとみなされます。デフォルトは適切ではない場合があることに注意してください。
ユーザー・イグジットがロードされ、SET_SESSION_CHARSET
が呼び出されると、ユーザー・イグジットの文字セットはレポート・ファイルに出力されます。セッションの文字セットがULIB_CS_DEFAULT
である場合、列データの文字セットの変換が実行されないことを示すメッセージが表示されます。
グローバリゼーション・サポートの詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。
構文
#include usrdecs.h short result_code; session_def session_charset_def; ERCALLBACK (SET_SESSION_CHARSET, &session_charset_def, &result_code);
バッファ
typedef struct { ULibCharSet session_charset; } session_def;
出力
なし
返される値
EXIT_FN_RET_OK
親トピック: ユーザー・イグジット・ファンクション