コミット順序番号(CSN)

Oracle GoldenGateの操作時には、コミット順序番号(CSN)を参照する必要がある場合があります。CSNは、トランザクション一貫性とデータ整合性を維持する目的でトランザクションを識別するためにOracle GoldenGateが作成する識別子です。これにより、トランザクションがデータベースにコミットされた時点を一意に識別します。

CSNは、トランザクション・ログでExtractの位置を指定する場合、証跡でReplicatの位置を再指定する場合、またはその他の目的で必要になることがあります。一部の変換関数によって返され、レポートおよび特定のコマンド出力に含まれます。

CSNは、トランザクションがデータベースにコミットされた時点を一意に識別するOracle GoldenGateによって生成される、単調増加の識別子です。目的は、トランザクションがソースからターゲットにレプリケートされるとき、トランザクション一貫性とデータ整合性を保証することです。各種のデータベース管理システムでは、各トランザクションの完了時になんらかの一意のシリアル番号が独自に生成され、そのトランザクションのコミットが一意に識別されます。たとえば、Oracle RDBMSがシステム変更番号を生成すると、それはOracle RDBMSによって各イベントに割り当てられる、単調増加の順序番号になります。CSNは、この同じ識別情報を取得して、それを内部的に一連のバイト列として表現します。ただし、CSNは、プラットフォームに依存しない方法で処理されます。それぞれが同じログ・ストリームのトランザクション・コミット・レコードにバインドされた2つの任意のCSN番号を比較することで、2つのトランザクションが完了した順序が正確に示されます。

CSNは、トランザクションID(Oracle GoldenGateの情報出力でXIDと表示されます)でクロスチェックされます。同時にコミットする複数のトランザクションがあるため、同じCSNを持っている場合でも、XIDとCSNの組合せでは、トランザクションが一意に識別されます。たとえば、並列度と高いトランザクション同時並行性があるOracle RAC環境で、これが発生することがあります。

CSN値は、トランザクションのコミットを識別する証跡レコードにトークンとして格納されます。この値は、@GETENV列変換関数を使用して取得することや、ログダンプ・ユーティリティを使用して表示することができます。