3 Oracle GoldenGateのプロセスと重要な用語

Oracle GoldenGateには、共通のデータ・レプリケーション・プロセスとアーキテクチャ固有のプロセスがあります。

Classic ArchitectureMicroservices Architectureの具体的なコンポーネントについては、「Classic Architectureのコンポーネント」「Microservices Architectureのコンポーネント」で説明しています。ただし、多数のプロセスと重要な用語がOracle GoldenGateの両方のアーキテクチャに共通しています。

共通データ・レプリケーション・プロセス

Oracle GoldenGateの2つのアーキテクチャに共通するデータ・レプリケーション・プロセスがいくつかあります。

トピック:

Extractとは

Extractは、ソース・データベースに対して実行するように構成されたプロセスです。あるいは、どこか他の場所にある実際のソース・データベースで生成されたデータを取得するダウンストリーム・マイニング・データベース(Oracleのみ)上で実行するように構成されたプロセスです。このプロセスは、Oracle GoldenGateの抽出すなわちデータ取得メカニズムです。

Extractは次のユースケースにあわせて構成できます。
  • 初期ロード: Oracle GoldenGateを初期ロード用に設定すると、Extractプロセスは、現在の静的なデータ・セットをソース・オブジェクトから直接取得します。

  • 変更同期: ソース・データと別のデータセットとの同期を維持するようにOracle GoldenGate を設定すると、Extractプロセスは、初期同期が行われた後で、構成されたオブジェクトに実行されたDML操作およびDDL操作を取得します。Extractは、データベースと同じサーバーでローカルに実行することも、オーバーヘッドを減らすためにダウンストリーム統合Extractを使用して別のサーバーで実行することもできます。操作が含まれるトランザクションのコミット・レコードまたはロールバックを受信するまで、それらの操作を格納します。ロールバックを受信すると、そのトランザクションの操作を破棄します。コミットを受信すると、トランザクションはディスク上の証跡と呼ばれる一連のファイルに永続化され、ターゲット・システムへの伝播を待つキューに入ります。各トランザクションの操作はすべて、順次編成されたトランザクション単位として証跡に書き込まれます。この設計によって、処理速度とデータ整合性の両方が保証されます。

    注意:

    Extractでは、Extract構成に存在しないオブジェクトに対する操作は無視されます。この動作は、Extract構成に存在するオブジェクトに対する操作もそのトランザクションに含まれている場合にも同様です。
Extractプロセスは、次の3種類のデータ・ソースからデータを抽出するように構成できます。
  • ソース表: このソース・タイプは初期ロードで使用されます。

  • データベースのリカバリ・ログまたはトランザクション・ログ: ログから取得する場合、実際の方法はデータベースのタイプによって変わります。このソース・タイプの例としては、Oracle Database REDOログやSQL/MX監査証跡があります。

  • サードパーティの取得モジュール: この方法では、データおよびメタデータを外部APIからExtract APIに渡すための通信レイヤーが提供されます。データベース・ベンダーまたはサード・パーティ・ベンダーによって、データ操作を抽出してExtractに渡すコンポーネントが用意されます。

証跡とは

証跡とは、Oracle GoldenGateがデータベース変更の継続的な抽出およびレプリケーションをサポートするために、取得した変更を格納するディスク上の一連のファイルです。

証跡は、Oracle GoldenGateの構成方法に応じて、ソース・システム、中間システム、ターゲット・システムのいずれか、またはこれらを組み合せたシステムに配置できます。これは、ローカル・システムではExtract証跡(またはローカル証跡)と呼ばれます。リモート・システムでは、リモート証跡と呼ばれます。Oracle GoldenGateでは、記憶域として証跡を使用することで、データの正確性とフォルト・トレランスをサポートします。また、証跡の使用により、抽出アクティビティとレプリケーション・アクティビティを相互に独立して実行できます。これらのプロセスが分離されることで、データを処理して配信する方法の選択肢が広がります。たとえば、変更を継続的に抽出してレプリケートするかわりに、変更を継続的に抽出しながら、ターゲット・アプリケーションの必要に応じて後からいつでもターゲットにレプリケートできるように、それらの変更を証跡に格納することができます。

また、証跡を使用することで、Oracle Databaseが異種環境で作動できます。証跡ファイルにはデータが一定の形式で格納されるため、サポートされるすべてのデータベースに対してReplicatプロセスが読み取ることができます。詳細は、「Oracle GoldenGate証跡について」を参照してください。

証跡ファイルに書き込むプロセス:

Extractおよびデータ・ポンプ・プロセスが証跡に書き込みます。所定のローカル証跡に書き込めるのは、1つのExtractプロセスのみです。すべてのローカル証跡で異なるフルパス名を使用する必要がありますが、違うパスであれば同じ証跡名を使用できます。

複数のデータ・ポンプ・プロセスで、それぞれ同じ名前の証跡に書き込むことはできますが、物理証跡自体は異なるリモート・システム(データ分散トポロジなど)に配置する必要があります。たとえば、データ・ポンプpump1とデータ・ポンプpump2の両方をsys01に配置して、リモート証跡aaに書き込むことができます。この場合、Pump1はsys02の証跡aaに、pump2はsys03の証跡aaに書き込むことができます。

証跡ファイルを読み取るプロセス:

データ・ポンプ・プロセスおよびReplicatプロセスが証跡ファイルを読み取ります。データ・ポンプは、Extractプロセスにリンクしているローカル証跡からDML操作およびDDL操作を抽出し、必要に応じてさらに処理を行い、後続のOracle GoldenGateプロセス(通常はReplicatだが、必要に応じて別のデータ・ポンプの場合もある)によって読み取られる証跡にデータを転送します。

Replicatプロセスは証跡を読み取り、レプリケートされたDML操作およびDDL操作をターゲット・データベースに適用します。

証跡ファイルの作成およびメンテナンス:

証跡ファイルは処理中に必要に応じて作成されます。ADD RMTTRAILコマンドまたはADD EXTTRAILコマンドで証跡をOracle GoldenGate構成に追加するときに、2文字の証跡名を指定します。デフォルトでは、証跡は、Oracle GoldenGateディレクトリのdirdatサブディレクトリに格納されます。TRAIL_SEQLEN_9D | TRAIL_SEQLEN_6D GLOBALSパラメータを使用して、6桁または9桁の順序番号を指定できます。TRAIL_SEQLEN_9Dがデフォルトで設定されています。

証跡ファイルは自動的にエージングするので、ファイル・メンテナンスのために処理を中断する必要はありません。新しいファイルを作成すると、各ファイルが2文字の証跡名を継承し、それに一意の9桁の順序番号(000000000から999999999)が追加されます(たとえば、c:\ggs\dirdat\tr000000001のようになります)。順序番号が999999999に達すると、再度000000000から番号付けが始まり、前の証跡ファイルは上書きされます。証跡ファイルは、ManagerパラメータのPURGEOLDEXTRACTSを使用して、ルーチンごとに消去できます。

異なるオブジェクトまたはアプリケーションからデータを分離するために、複数の証跡を作成できます。TABLEまたはSEQUENCEパラメータで指定したオブジェクトを、Extractパラメータ・ファイルのEXTTRAILまたはRMTTRAILパラメータで指定した証跡にリンクします。スループットを最大化し、システムのI/O負荷を最小化するため、抽出データの証跡に対する入出力は、サイズの大きいブロック単位で行われます。トランザクション順序は保持されます。

既存の証跡を9桁の順序番号に変換する方法

指定したextractグループについて、証跡ファイルを6桁から9桁のチェックポイント・レコードに変換できます。convchkネイティブ・コマンドを使用して、Extractを正常に停止して9桁の証跡に変換してから、次のようにconvchkを使用してアップグレードします。

convchk extract trail seqlen_9d

Extractを起動します

9桁から6桁の証跡にダウングレードするには、このconvchkコマンドを使用して、同じ手順を実行します。

convchk extract trail seqlen_6d

注意:

抽出ファイル: 抽出したデータを証跡ではなく抽出ファイルに格納するようにOracle GoldenGateを構成できます。抽出ファイルは、単一のファイルとすることも、オペレーティング・システムのファイル・サイズ制限を考慮して複数のファイルにロールオーバーするように構成することもできます。これは証跡と似ていますが、チェックポイントは記録されません。実行中に1つ以上のファイルが自動的に作成されます。証跡に適用されるバージョニング機能と同じ機能が、抽出ファイルにも適用されます。

Replicatとは

Replicatは、データをターゲット・データベースに届けるプロセスです。ターゲット・データベースの証跡ファイルを読み取り、DML操作またはDDL操作を再構成して、ターゲット・データベースに適用します。

Replicatプロセスは動的SQLを使用して1つのSQL文を一度だけコンパイルした後、異なるバインド変数を使用してこの文を何回も実行します。レプリケートした操作をターゲット・データベースに適用する前に一定時間待機するようにReplicatプロセスを構成できます。遅延が推奨される場合として、たとえば、間違ったSQLの伝播を防ぐ場合、異なるタイムゾーンにわたるデータの受信を制御する場合、または他の計画済イベントの発生に備えて時間を考慮する場合があげられます。

Oracle GoldenGateの2つの共通ユースケースではReplicatプロセスの機能は次のとおりです。
  • 初期ロード: 初期ロード用にOracle GoldenGateを設定すると、Replicatプロセスは静的データ・コピーをターゲット・オブジェクトに適用するか、高速なバルク・ロード・ユーティリティにデータをルーティングします。

  • 変更同期: ターゲット・データベースとソース・データベースとの同期を維持するようにOracle GoldenGateを設定すると、Replicatプロセスは、データベース・タイプに応じてネイティブ・データベース・インタフェースまたはODBCを使用して、ソース操作をターゲット・オブジェクトに適用します。

複数のReplicatプロセスを1つ以上のExtractプロセスおよびデータ・ポンプとともにパラレルに構成して、スループットを向上できます。データ整合性を維持するため、プロセスのセットごとに異なるオブジェクトを処理します。Replicatプロセスを区別するには、それぞれにグループ名を付けます

複数のReplicatプロセスを使用しない場合には、1つのReplicatプロセスを調整モードまたは統合モードで構成できます。

  • 調整モードは、Oracle GoldenGateでサポートされているすべてのデータベースに対応しています。調整モードでは、Replicatプロセスがスレッド化されます。1つのコーディネータ・スレッドが、レプリケートされたSQL操作をパラレルに実行する1つ以上のスレッドを作成して調整します。調整Replicatプロセスは1つのパラメータ・ファイルを使用し、1つの単位として監視および管理されます。詳細は、https://www.oracle.com/pls/topic/lookup?ctx=en/middleware/goldengate/core/12.3.0.1/ggcon&id=GWUAD-GUID-6DE3925D-65A1-4604-B253-0A2CC7FEC74Fを参照してください。

  • 統合モードはOracle Databaseリリース11.2.0.4以上でサポートされます。統合モードでは、Replicatプロセスは、Oracle Database内で使用可能な適用処理機能を利用します。単一のReplicat構成内で、適用サーバーと呼ばれるインバウンド・サーバーの複数の子プロセスがトランザクションをパラレルに適用し、元のトランザクションのアトミック性を保持します。統合モードの詳細は、「統合Replicatモードについて」を参照してください。

Replicatは、レプリケートされた操作をターゲット・データベースに適用する前に一定の時間待機するよう遅延させることができます。遅延が推奨される場合として、たとえば、間違ったSQLの伝播を防ぐ場合、異なるタイムゾーンにわたるデータの受信を制御する場合、または他の計画済イベントの発生に備えて時間を考慮する場合があげられます。遅延の長さは、DEFERAPPLYINTERVALパラメータで制御します。

各種パラメータを使用して、Replicatがソース・トランザクションをターゲット・トランザクションに変換する方法を制御します。たとえば、BATCHSQLGROUPTRANSOPSMAXTRANSOPSなどのパラメータがあります。これらのパラメータおよびその他のReplicatパラメータの詳細は、『Oracle GoldenGateリファレンス』「Oracle GoldenGateパラメータ」を参照してください。

チェックポイントとは

チェックポイントは、プロセスの現在の読取り位置と書込み位置をリカバリ目的でディスクに格納します。チェックポイントは、同期のためにマークされたデータ変更が、実際にExtractにより取得されてReplicatによりターゲットに適用されることを保証し、重複処理を防止します。チェックポイントによって、システム、ネットワークまたはOracle GoldenGateプロセスを再起動した場合のデータ損失が防止され、フォルト・トレランスが実現します。複雑な同期構成では、チェックポイントにより、複数のExtractプロセスまたはReplicatプロセスを使用して同じ証跡セットから読取りを行うことができます。

チェックポイントは、メッセージがネットワーク内で失われないように、プロセス間の確認応答と連携して動作します。Oracle GoldenGateには、独自仕様のメッセージ配信保証テクノロジがあります。

Extractは、データソースおよび証跡内にその位置を示すチェックポイントを作成します。Extractはコミットされたトランザクションのみを取得するので、オープン・トランザクションのいずれかがコミットされた場合に備えて、すべてのオープン・トランザクションの操作を追跡します。そのため、トランザクション・ログ内で現在読取りを行っている場所を示すチェックポイントと、最も古いオープン・トランザクションの開始位置(現在のログまたは以前のいずれかのログ内)を記録することが求められます。

また、Oracleデータベースの停止後に再処理が必要になるトランザクション・ログの量を抑えるため、Extractは、処理の現在の状態およびデータ(長時間実行トランザクションの状態およびデータがあればそれも含む)を特定の間隔でディスクに永続化します。この間隔の後、Extractが停止した場合は、直前の間隔における位置または最後のチェックポイントからリカバリを実行できるので、最も古いオープンの長時間実行トランザクションが最初に現れたログ位置まで戻る必要はありません。詳細は、『Oracle GoldenGateリファレンス』BRパラメータに関する項を参照してください。

Replicatは、証跡内にその位置を示すチェックポイントを作成します。Replicatは、これらのチェックポイントをターゲット・データベース内の表(チェックポイント表)とディスク上のチェックポイント・ファイルに格納します。チェックポイント表は、ユーザーが指定した名前と場所で格納されます。チェックポイント・ファイルは、Oracle GoldenGateディレクトリのdirchkサブディレクトリに格納されます。

各トランザクションが完了すると、Replicatはトランザクションに関する情報をチェックポイント表の行に書き込み、そのトランザクションに特定の証跡ファイル内の一意の位置をリンクします。Replicatはトランザクションの完了時にチェックポイントをチェックポイント・ファイルにも書き込みます。また、一定の間隔で現在の読取り位置もチェックポイント・ファイルに書き込みます。通常、これらの位置はトランザクション境界ではなく、トランザクション内の任意の位置にあります。間隔の長さは、CHECKPOINTSECSパラメータで制御されます。

チェックポイント表はデータベースの一部で、データベースのリカバリ・システムを利用できるため、Replicatのリカバリ・ポイントがより効率的になります。チェックポイント・ファイル内の最後のチェックポイントが最新のトランザクション境界とはかぎりません。Replicatによってまだ適用されていないトランザクションや、すでに適用済の過去のトランザクションの途中である可能性があります。チェックポイント表によって、Replicatは適切なトランザクション境界から開始できるので、各トランザクションが1回のみ適用されることが保証されます。チェックポイント表内の情報はリカバリに利用できる場合もありますが、主にGGSCIのINFOコマンドなどで使用します。

Oracle GoldenGate環境(証跡を含む)の定期的なバックアップは、データベースのバックアップ、リカバリおよび保存の各ポリシーに適合している必要があります。データベース(とチェックポイント表)を過去のある時点にリストアすると、Replicatはその時刻と一致する過去のチェックポイントに位置を戻します。この期間の必要な証跡ファイルがすでにシステムからエージングされている場合、それらをバックアップからリストアする必要があります。証跡の管理とエージングの方法は、証跡とはを参照してください。

非継続的なタイプの構成(バッチ・ロードや初期ロードなど)の場合、チェックポイントは不要です。障害が発生した場合は、これらのプロセスを最初の開始位置から再開できます。

チェックポイントおよびチェックポイント表の詳細は、https://www.oracle.com/pls/topic/lookup?ctx=en/middleware/goldengate/core/12.3.0.1/ggcon&id=GWUAD-GUID-52E9EEEE-FF27-48BC-8F9F-1A638576C7AAを参照してください。

Oracle GoldenGateの重要な用語および概念

2つのアーキテクチャとそれらのコンポーネントとは別に、重要な用語について理解する必要があります。

トピック:

プロセス・タイプの概要

Oracle GoldenGateは、要件に応じて、次の処理タイプでの構成が可能です。

  • オンラインExtractプロセスまたはReplicatプロセスは、ユーザーが停止するまで実行されます。オンライン・プロセスは、証跡にリカバリ・チェックポイントを保持するため、処理を中断しても再開することができます。ソース・オブジェクトとターゲット・オブジェクトの同期を維持するために、DML操作およびDDL操作(サポートされる場合)を継続的に抽出してレプリケートするには、オンライン・プロセスを使用します。このプロセス・タイプには、EXTRACTパラメータとREPLICATパラメータが適用されます。

  • ソース表(初期ロードExtractとも呼ばれる)Extractプロセスは、別のデータベースへの初期ロードの準備として、現在の静的データセットをソース・オブジェクトから直接抽出します。このプロセス・タイプでは、チェックポイントは使用されません。このプロセス・タイプには、SOURCEISTABLEパラメータが適用されます。

  • 特別実行Replicatプロセスは、既知の開始ポイントと終了ポイントの範囲内でデータを適用します。Replicatの特別実行は初期データ・ロードで使用しますが、オンラインExtractと一緒に使用して、証跡内のデータ変更をバッチ形式で(継続的にではなく、1日1回など)適用することもできます。このプロセス・タイプでは、同じ開始ポイントと終了ポイントを使用して最初から実行しなおせるため、チェックポイントは保持されません。このプロセス・タイプには、SPECIALRUNパラメータが適用されます。

  • リモート・タスクは、特殊なタイプの初期ロード・プロセスであり、ExtractがTCP/IP経由で直接Replicatと通信します。Collectorプロセスも、証跡またはファイルの一時ディスク記憶域も使用されません。このタスクは、RMTTASKパラメータを使用してExtractパラメータ・ファイルに定義します。

グループの概要

システムの複数のExtractプロセスまたはReplicatプロセスを区別するには、処理グループを定義します。たとえば、異なるデータセットをパラレルにレプリケートするには、2つのReplicatグループを作成します。

処理グループは、プロセス(ExtractまたはReplicat)、パラメータ・ファイル、チェックポイント・ファイル、およびそのプロセスに関連する他のファイルで構成されます。Replicatの場合、グループには関連するチェックポイント表も含まれる場合があります。グループを定義するには、Oracle GoldenGateのコマンド・インタフェースであるGGSCIで、ADD EXTRACTコマンドおよびADD REPLICATコマンドを使用します。

グループに関連するすべてのファイルおよびチェックポイントでは、グループ自体に割り当てられた名前を共有します。処理を制御または表示するコマンドを発行する場合、常に単一のグループ名または(ワイルドカードを使用して)複数のグループ名を指定します。

コミット順序番号(CSN)の概要

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

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列変換関数を使用して取得することや、ログダンプ・ユーティリティを使用して表示することができます。

CSNの詳細とデータベースごとのCSN値のリストは、https://www.oracle.com/pls/topic/lookup?ctx=en/middleware/goldengate/core/12.3.0.1/ggcon&id=GWUAD-GUID-C8A3CB58-2A18-4A1E-9A2F-5AADCD9BF599を参照してください。