タスク1: Oracle GoldenGateのソースおよびターゲット・データベースの構成
ソースおよびターゲットのOracle GoldenGateデータベースは、次に示す推奨事項を使用して構成する必要があります。
このタスクを完了するには、次のステップを実行します。
-
ステップ1.1 - データベース構成
-
ステップ1.2 - データベース・レプリケーション管理者ユーザーの作成
-
ステップ1.3 - データベース・サービスの作成
ステップ1.1 - データベース構成
ソースおよびターゲットのOracle GoldenGateデータベースは、次に示す推奨事項を使用して構成する必要があります。
| 構成 | スコープ | 例 |
|---|---|---|
| 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 |
FORCE LOGGINGの有効化 |
ソースとターゲット | ALTER DATABASE FORCE LOGGING; |
ENABLE_GOLDENGATE_REPLICATION |
ソース、ターゲット、スタンバイ | ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH SID='*'; |
| サプリメンタル・ロギング | ソース レプリケーションの逆転の場合にターゲットで必要 |
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; |
| レプリケートされたオブジェクトのスキーマまたは表レベルのログを追加する | ソース レプリケーションの逆転の場合にターゲットで必要 |
ADD SCHEMATRANDATAまたはADD TRANDATA |
STREAMS_POOL_SIZE |
ソース レプリケーションの逆転の場合にターゲットで必要 |
たとえば、2つのExtractと2つの統合Replicatがあるデータベースの場合は、次のようになります。
ALTER SYSTEM SET STREAMS_POOL_SIZE=5G SCOPE=BOTH SID='*'; |
Oracle GoldenGate用にデータベースを準備するステップは、Oracle GoldenGate用のデータベースの準備を参照してください。
ステップ1.2 - データベース・レプリケーション管理者ユーザーの作成
ソースおよびターゲット・データベースには、次のように適切な権限が割り当てられたGoldenGate管理者ユーザーを作成する必要があります。
-
マルチテナント・コンテナ・データベース(CDB)の場合:
-
ソース・データベースであるGoldenGate Extractは、c##を使用してルート・コンテナ・データベース内のユーザーに接続するように構成する必要があります
-
ターゲット・データベースには、プラガブル・データベース(PDB)ごとに個別のGoldenGate管理者ユーザーが必要です。
-
Oracle MultitenantデータベースにGoldenGate管理者を作成する方法の詳細は、「マルチテナント・コンテナ・データベースでのOracle GoldenGateの構成」を参照してください。
-
-
非CDBデータベースについては、Oracleのデータベース・ユーザーおよび権限の準備を参照してください。
ソース・データベース・システムの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 - データベース・サービスの作成
ソース・データベースとターゲット・データベースが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.ggoraclevcn.com -preferred ORACLE_SID1
-available ORACLE_SID2 -role PRIMARY
プライマリおよびスタンバイ・データベース・システムのoracle OSユーザーとして、次のコマンドを使用してPDBデータベース・サービスを作成および開始します。
[oracle@exadb1_node1 ~]$ srvctl add service -db $ORACLE_UNQNAME
-service dbName.pdbName.ggoraclevcn.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.ggoraclevcn.com is running on instance(s) SID1
Service dbName.pdbName.ggoraclevcn.com is running on instance(s) SID1
ノート:ソースおよびターゲット・データベース・システムで手順1.3を繰り返します。