データベース接続、システムおよびパラメータ設定の準備

Oracle GoldenGate for Oracleのデータベース接続、システムおよびパラメータ設定の構成について学習します。

GoldenGateレプリケーションおよびアーカイブ・モードの有効化

ステップ1: GoldenGateレプリケーションの有効化

Oracle GoldenGateのExtractおよびReplicatをサポートするために必要なデータベース・サービスは、Oracle AI Databaseで明示的に有効化する必要があります。

Oracle GoldenGateレプリケーションを有効にするには、次のデータベース初期化パラメータを設定します。いずれかのノードでOracle GoldenGateを使用する場合は、Oracle RACのすべてのインスタンスでこの値をTRUEに設定する必要があります。

ALTER SYSTEM SET enable_goldengate_replication = true SCOPTE=both;

このパラメータの詳細は、初期化パラメータに関する項を参照してください。

ステップ2: アーカイブ・モードの有効化

Oracle Databaseは、Extractでログ・ファイルを処理できるように、ARCHIVELOGモードにする必要があります。ARCHIVELOGモードをオンに切り替えるには、データベース・アーカイブ・モードの変更に記載されているステップに従います。

フラッシュバック問合せの設定

Oracle GoldenGateがフェッチするデータの詳細は、「Oracleデータ型およびオブジェクトのサポートの詳細」を参照してください。

デフォルトでは、Oracle GoldenGateでフラッシュバック問合せを使用してUNDO (ロールバック)表領域から値をフェッチします。そのように、Oracle GoldenGateでは、特定の時点またはSCNの読取り一貫性行イメージを再構築し、REDOレコードと一致させることができます。

最適なフェッチ結果を得るには、ソース・データベースを次のように構成します。

  1. 次のようにOracle初期化パラメータUNDO_MANAGEMENTおよびUNDO_RETENTION(秒単位)を設定することで、REDO保存に十分な時間を設定します。

    UNDO_MANAGEMENT=AUTO
    
    UNDO_RETENTION=86400
    
    UNDO_RETENTION can be adjusted upward in high-volume environments.
  2. 次の式を使用して、UNDO表領域で必要な領域を計算します。

    *undo_space* = UNDO_RETENTION * *UPS* + *overhead*

    ここで:

    • undo_spaceは、UNDOブロック数です。

    • UNDO_RETENTIONは、UNDO_RETENTIONパラメータの値です(秒単位)。

    • UPSは、1秒当たりのUNDOブロックの数です。

    • オーバーヘッドとは、メタデータ(トランザクション表など)の最小オーバーヘッドのことです。

    システム・ビューV$UNDOSTATを使用して、UPSおよびオーバーヘッドを見積ります。

  3. LOBが含まれている表には、次のいずれかを実行します。

    • LOB記憶域句をRETENTIONに設定します。これは、UNDO_MANAGEMENTをAUTOに設定したときに作成される表のデフォルトです。

    • RETENTIONのかわりにPCTVERSIONを使用する場合、PCTVERSIONを初期値の25に設定します。これは、STATS EXTRACTコマンドでレポートされるフェッチ統計に基づいて調整できます。これらの統計のSTAT_OPER_ROWFETCH CURRENTBYROWIDフィールドまたはSTAT_OPER_ROWFETCH_CURRENTBYKEYフィールドの値が大きい場合、統計で低い値を示すまでPCTVERSIONを10ずつ増やします。

Oracle GoldenGateによって、フェッチの管理に次のパラメータが提供されます。

パラメータまたはコマンド 摘要
REPORTFETCHオプションを使用したSTATS EXTRACTコマンド 必要に応じてExtractフェッチ統計を表示します。
REPORTFETCHオプションを使用したSTATOPTIONSパラメータ 常にフェッチ統計が表示されるようにSTATS EXTRACTコマンドを設定します。
MAXFETCHSTATEMENTSパラメータ Extractがソース・データベースに保持する準備済の問合せおよびSQLEXEC操作のオープン・カーソル数を制御します。
MAXFETCHSTATEMENTSパラメータ Extractのデフォルトのフェッチ動作(Extractでフラッシュバック問合せを実行するか、現在のイメージを表からフェッチするか)を制御します。
USELATESTVERSIONまたはNOUSELATESTVERSIONオプションを使用したFETCHOPTIONSパラメータ UNDOの保存期限が切れた場合や、表の構造が変更された場合など、Extractフラッシュバック問合せの失敗を処理します。Extractは、現在のイメージを表からフェッチするか、失敗を無視するように設定できます。
REPFETCHEDCOLOPTIONSパラメータ フェッチされたデータまたは列が欠落している条件を含む証跡レコードを処理するときの、Replicatによるレスポンスを制御します。

他のデータベース・プロパティの処理

Oracle GoldenGateに影響を与える可能性があるデータベース・プロパティと、特定の条件の解決または回避に使用するパラメータがあります。

次の表でリストされるのは、データベース・プロパティおよび関連する問題点/解決策です。

データベース・プロパティ 問題点/解決策
時間隔パーティション化がある表 時間隔パーティション化がある表をサポートするには、WILDCARDRESOLVEパラメータがそのデフォルトのDYNAMICのままであることを確認します。
仮想列のある表

仮想列は記録されません。また、Oracleで仮想列に対するDMLは許可されません。ただし、次のようにして、このデータをキャプチャし、仮想列ではないターゲット列にマップできます。

ExtractのTABLE文に表を含め、TABLEのFETCHCOLSオプションを使用してデータベースの仮想列から値をフェッチします。

ReplicatのMAP文で、ソースの仮想列を仮想ではないターゲット列にマップします。

本質的に更新可能なビューを持つ表 本質的に更新可能なビューにレプリケートするには、関連付けの対象のソース表とターゲット表をマップするMAP文にKEYCOLS句を使用して、更新可能なビューの一意の列にキーを定義します。
異なる場所にあるREDOログまたはアーカイブ TRANLOGOPTIONSパラメータには、データベースのデフォルトとは異なる場所またはExtractが実行されているのとは異なるプラットフォームにREDOログまたはアーカイブが格納される環境を処理するためのオプションが含まれます。
TRUNCATE操作

TRUNCATE操作をレプリケートするには、次の2つのオプションのいずれかを選択します。

  • GETTRUNCATESパラメータを使用したスタンドアロンのTRUNCATEサポートでは、TRUNCATE TABLEはレプリケートされますが、他のTRUNCATEオプションはレプリケートされません。Oracle GoldenGate DDLサポートを使用している場合にのみ使用します。

  • 完全DDLサポートでは、TRUNCATE TABLE、ALTER TABLE TRUNCATE PARTITIONおよび他のDDLがレプリケートされます。

シーケンス

順序のDDL(CREATE、ALTER、DROP、RENAME)をレプリケートするには、Oracle GoldenGate DDLサポートを使用します。

順序値のみをレプリケートするには、Extractパラメータ・ファイルでSEQUENCEパラメータを使用します。これには、Oracle GoldenGate DDLサポート環境は不要です。

マルチテナント・コンテナ・データベースの構成

Oracle GoldenGateでOracle AI Databaseを使用すると、ソースおよびターゲットのプラガブル・データベース(PDB)を実装することができます。Extractは、PDBごとのExtractと呼ばれる特定のPDBに登録されます。

ノート:ダウンストリームExtract構成の場合を除き、c##ggadminユーザーによるルート・レベル・アクセスはお薦めしません。ルート・レベルのExtractではなく、PDBレベルごとにExtractを使用します。

次の図は、マルチテナント・コンテナ・データベース構成における様々なアプローチの構成を示しています:

pdb_extract_feedbk.pngの説明が続きます

PDBから直接Extractを追加すると、分離されたPDBから取得され、PDBレベルで所有権および責任が管理されます。

PDBごとのExtractを使用して、ローカルPDBユーザー(ggadminなど)として接続し、このExtractをデータベースに登録できます。PDBユーザーとしてすでにログインしているため、追加のcontainer句は必要ありません。同様に、SOURCECATALOGまたは3つの部分からなる命名規則も必要ありません。

Extractを設定するには、「Extractの追加」を参照してください。

マルチテナント・コンテナ・データベース構成に関する考慮事項

Oracle GoldenGateを使用してデータ・レプリケーション用にマルチテナント・コンテナ・データベースを構成する場合は、次のガイドラインを考慮してください:

Oracle GoldenGate資格証明にマルチテナント・コンテナ・データベース・ユーザーを追加するには、「データベース接続の追加」を参照してください。構成が必要なOracle AI Databaseのインストールに応じて、「Oracle Database 21c以前のユーザー権限の付与」または「Oracle AI Database 26ai以降でのユーザー権限の許可」を参照してください。

マルチテナント・コンテナ・データベースのフラッシュ順序

sequence.sqlスクリプトがデータベースのGoldenGate管理スキーマにデータベース・プロシージャを適用する場合、Oracle GoldenGate内でのみFLUSH SEQUENCEコマンドを使用できます。

FLUSH SEQUENCEコマンドは、初期同期化中または再同期化中の最初にExtractを起動した直後に使用します。このコマンドでは、Extractがトランザクション・データの取得を開始したときに初期REDOレコードが使用できるように、Oracle順序を更新します。通常、現在のキャッシュがすべて使用されるまでREDOは生成されません。フラッシュにより、ターゲット・システムの正しい順序値に同期するための初期開始ポイントがReplicatに提供されます。それ以降、Extractは、順序値の通常のキャッシュ予約に関連付けられたREDOを使用できます。 1 次のOracleプロシージャは、FLUSH SEQUENCEによって使用されます。

 | Database | Procedure | User and Privileges |
 | --- | --- | --- |
 | Source | `updateSequence` | Grants `EXECUTE` to the owner of the Oracle GoldenGate DDL objects, or other selected user if not using DDL support. |
 | Target | `replicateSequence` | Grants `EXECUTE` to the Oracle GoldenGate Replicat user. |

 {: summary="This table lists the Oracle procedures used by FLUSH SEQUENCE. It gives the database, procedure, and user and privileges." }

The `sequence.sql` script installs these procedures. Normally, this script is run as part of the Oracle GoldenGate installation process, but make certain that was done before using `FLUSH SEQUENCE`. If `sequence.sql` was not run, the flush fails and an error message similar to the following is generated:

<pre class="copy"><code>Cannot flush sequence {0}. Refer to the Oracle GoldenGate for Oracle documentation for instructions on how to set up and run the sequence.sql script. Error {1}.</code></pre>
  1. FLUSH SEQUENCEを使用する前に、DBLOGINコマンドを使用してデータベースに接続します。

順序レプリケーションが必要な各PDBでOracle GoldenGateユーザーを作成するには、PDBレベルでFLUSH SEQUENCEを発行する必要があります。DBLOGINを使用してそのPDBにログインし、FLUSH SEQUENCEコマンドを実行します。

各PDBで同じスキーマを使用して、スキーマがGGSCHEMA GLOBALSパラメータ・ファイルで動作するようにすることをお薦めします。

次の例では、環境設定はOracle 21cからOracle 21cへのレプリケーション用で、統合Extract、およびOracle GoldenGate 21c (21.3.0)を使用するパラレルReplicatを使用します。

次の表に、ソースとターゲットのCDBとPDBの名前、およびデータベースに接続するための対応するユーザー資格証明を示します。

ソースCDB ターゲットCDB
NORTH SOUTH
PDB名: DBEAST PDB名: DBWEST

共通ユーザー: c##ggadmin

順序のPDBユーザー: ggate

PDBユーザー: ggadmin
sqlplus system/manager
ALTER SESSION SESSION SET CONTAINER=CERTMISSN;
CREATE USER ggate IDENTIFIED BY *password* DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS CONTAINER=CURRENT;

@sequence.sqlを実行します

sqlplus system/manager
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql

プロンプトが表示されたら、次を入力します:

GGADMIN

FLUSH SEQUENCEコマンドを実行します:

DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*

ターゲットのOracle GoldenGate構成:

sqlplus system/manager
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql

プロンプトが表示されたら、PDBユーザー名ggadminを入力します。

これは、キャプチャ元の各PDBでも実行する必要がある@sequence.sqlスクリプトにも適用されます。