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

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

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

    データベース プロシージャ ユーザーおよび権限

    ソース

    updateSequence

    Oracle GoldenGate DDLオブジェクトの所有者、またはDDLサポートを使用しない場合は他の選択したユーザーに、EXECUTEを付与します。

    ターゲット

    replicateSequence

    Oracle GoldenGate ReplicatユーザーにEXECUTEを付与します。

    sequence.sqlスクリプトによって、これらのプロシージャはインストールされます。通常、このスクリプトはOracle GoldenGateのインストール・プロセスの一部として実行されますが、FLUSH SEQUENCEを使用する前に、これが実行されたことを確認してください。sequence.sqlが実行されていないと、フラッシュは失敗し、次に示すようなエラー・メッセージが生成されます。

    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}.
  2. GLOBALSファイルには、プロシージャをインストールするスキーマを指定するGGSCHEMAパラメータが含まれている必要があります。このユーザーは、CONNECTRESOURCEおよびDBA権限を持っている必要があります。

  3. FLUSH SEQUENCEを使用する前に、updateSequenceプロシージャでEXECUTE権限を持つデータベース・ユーザーとして、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 / as sysdba 
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 / as sysdba
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql
プロンプトが表示されたら、次を入力します:
GGADMIN GLOBALS
GGSCHEMA GGADMIN
FLUSH SEQUENCEコマンドを実行します:
DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*
 
ターゲットのOracle GoldenGate構成:
sqlplus / as sysdba
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql

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

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