Oracle® Fusion Middleware Oracle GoldenGateリファレンスfor Windows and UNIX 12c (12.2.0.1) E70112-04 |
|
![]() 前 |
![]() 次 |
適用対象
ExtractおよびReplicat
説明
GET_RECORD_BUFFER
ファンクションでは、カスタム列変換に関する情報を取得します。MAP
またはTABLE
パラメータのCOLMAP
オプションでは十分に対応できないときは、ユーザー・イグジットを使用して異なるソースおよびターゲット・レコード間でデータをマッピングできます。たとえば、ユーザー・イグジットを使用してEnscribeデータベースの固有の日付フィールド(たとえばYYDDD
)をターゲット・レコードで標準のSQL日付に変換し、他の列はCOLMAP
オプションを使用してExtractプロセスでマップできます。
SET_RECORD_BUFFER
ファンクション(SET_RECORD_BUFFERを参照してください)では、GET_RECORD_BUFFER
で取得したデータを変更できます。ただし、これには内部Oracle GoldenGate正規フォーマットで書き込まれたデータ・レコードに対する理解が必要です。かわりの方法として、SET_COLUMN_VALUE_BY_INDEX
ファンクション(SET_COLUMN_VALUE_BY_INDEXを参照してください)またはSET_COLUMN_VALUE_BY_NAME
ファンクション(STRNCMPを参照してください)を使用して、データ・レコードの列値を設定できます。
削除、挿入、および更新は、バッファに完全なレコード・イメージで保持されます。
圧縮SQL更新は、次のフォーマットを持ちます。
index length value [index length value ][...]
説明:
index
は、表の列のリストへの2バイトの索引(最初の列はゼロ)です。
length
は、表の2バイトの長さです。
value
は、実際の列値で、適切な場合に次の2バイトのNULLインジケータの1つが含まれます。0
は非NULLです。-1
はNULLです。
SQLレコードの場合は、DECOMPRESS_RECORD
ファンクション(DECOMPRESS_RECORDを参照してください)を使用して操作のためにレコードを解凍した後、COMPRESS_RECORD
ファンクション(COMPRESS_RECORDを参照してください)を使用して、プロセスに予期されるとおりにもう一度圧縮できます。
圧縮Enscribe更新は、次のフォーマットを持ちます。
offset length value [offset length value ][...]
説明:
offset
は変更されたEnscribeレコードのデータ・フラグメントのオフセットです。
length
はフラグメント長です。
value
はデータです。フラグメントはフィールド境界にまたがることがあるため、(圧縮が無効かまたはFETCHCOMPS
が使用されている場合を除き)完全なフィールドが常に取得されるわけではありません。
構文
#include "usrdecs.h" short result_code; record_def record; ERCALLBACK (GET_RECORD_BUFFER, &record, &result_code);
バッファ
typedef struct { char *table_name; char *buffer; long length; char before_after_ind; short io_type; short record_type; short transaction_ind; int64_t timestamp; exit_ts_str io_datetime; short mapped; short source_or_target; /* Version 2 CALLBACK_STRUCT_VERSION */ char requesting_before_after_ind; } record_def;
入力
source_or_target
ソースまたはターゲット・データ・レコードのどちらのレコード・バッファを返すかを示す次の一方。
EXIT_FN_SOURCE_VAL EXIT_FN_TARGET_VAL
requesting_before_after_ind
オプションです。io_typeがUPDATE_COMP_PK_SQL_VAL
(主キー更新)のレコードのレコード・バッファをリクエストしているときに設定します。次のいずれかを使用して、主キー更新のどの部分にアクセスするかを指定します。デフォルトはAFTER_IMAGE_VAL
です。
BEFORE_IMAGE_VAL AFTER_IMAGE_VAL
出力
buffer
レコード・バッファへのポインタ。通常bufferは、exit_rec_buf_def
タイプのバッファへのポインタです。exit_rec_buf_def
バッファには、ExtractまたはReplicatによってまもなく処理される実際のレコードが含まれます。このバッファは、コール・タイプがEXIT_CALL_DISCARD_RECORD
のときに指定されます。イグジット・ルーチンは、たとえばカスタム・マッピング・ファンクションを実行するために、このバッファの内容を変えることがあります。
レコード・バッファの内容は、ユーザー・イグジットのキャラクタ・セットとの変換が行われません。これはそのままで渡されます。
length
返されるレコード・バッファの長さ。
io_type
次のいずれかが返されます。
DDLタイプ:
SQL_DDL_VAL
DMLタイプ:
DELETE_VAL INSERT_VAL UPDATE_VAL
圧縮Enscribe更新:
UPDATE_COMP_ENSCRIBE_VAL
圧縮SQL更新:
UPDATE_COMP_SQL_VAL UPDATE_COMP_PK_SQL_VAL
その他:
TRUNCATE_TABLE_VAL
mapped
これがマップされたレコード・バッファかどうかを示すフラグ(0
または1
)。
before_after_ind
レコードがビフォア・イメージかアフター・イメージかを示す次の一方。
BEFORE_IMAGE_VAL AFTER_IMAGE_VAL
返される値
EXIT_FN_RET_INVALID_CONTEXT EXIT_FN_RET_INVALID_PARAM EXIT_FN_RET_OK