タスク1: Oracle GoldenGateのソースおよびターゲット・データベースの構成
ソースおよびターゲットのOracle GoldenGateデータベースは、次に示す推奨事項に従って構成する必要があります。
ステップ1.1 - データベースの構成
Oracle Autonomous Database (ADB-D)の場合、パラレル統合Replicatおよび競合解決をサポートするにはOracle Database 19c (19.20)以上のリリースが必要です。Oracle Exadata Database Service (ExaDB)またはBaseDBの場合は、Oracleクラウドで使用可能な、サポートされているOracle Databaseリリースを使用できます。
次のデータベース構成手順は、Platinum MAAソリューションをサポートする各Database Cloud Serviceに当てはまります。
ソースおよびターゲットのOracle GoldenGateデータベースは、次に示す推奨事項を使用して構成する必要があります。
Oracle Autonomous Database (ADB-D)の場合、必要なのは、次のようにサプリメンタル・ロギングを追加することのみです。
PDB: ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA;
Oracle Exadata Database Service (ExaDB)またはBaseDBの場合は、次の手順に従います。
-
ARCHIVELOGモードを有効にします。
SQL> ARCHIVE LOG LIST Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 110 Next log sequence to archive 113 Current log sequence 113
-
強制ロギングを有効にします。
ALTER DATABASE FORCE LOGGING;
-
GoldenGateレプリケーションを有効にします。
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH SID='*'
-
サプリメンタル・ロギングを追加します。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
-
GoldenGateが収まるように
STREAMS_POOL_SIZE
を大きく構成します。次の式を使用して、適切な
STREAMS_POOL_SIZE
値を計算します。STREAMS_POOL_SIZE = (((#Extracts + #Integrated Replicats) * 1GB) * 1.25)
たとえば、2つのExtractと2つの統合Replicatがあるデータベースの場合は、次のようになります。
STREAMS_POOL_SIZE = 4GB * 1.25 = 5GB
パラメータは次のように設定されます。
ALTER SYSTEM SET STREAMS_POOL_SIZE=5G SCOPE=BOTH SID='*';
Oracle GoldenGate用にデータベースを準備する手順は、Oracle GoldenGate用のデータベースの準備を参照してください。
ステップ1.2 - データベース・レプリケーション管理者ユーザーの作成
ADB-Dの場合
ADB-Dデプロイメントの場合、必要なのは、次の内容を発行することのみです。
ALTER USER ggadmin IDENTIFIED BY <password> ACCOUNT UNLOCK;
Oracle Exadata Database Service (ExaDB)またはBaseDBの場合
次の手順は、Oracle Exadata Database Service (ExaDB)またはBaseDBのみに当てはまります。
ソースおよびターゲット・データベースには、次のように適切な権限が割り当てられたGoldenGate管理者ユーザーを作成する必要があります。
- マルチテナント・コンテナ・データベース(CDB)の場合:
- ソース・データベースであるGoldenGate Extractは、c##を使用してルート・コンテナ・データベース内のユーザーに接続するように構成する必要があります
- ターゲット・データベースには、プラガブル・データベース(PDB)ごとに個別のGoldenGate管理者ユーザーが必要です。
- Oracleマルチテナント・データベースでのGoldenGate管理者の作成の詳細は、マルチテナント・コンテナ・データベースでのOracle GoldenGateの構成を参照してください。
- 非CDBデータベースについては、Oracle GoldenGate資格証明の確立を参照してください
-
ソース・データベース・システムの
oracle
OSユーザーとして、次のSQL命令を実行してOracle GoldenGateのデータベース・ユーザーを作成し、必要な権限を割り当てます。[opc@exadb1_node1 ~]$ sudo su - oracle [oracle@exadb1_node1 ~]$ source dbName.env [oracle@exadb1_node1 ~]$ sqlplus / as sysdba # Source CDB SQL> alter session set container=cdb$root; create user c##ggadmin identified by "ggadmin_password" container=all default tablespace USERS temporary tablespace temp; alter user c##ggadmin quota unlimited on users; grant set container to c##ggadmin container=all; grant alter system to c##ggadmin container=all; grant create session to c##ggadmin container=all; grant alter any table to c##ggadmin container=all; grant resource to c##ggadmin container=all; exec dbms_goldengate_auth.grant_admin_privilege('c##ggadmin',container=>'all'); # Source PDB SQL> alter session set container=pdbName; create user ggadmin identified by "ggadmin_password" container=current; grant create session to ggadmin container=current; grant alter any table to ggadmin container=current; grant resource to ggadmin container=current; exec dbms_goldengate_auth.grant_admin_privilege('ggadmin');
-
ターゲット・システムの
oracle
OSユーザーとして、次のSQL命令を実行してOracle GoldenGateのデータベース・ユーザーを作成し、必要な権限を割り当てます。[opc@exadb2_node1 ~]$ sudo su - oracle [oracle@exadb2_node1 ~]$ source dbName.env [oracle@exadb2_node1 ~]$ sqlplus / as sysdba # Target PDB SQL> alter session set container=pdbName; create user ggadmin identified by "ggadmin_password" container=current; grant alter system to ggadmin container=current; grant create session to ggadmin container=current; grant alter any table to ggadmin container=current; grant resource to ggadmin container=current; grant dv_goldengate_admin, dv_goldengate_redo_access to ggadmin container=current; exec dbms_goldengate_auth.grant_admin_privilege('ggadmin');
ステップ1.3 - データベース・サービスの作成
ノート:
このステップは、ADB-Dデプロイメントには必要ありません。ソース・データベースとターゲット・データベースがOracle Data Guardを使用するOracle RACクラスタで推奨構成を実行している場合は、ExtractまたはReplicatプロセスが適切なData Guardプライマリ・データベース・インスタンスに接続できるロールベースのサービスを作成する必要があります。
ソース・マルチテナント・データベースを使用する場合は、ルート・コンテナ・データベース(CDB)とレプリケートされるスキーマを含むプラガブル・データベース(PDB)に、個別のサービスが必要です。ターゲット・マルチテナント・データベースの場合は、PDBに単一のサービスが必要です。
-
プライマリ・データベース・システムの
oracle
OSユーザーとして、次に示すように、dbaascliを使用してCDBおよびPDB名を検索します。[opc@exadb1_node1 ~]$ sudo su - oracle [oracle@exadb1_node1 ~]$ source dbName.env [oracle@exadb1_node1 ~]$ dbaascli database getDetails --dbname dbName |egrep 'dbName|pdbName' "dbName" : "dbName", "pdbName" : "pdbName",
-
プライマリおよびスタンバイ・データベース・システムの
oracle
OSユーザーとして、次のコマンドを使用してCDBデータベース・サービスを作成および開始します。[opc@exadb1_node1 ~]$ sudo su - oracle [oracle@exadb1_node1 ~]$ source dbName.env [oracle@exadb1_node1 ~]$ srvctl add service -db $ORACLE_UNQNAME -service dbName.goldengate.com -preferred ORACLE_SID1 -available ORACLE_SID2 -role PRIMARY
-
プライマリおよびスタンバイ・データベース・システムの
oracle
OSユーザーとして、次のコマンドを使用してPDBデータベース・サービスを作成および開始します。[oracle@exadb1_node1 ~]$ srvctl add service -db $ORACLE_UNQNAME -service dbName.pdbName.goldengate.com -preferred ORACLE_SID1 -available ORACLE_SID2 -pdb pdbName -role PRIMARY
-
プライマリおよびスタンバイ・データベース・システムの
oracle
OSユーザーとして、次に示すように、開始してサービスを実行していることを確認します。[oracle@exadb1_node1 ~]$ srvctl start service -db $ORACLE_UNQNAME -role [oracle@exadb1_node1 ~]$ srvctl status service -d $ORACLE_UNQNAME |grep goldengate Service dbName.goldengate.com is running on instance(s) SID1 Service dbName.pdbName.goldengate.com is running on instance(s) SID1
ノート:
ソースおよびターゲット・データベース・システムでステップ1.3をすべて繰り返します。