Oracle GoldenGateを使用する場合、コミット順序番号(CSN)を参照する必要がある場合があります。CSNは、トランザクション・ストリームでExtractの位置を指定する場合、証跡でReplicatの位置を再指定する場合、またはその他の目的で必要になることがあります。変換関数の中にはこれを返すものがあります。また、レポートおよび一部のGGSCI出力に含まれます。
CSNは、トランザクションがデータベースにコミットされた時点を一意に識別するOracle GoldenGateによって生成される、単調増加の識別子です。目的は、トランザクションがソースからターゲットにレプリケートされるとき、トランザクション一貫性とデータ整合性を保証することです。
各種のデータベース管理システムでは、各トランザクションの完了時になんらかの一意のシリアル番号が独自に生成され、そのトランザクションのコミットが一意に識別されます。たとえば、Oracle RDBMSがシステム変更番号を生成すると、それはOracle RDBMSによって各イベントに割り当てられる、単調増加の順序番号になります。CSNは、この同じ識別情報を取得して、それを内部的に一連のバイト列として表現します。ただし、CSNは、プラットフォームに依存しない方法で処理されます。それぞれが同じログ・ストリームのトランザクション・コミット・レコードにバインドされた2つの任意のCSN番号を比較することで、2つのトランザクションが完了した順序が正確に示されます。
CSNは、トランザクションID(Oracle GoldenGateの情報出力でXID
と表示されます)でクロスチェックされます。同時にコミットする複数のトランザクションがあるため、同じCSNを持っている場合でも、XIDとCSNの組合せでは、トランザクションが一意に識別されます。たとえば、並列度と高いトランザクション同時並行性があるOracle RAC環境で、これが発生することがあります。
CSN値は、トランザクションのコミットを識別する証跡レコードにトークンとして格納されます。この値は、@GETENV
列変換関数を使用して取得することや、ログダンプ・ユーティリティを使用して表示することができます。
Oracle、DB2 LUWおよびDB2 z/OS以外のすべてのデータベース・プラットフォームは、固定長のCSNを持ちます。このCSNには、固定長にするために必要に応じて先行する0(ゼロ)が埋め込まれます。複数のフィールドを含むCSNは、各フィールド内で埋込みが行われることがあります(Sybase CSNなど)。
MySQLではトランザクションIDがイベント・データの一部として作成されないため、Oracle GoldenGateは次の項目の組合せを一意のトランザクション識別子とみなします。
識別するトランザクションのSTART TRANSACTION
レコードが含まれるログ・ファイルのログ・ファイル番号
そのレコードのレコード・オフセット
表D-1 Oracle GoldenGateのデータベースごとのCSN値
データベース | CSN値 |
---|---|
DB2 for i |
説明:
例: 12345678901234567890 |
DB2 LUW |
説明:
|
DB2 z/OS |
説明:
例: 1274565892 |
MySQL |
説明:
たとえば、ログ番号が12で、ログ位置が121の場合、CSNは次のようになります。 000012:000000000000121 |
Oracle |
説明:
例: 6488359 |
SQL/MX |
説明:
この2つの要素によって、TMFマスター監査証跡(MAT)の位置を指定します。 例: 000042|0000068242 |
SQL Server |
データベースが値を戻す方法に応じて、次のいずれかになります。
説明:
例: 0X00000d7e:0000036b:01bd 0000003454:0000000875:00445 0Xd7e:36b:1bd 3454:875:445 3454000000087500445 |
Sybase |
説明:
これらの構成要素が組み合されて、ログ・ストリーム内で一意の位置を表します。 例: 00001.0000067330.0000013478.00026 |
Teradata |
説明:
例: 0x0800000000000000D700000021 |
TimesTen |
TimesTenにはCSNはありません。このデータベースでは、Oracle GoldenGateによる抽出(取得)がサポートされないためです。 |