3 マルチテナント・コンテナ・データベースでのOracle GoldenGateの構成
内容は次のとおりです。
Oracle GoldenGateのコンテナ・データベースの構成要件
マルチテナント・コンテナ・データベースとの間のレプリケーションを有効にするための構成要件を次に示します。
-
マルチテナント・コンテナ・データベース内の異なるプラガブル・データベースが異なる文字セットを持つことができます。Oracle GoldenGateは、異なる文字セットを持つマルチテナント・データベースから、1つの証跡ファイルにデータをキャプチャして、データをレプリケートしますが、異なる文字セットの使用によってデータは破損しません。
-
Oracle Database 21cを使用するOracle GoldenGateオンプレミス21c以降では、PDB単位のExtract機能がサポートされています。特定のプラガブル・データベースのローカル
ggadmin
ユーザーに接続するPDB単位のExtractを作成して、Extractを作成および登録できます。PDB単位のExtractを設定するためにcontainer句またはSOURCECATALOG
は必要ありません。PDB単位のExtractとしてExtractを設定すると、非CDBと同じ手順に厳密に一致します。必要に応じて、ルート・コンテナの共通
c##ggadmin
ユーザーに接続するルート・レベルのExtractを設定して、コンテナを使用して特定のプラガブル・データベースのExtractを作成および登録することもできます。構成する必要があるOracleデータベース・インストールに応じて、「Oracle Database 21c以前のユーザー権限の付与」を参照してください。Oracle GoldenGateプロセスのユーザーの作成および適切な権限を付与する方法は、「Oracle GoldenGate資格証明の確立」を参照してください。
-
ソースCDB 12.2をサポートするためには、Extractで証跡形式としてリリース12.3を指定する必要があります。REDOログ内の変更により、Oracle 12.2以上のマルチテナント・データベースからキャプチャするには、証跡フォーマット・リリースが12.3以上である必要があります。
-
dbms_goldengate_auth.grant_admin_privilege
パッケージは、マルチテナント・コンテナ・データベース内のキャプチャおよび適用の適切な権限を付与します。これにはcontainer
パラメータが含まれ、次の例のようにALL
に設定する必要があります。EXCE DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('c##ggadmin',container=>'all')
-
DDLレプリケーションはマルチテナント・データベースの通常のレプリケーションとして機能します。ただし、Replicatはルート・コンテナに接続してはならず、PDBのみに接続する必要があるため、ルート・コンテナのDDLはレプリケートしないでください。
必要な権限のリストおよびOracle GoldenGateのコンテナおよびプラガブル・データベースの構成方法については、Oracle GoldenGate Microservices Architectureを使用したデータ・レプリケーションのクイックスタートも参照してください。
マルチテナント・コンテナ・データベースのフラッシュ順序
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パラメータ・ファイルで動作するようにすることをお薦めします。次に例を示します。
Environment Information OGG 21.3 Oracle 21c to Oracle 21c Replication, Integrated Extract, Parallel Replicat
Source: CDB NORTH, PDB DBEAST
Target: CDB SOUTH, PDB DBWEST
Source OGG Configuration
Container User: C##GGADMIN
PDB User for Sequences: GGATE
sqlplus / as sysdbao
ALTER SESSION SESSION SET CONTAINER=CERTMISSN;
CREATE USER ggadmin CREATE USER ggate IDENTIFIED BY password DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS CONTAINER=CURRENT;
Run @sequence
sqlplus / as sysdba
SQL> ALTER SESSION SET CONTAINER=PDBEAST;
SQL> @sequence
GGADMIN GLOBALS
GGSCHEMA GGADMIN
FLUSH SEQUENCE
:DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE PDBEAST.HR.*
PDB User: ggadmin
Run @sequence
sqlplus / as sysdba
SQL> ALTER SESSION SET CONTAINER =PDBWEST;
SQL> @sequence
プロンプトが表示されたら、ggadmin
を入力します。
これは、キャプチャ元の各PDBでも実行する必要がある@sequence.sqlスクリプト
にも適用されます。
PDBからのルート・コンテナExtractの使用
Oracle GoldenGate 21c以降のリリースでは、マルチテナント・コンテナOracleデータベースのPDBからのキャプチャが可能です。マルチテナント・データベースからキャプチャするには、c##
アカウントを使用してルート・レベルで構成されたExtractを使用する必要があります。ReplicatはPDBレベルで接続し、そのPDB以外のオブジェクトにアクセスできないため、マルチテナント・データベースにデータを適用するにはPDBごとに個別のReplicatが必要です。
1つのExtractグループで、複数のプラガブル・データベースから単一の証跡にキャプチャできます。パラメータ・ファイルで、container.schema.object
の形式の3つの部分からなる完全修飾名で、ソース・オブジェクトをTABLE
およびSEQUENCE
文に指定する必要があります。
3つの部分からなる名前を指定する代替方法として、SOURCECATALOG
パラメータでデフォルトのプラガブル・データベースを指定し、後続のTABLE
またはSEQUENCE
パラメータに、schema.object
のみを指定できます。この構成の複数のインスタンスを使用して、複数のソース・プラガブル・データベースを処理できます。たとえば:
SOURCECATALOG DBEAST
TABLE hr.employees;
SEQUENCE hr.seq;
SOURCECATALOG DBWEST
TABLE hr.employees;
SEQUENCE hr.seq;
Oracleマルチテナント・データベース上のOracle GoldenGateの双方向設定で実行するステップは、「双方向レプリケーションのクイックスタート」も参照してください。
内容は次のとおりです。
- Extractについて
Oracle GoldenGate Extractプロセスは、データベース・ログマイニング・サーバーと直接対話し、論理変更レコード(LCR)形式でデータの変更を受け取ります。 - プライマリExtractの構成
プライマリExtractがログマイニング・サーバーからログ変更レコードをキャプチャするマイニング・データベースは、ローカルであるか、ソース・データベースからのダウンストリームであるかのどちらかです。 - 自動取得モードの設定
- マイニング・モードの切り替え
Extractについて
Oracle GoldenGate Extractプロセスはデータベース・ログマイニング・サーバーと直接対話し、論理変更レコード(LCR)形式でデータの変更を受け取ります。
次に、Extractの構成について説明する図を示します。

図downstream_ext.pngの説明
次に、Oracle GoldenGate Extractの追加機能の一部を示します。
-
Extractはデータベースと完全に統合されているため、Oracle RAC、ASM、TDEなどの機能間でシームレスな相互運用が可能です。
-
Extractは、データベース・ログマイニング・サーバーを使用してOracle REDOストリームにアクセスします。アーカイブ・ログの異なるコピー間またはオンライン・ログの異なるミラー・バージョン間での切替えは自動的に行われます。そのため、キャプチャでは、ディスクの破損、ハードウェア障害またはオペレータの誤操作によってログ・ファイルが消失してしまった場合でも、その他のアーカイブ・ログやオンライン・ログが使用できれば、その状態を透過的に処理できます。
-
Extractを使用すると、表をより高速にフィルタリングできます。
-
Extractにより、Point-in-TimeリカバリとRAC統合がより効率的に処理されます。
-
Extractには、統合ログ管理の機能があります。Oracle Recovery Manager (RMAN)で、Extractで必要なアーカイブ・ログが自動的に保持されます。
-
Extractは、マルチテナント・コンテナ・データベースからのキャプチャとPDB単位のキャプチャ・モードからのキャプチャをサポートしています。
-
ExtractとReplicat (統合)はとちらもデータベース・オブジェクトであるため、オブジェクトのネーミングは他のOracleデータベース・オブジェクトと同じルールに従います。Oracle GoldenGate MicroservicesドキュメントのOracle GoldenGateの入力におけるオブジェクト名の指定を参照してください。
-
Extractがリモート・システムから実行されている場合、Oracle GoldenGateでは、クロス・エンディアンの相互運用性が自動的に有効になります。これは、Extractが実行されているサーバーのエンディアン値とOracleデータベースが実行されているサーバーのエンディアン値が異なる場合に、クロス・エンディアンのサポートが自動的に有効になることを意味します。クロス・エンディアンのExtractが機能するには、ソース・データベースの互換性パラメータが11.2.0.4以上になっている必要があります。
Extractのデプロイメント・オプション
この項では、Extractのデプロイメント・オプションについて説明しますが、それらはマイニング・データベースのデプロイ場所によって異なります。マイニング・データベースは、ログマイニング・サーバーがデプロイされているデータベースです。
-
ローカル・デプロイ: ローカル・デプロイの場合、ソース・データベースとマイニング・データベースは同じです。ソース・データベースは、REDOストリームをマイニングして変更をキャプチャする対象のデータベースで、ログマイニング・サーバーのデプロイ先でもあります。統合キャプチャはデータベースと完全に統合されているため、このモードでは、特別なデータベース設定は不要です。
-
ダウンストリーム・デプロイ: ダウンストリーム・デプロイでは、ソース・データベースとマイニング・データベースは、異なるデータベースです。ログマイニング・サーバーは、ダウンストリーム・データベースに作成します。REDOログをダウンストリーム・マイニング・データベースに転送してそこでキャプチャを行うようにソース・データベースのREDO転送を構成します。キャプチャのオーバーヘッドや変換によるその他のオーバーヘッドおよび本番サーバーの他の処理を軽減するには、キャプチャにダウンストリーム・マイニング・サーバーを使用することをお薦めしますが、これにはログの転送や他の構成が必要です。
ダウンストリーム・マイニング構成を使用する場合、ソース・データベースとマイニング・データベースは同じプラットフォームのものである必要があります。たとえば、ソース・データベースがWindows 64ビットで稼働している場合、ダウンストリーム・データベースのプラットフォームもWindows 64ビットである必要があります。ダウンストリーム・マイニング・データベースを構成するには、「ダウンストリーム・マイニング・データベースの構成」を参照してください。
-
ダウンストリーム・ソースレスExtractデプロイ: Extractパラメータ・ファイルで
USERID
パラメータをNOUSERID
で置換します。TRANLOGOPTIONS MININGUSER
を使用する必要があります。Extractは必要な情報をすべてダウンストリーム・マイニング・データベースから取得します。ソース・データベースへの接続には依存しません。Extractに影響を与えることなくソース・データベースを停止および再起動できます。ソース・データベースからデータをフェッチする必要があるREDO変更が発生すると、Extractは異常終了します。
dba_goldengate_support_mode
ビューにID KEY
としてリストされているすべての表をキャプチャするには、その表をサポートするFETCHUSERID
接続またはFETCHUSERIDALIAS
接続が必要です。FULL
としてリストされている表は、これを必要としません。また、問合せを実行するかストアド・プロシージャを実行するSQLEXEC
操作を顧客が実行する場合、SQLEXEC
はUSERID
またはUSERIDALIAS
で動作するため、この方法はNOUSERID
と互換性がないので使用できないことに注意してください。
親トピック: Extractについて
プライマリExtractの構成
プライマリExtractがログマイニング・サーバーからログ変更のレコードをキャプチャするマイニング・データベースは、ローカルまたはソース・データベースからダウンストリームのいずれかが可能です。
次のステップでは、どちらかの場所からトランザクション・データをキャプチャするようにプライマリExtractを構成します。「ダウンストリーム・マイニング・データベースの構成」および次の例を参照してください。
ノート:
マルチテナント・コンテナ・データベース内の単一データベースまたは複数のプラガブル・データベースからキャプチャするには、一般的に1つのExtractグループで十分です。「マルチテナント・コンテナ・データベースでのOracle GoldenGateの構成」を参照してください。Oracle Autonomous Databaseまたはクラウド環境で作業する場合は、PDB単位のキャプチャ・モードを選択することもできます。「Autonomous DatabaseからキャプチャするExtractの構成」を参照してください。
- ローカル証跡の追加
次のステップでは、キャプチャしたデータをプライマリExtractが書き込むローカル証跡を追加します。 - リモート証跡の追加
この証跡は、Replicatによって読み取られますが、Extractに関連付ける必要があるため、ターゲットではなく、ソース・システムで追加される必要があります。
親トピック: PDBからのルート・コンテナExtractの使用
ローカル証跡の追加
次のステップでは、プライマリExtractによってキャプチャされたデータが書き込まれるローカル証跡を追加します。
ソース・システムで、コマンドラインでADD EXTTRAIL
コマンドを発行します:
ADD EXTTRAIL pathname, EXTRACT group name
説明:
-
EXTTRAIL
では、証跡がローカル・システムに作成されるよう指定します。 -
pathname
は、2文字の名前を含めた、証跡の相対名または完全修飾名です。 -
EXTRACT
group name
は、プライマリExtractグループの名前です。
ノート:
Oracle GoldenGateでは、この証跡が処理中に自動的に作成されます。
例3-1
ADD EXTTRAIL /north/ea, EXTRACT exte
親トピック: プライマリExtractの構成
リモート証跡の追加
この証跡は、Replicatによって読み取られますが、Extractに関連付ける必要があるため、ターゲットではなく、ソース・システムで追加される必要があります。
次のステップでは、リモート証跡を追加します。
ソース・システムで、次のコマンドを発行します。
ADD RMTTRAIL pathname, EXTRACT group name
説明:
-
RMTTRAIL
では、証跡がターゲット・システムに作成されるよう指定します。 -
pathnameは、2文字の名前を含めた、証跡の相対名または完全修飾名です。
-
EXTRACT
group name
は、データ・ポンプExtractグループの名前です。
ノート:
Oracle GoldenGateでは、この証跡が処理中に自動的に作成されます。
例3-2
ADD RMTTRAIL /south/re, EXTRACT exts
親トピック: プライマリExtractの構成
自動取得モードの設定
自動Extractモードでは、論理レプリケーションが有効になっているすべての表に対する変更がキャプチャされます。
-
テーブルまたはスキーマ・レベルで十分なIDまたはスケジューリング・キーのサプリメンタル・ログ・データがあること。
-
主キー(PK)、一意識別子(UI)、外部キー(FK)サプリメンタル・ログ・データおよびALLKEYSサプリメンタル・ログ・データがあること。主キーがない場合、スキーマ全体のサプリメンタル・ロギング・レベルですべての一意キーがログに記録されるため、PK、UIおよびFKに加えてALLKEYSが必要です。
自動Extractモードを使用する利点
-
キャプチャされる表セットの構成が容易
-
キャプチャされる表セットの変更時に、
TABLE
/TABLEEXCLUDE
パラメータを更新することや、Extractを停止して再起動することが不要になります。
自動取得の有効化
構文と使用方法は、TRANLOGOPTIONS
を参照してください。
次のDDLを使用して、表レベルで自動キャプチャを有効にします。
CREATE
/ALTER TABLE
table_name ENABLE LOGICAL REPLICATION ALLKEYS
または
CREATE/ALTER TABLE table_name ENABLE LOGICAL REPLICATION ALLOWNONVALIDATEDKEYS
親トピック: PDBからのルート・コンテナExtractの使用
マイニング・モードの切り替え
マイニング・モードの切り替えは、サポートされていません。そのため、ROOT
でマイニングを作成すると、セッションはROOT
でマイニングする状態を維持し、されたままになり、PDBでマイニングでマイニングを作成すると、セッションはその特定のPDBでマイニングする状態を維持します。
CDB$ROOT
の以前のOracle GoldenGateセッション・マイニングを特定のPDBのマイニングに移行する必要がある場合は、次の移行プロセスを実行できます。
-
新しいPDB単位のExtractを登録します。たとえば、戻されるSCNが
X
だとします。 -
古い
ROOT
Extractは、過去のX
をマイニングするままにしておきます(RECOVERYSCN X
)。 -
古いExtractを停止します
-
現在のSCNが
Y
に設定されるように、新しいExtractを変更します。 -
新しいExtractを開始します。
この新しいExtractは、古いExtractが中断したところから採取します。
ノート:
同じSCNY
で複数のtxs
のコミットが発生していた場合は、SCN Y
で重複するトランザクションが存在することがあります。ただし、Replicatは重複するtxs
をデフォルトで処理できます。
親トピック: PDBからのルート・コンテナExtractの使用
プラガブル・データベースへの適用
Replicatは、1つのプラガブル・データベースのみに接続して適用できます。正しいものを指定するには、USERID
またはUSERIDALIAS
パラメータで指定するデータベース・ユーザーにSQL*Net接続文字列を使用します。例: GGADMIN@DBEAST
。
パラメータ・ファイルで、MAP
文のTARGET
の部分に、schema.object
のみを指定します。MAP
の部分で、3つの部分からなる名前の複数のプラガブル・データベースからキャプチャされるソース・オブジェクトを識別するか、2つの部分からなる名前のSOURCECATALOG
パラメータを使用します。次に、この構成の例を示します。
SOURCECATALOG pdbeast
MAP hr.employees, TARGET hr.employees;
MAP hr.seq, TARGET hr.employees;
SOURCECATALOG pdbwest
MAP hr.*, TARGET hr.*;
MAP hr.seq, hr.*;
次に、SOURCECATALOG
を使用せずにソース・プラガブル・データベースを識別する例を示します。この場合、ソース・オブジェクトは3つの部分からなる名前で指定されます。
MAP pdbeast.hr.employees, TARGET hr.*;
MAP pdbeast.hr.seq, TARGET hr.*;
複数のソース・プラガブル・データベースから複数のターゲット・プラガブル・データベースへのレプリケーションを構成するには、パラレルExtractおよびReplicatストリームを構成し、それぞれ1つのプラガブル・データベースのデータを処理できます。または、複数のソース・プラガブル・データベースから1つのExtractキャプチャを構成できます(複数のReplicatグループによって読み取られる1つの証跡を書き込み、それぞれ異なるターゲット・プラガブル・データベースに適用します)。
さらに別の方法として、複数の証跡への1つのExtract書込みを使用する方法があり、各証跡は、特定のターゲット・プラガブル・データベースに割り当てられたReplicatによって読み取られます。
PDBレベルでのReplicatの構成およびReplicatグループの追加のステップは、Replicatの構成を参照してください。
- Replicatグループの追加
次のステップでは、リモート証跡を読み取りデータ変更をターゲットOracle Databaseに適用する、Replicatグループを追加します。
Replicatグループの追加
次のステップでは、リモート証跡を読み取り、データ変更をターゲットOracle Databaseに適用するReplicatグループを追加します。
例3-3 非統合Replicatの追加
ADD REPLICAT repe, EXTTRAIL east/ea
例3-4 統合Replicatの追加
ADD REPLICAT repn, INTEGRATED, EXTTRAIL north/em
親トピック: プラガブル・データベースへの適用