タスク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の場合は、次の手順に従います。

  1. 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
  2. 強制ロギングを有効にします。

    ALTER DATABASE FORCE LOGGING;
  3. GoldenGateレプリケーションを有効にします。

    ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH SID='*'
  4. サプリメンタル・ロギングを追加します。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
  5. 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資格証明の確立を参照してください
  1. ソース・データベース・システムの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');
  2. ターゲット・システムの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に単一のサービスが必要です。

  1. プライマリ・データベース・システムの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",
  2. プライマリおよびスタンバイ・データベース・システムの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
  3. プライマリおよびスタンバイ・データベース・システムの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
  4. プライマリおよびスタンバイ・データベース・システムの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をすべて繰り返します。