マルチテナント・コンテナ・データベースのフラッシュ順序
sequence.sql
スクリプトがデータベースのGoldenGate管理スキーマにデータベース・プロシージャを適用する場合、Oracle GoldenGate内でのみFLUSH SEQUENCE
コマンドを使用できます。
FLUSH SEQUENCE
コマンドは、初期同期化中または再同期化中に最初にExtractを起動した直後に使用します。このコマンドは、Extractがトランザクション・データの取得を開始した時点で初期REDOレコードが使用できるように、Oracle順序を更新します。通常は、現在のキャッシュが使い果されるまで、REDOは生成されません。フラッシュは、ターゲット・システムで正しい順序値に同期するために使用する初期の開始位置を、Replicatに提供します。それ以降は、Extractは、順序値の通常のキャッシュ予約に関連付けられたREDOを使用できます。
-
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}.
-
GLOBALS
ファイルには、プロシージャをインストールするスキーマを指定するGGSCHEMA
パラメータが含まれている必要があります。このユーザーは、CONNECT
、RESOURCE
およびDBA
権限を持っている必要があります。 -
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 | ターゲットCDB |
---|---|
|
SOUTH |
PDB名: |
PDB名: |
共通ユーザー: 順序のPDBユーザー: |
PDBユーザー: |
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.*
sqlplus / as sysdba
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql
プロンプトが表示されたら、PDBユーザー名ggadmin
を入力します。
これは、キャプチャ元の各PDBでも実行する必要がある@sequence.sql
スクリプトにも適用されます。