5 マルチテナント・コンテナ・データベースでのOracle GoldenGateの構成
内容は次のとおりです。
- PDBからのCDBルート・キャプチャの使用
- マイニング・モードの切り替え
- マルチテナント・コンテナ・データベースのその他の要件
この項では、マルチテナント・コンテナ・データベースとの間のレプリケーションに適用される特別な要件について説明します。
5.1 PDBからのCDBルート・キャプチャの使用
マルチテナント・データベースからキャプチャするには、c##アカウントを使用してルート・レベルで構成されたExtractを使用する必要があります。ReplicatはPDBレベルで接続し、そのPDB以外のオブジェクトにアクセスできないため、マルチテナント・データベースにデータを適用するにはPDBごとに個別のReplicatが必要です。
1つのExtractグループで、複数のプラガブル・データベースから単一の証跡にキャプチャできます。パラメータ・ファイルで、container.schema.objectの形式の3つの部分からなる完全修飾名で、ソース・オブジェクトをTABLEおよびSEQUENCE文に指定する必要があります。
3つの部分からなる名前を指定する代替方法として、SOURCECATALOGパラメータでデフォルトのプラガブル・データベースを指定し、後続のTABLEまたはSEQUENCEパラメータに、schema.objectのみを指定できます。この構成の複数のインスタンスを使用して、複数のソース・プラガブル・データベースを処理できます。次に例を示します。
SOURCECATALOG pdb1 TABLE phoenix.tab; SEQUENCE phoenix.seq; SOURCECATALOG pdb2 TABLE dallas.tab; SEQUENCE dallas.seq;
5.1.1 プラガブル・データベースへの適用
Replicatは、1つのプラガブル・データベースのみに接続して適用できます。正しいものを指定するには、USERIDまたはUSERIDALIASパラメータで指定するデータベース・ユーザーにSQL*Net接続文字列を使用します。例: GGADMIN@FINANCE。パラメータ・ファイルで、MAP文のTARGETの部分に、schema.objectのみを指定します。MAPの部分で、3つの部分からなる名前の複数のプラガブル・データベースからキャプチャされるソース・オブジェクトを識別するか、2つの部分からなる名前のSOURCECATALOGパラメータを使用します。次に、この構成の例を示します。
SOURCECATALOG pdb1 MAP schema_1.tab, TARGET 1; MAP schema_1.seq, TARGET 1; SOURCECATALOG pdb2 MAP schema_2.tab, TARGET 2; MAP schema_2.seq, TARGET 2;
次に、SOURCECATALOGを使用せずにソース・プラガブル・データベースを識別する例を示します。この場合、ソース・オブジェクトは3つの部分からなる名前で指定されます。
MAP pdb1.schema_1.tab, TARGET 1; MAP pdb1.schema_1.seq, TARGET 1;
複数のソース・プラガブル・データベースから複数のターゲット・プラガブル・データベースへのレプリケーションを構成するには、パラレルExtractおよびReplicatストリームを構成し、それぞれ1つのプラガブル・データベースのデータを処理できます。または、複数のソース・プラガブル・データベースから1つのExtractキャプチャを構成できます(複数のReplicatグループによって読み取られる1つの証跡を書き込み、それぞれ異なるターゲット・プラガブル・データベースに適用します)。さらに別の方法として、複数の証跡への1つのExtract書込みを使用する方法があり、各証跡は、特定のターゲット・プラガブル・データベースに割り当てられたReplicatによって読み取られます。
親トピック: PDBからのCDBルート・キャプチャの使用
5.1.2 構成からのオブジェクトの除外
プラガブル・データベース、スキーマおよびオブジェクトを構成から除外するには、CATALOGEXCLUDE、SCHEMAEXCLUDE、TABLEEXCLUDE、MAPEXCLUDEおよびEXCLUDEWILDCARDOBJECTSONLYパラメータを使用できます。
親トピック: PDBからのCDBルート・キャプチャの使用
5.2 マイニング・モードの切り替え
マイニング・モードの切り替えは、サポートされていません。そのため、ROOTでマイニングを作成すると、セッションはROOTでマイニングする状態を維持し、されたままになり、PDBでマイニングでマイニングを作成すると、セッションはその特定のPDBでマイニングする状態を維持します。
CDB$ROOTの以前のOracle GoldenGateセッション・マイニングを特定のPDBのマイニングに移行する必要がある場合は、次の移行プロセスを実行できます。
-
新しいPDB単位のExtractを登録します。たとえば、戻されるSCNが
Xだとします。 -
古い
ROOTExtractは、過去のXをマイニングするままにしておきます(RECOVERYSCN X)。 -
古いExtractを停止します
-
現在のSCNが
Yに設定されるように、新しいExtractを変更します。 -
新しいExtractを開始します。
この新しいExtractは、古いExtractが中断したところから採取します。
ノート:
同じSCNYで複数のtxsのコミットが発生していた場合は、SCN Yで重複するトランザクションが存在することがあります。ただし、Replicatは重複するtxsをデフォルトで処理できます。
5.3 マルチテナント・コンテナ・データベースのその他の要件
この項では、マルチテナント・コンテナ・データベースとの間のレプリケーションに適用される特別な要件について説明します。
要件は次のとおりです。
-
マルチテナント・コンテナ・データベース内の異なるプラガブル・データベースが異なる文字セットを持つことができます。Oracle GoldenGateは、異なる文字セットを持つマルチテナント・データベースから、1つの証跡ファイルにデータをキャプチャして、データをレプリケートしますが、異なる文字セットの使用によってデータは破損しません。
-
ログマイニング・サーバーと対話するには、Extractが共通ユーザーとしてルート・コンテナ(
cdb$root)に接続する必要があります。ルート・コンテナを指定するには、USERIDまたはUSERIDALIASパラメータで指定するデータベース・ユーザーに適切なSQL*Net接続文字列を使用します。例:C##GGADMIN@FINANCE。Oracle GoldenGateプロセスのユーザーの作成および適切な権限を付与する方法は、「Oracle GoldenGate資格証明の確立」を参照してください。 -
ソースCDB 12.2をサポートするためには、Extractで証跡形式としてリリース12.3を指定する必要があります。REDOログ内の変更により、Oracle 12.2以上のマルチテナント・データベースからキャプチャするには、証跡フォーマット・リリースが12.3以上である必要があります。
-
dbms_goldengate_auth.grant_admin_privilegeパッケージは、マルチテナント・コンテナ・データベース内のキャプチャおよび適用の適切な権限を付与します。これにはcontainerパラメータが含まれ、次の例のようにALLに設定する必要があります。exec dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'all') -
DDLレプリケーションはマルチテナント・データベースの通常のレプリケーションとして機能します。ただし、Replicatはルート・コンテナに接続してはならず、PDBのみに接続する必要があるため、ルート・コンテナのDDLはレプリケートしないでください。
マルチテナント・データベースのFLUSH SEQUENCE
FLUSH SEQUENCEはPDBレベルで発行される必要があるため、ユーザーは、順序レプリケーションを実行する各PDBでOracle GoldenGateユーザーを作成し、DBLOGINを使用してそのPDBにログインし、FLUSH SEQUENCEコマンドを実行する必要があります。
各PDBで同じスキーマを使用して、スキーマがGGSCHEMA GLOBALSパラメータ・ファイルで動作するようにすることをお薦めします。次に例を示します。
Environment Information OGG 18.1 Oracle 12c to Oracle 12c Replication, Integrated Extract, Parallel Replicat
Source: CDB GOLD, PDB CERTMISSN
Target: CDB PLAT, PDB CERTDSQ
Source OGG Configuration
Container User: C##GGADMIN
PDB User for Sequences: GGATE
sqlplus / as sysdbao
SQL> alter session set container=CERTMISSN;
SQL> 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=CERTMISSN;
SQL> @sequence
GGATE GLOBALS
GGSCHEMA GGATE
FLUSH SEQUENCE:GGSCI> DBLOGIN USERIDALIAS GGADMIN DOMAIN GOLD_QC_CDB$ROOT
GGSCI> FLUSH SEQUENCE CERTMISSN.SRCSCHEMA1.*
PDB User: GGATE
Run @sequence
sqlplus / as sysdba
SQL> alter session set container=CERTDSQ;
SQL> @sequenceプロンプトが表示されたら、GGATEを入力します
これは、キャプチャ元の各PDBでも実行する必要がある@sequence.sqlスクリプトにも適用されます。
