タスク2 - GoldenGateに向けたOracle Databaseの構成

ソースおよびターゲットのOracle GoldenGateデータベースは、次に示す推奨事項を使用して構成する必要があります。

このタスクを完了するには、次のステップを実行します。

  • ステップ2.1 - データベース構成
  • ステップ2.2 - データベース・レプリケーション管理者ユーザーの作成
  • ステップ2.3 - データベース・サービスの作成

ステップ2.1 - データベース構成

ソースおよびターゲットのOracle GoldenGateデータベースは、次に示す推奨事項を使用して構成する必要があります。

  1. データベース初期化パラメータを設定してOracle GoldenGateレプリケーションを有効にします。
  2. ソースOracle GoldenGateデータベースの場合:
    • データベースをARCHIVELOGモードで実行します
    • FORCE LOGGINGモードを有効にします
    • 最小サプリメンタル・ロギングを有効にしてください
    • さらに、すべてのレプリケートされたオブジェクトのスキーマまたは表レベルのログを追加します
  3. STREAMS_POOL_SIZE初期化パラメータを使用して、ソース・データベースのシステム・グローバル領域(SGA)でストリーム・プールを構成します。統合Replicatを使用する場合は、ターゲット・データベースでストリーム・プールのみが必要です。

Oracle GoldenGate用にデータベースを準備するステップは、『Oracle DatabaseでのOracle GoldenGateクラシック・アーキテクチャの使用』を参照してください。

  1. ソースおよびターゲット・システムのoracle OSユーザーとして、次のSQL命令を発行してデータベースを構成します。
    [opc@exadb-node1 ~]$ sudo su - oracle
    [oracle@exadb-node1 ~]$ source <db_name>.env
    [oracle@exadb-node1 ~]$ sqlplus / as sysdba
    SQL> alter system set ENABLE_GOLDENGATE_REPLICATION=true scope=both sid='*';
    SQL> alter system set STREAMS_POOL_SIZE=<SIZE_IN_GB> scope=both sid='*';
  2. ソース・システムのoracle OSユーザーとして、次のSQL命令を発行してデータベースを構成します。
    [opc@exadb-node1 ~]$ sudo su - oracle
    [oracle@exadb-node1 ~]$ source <db_name>.env
    [oracle@exadb-node1 ~]$ sqlplus / as sysdba
    SQL> ALTER DATABASE FORCE LOGGING;
    SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    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.2 - データベース・レプリケーション管理者ユーザーの作成

ソースおよびターゲットのOracleデータベースには、次のように適切な権限が割り当てられたGoldenGate管理者ユーザーを作成する必要があります。

  • マルチテナント・コンテナ・データベース(CDB)の場合:
    • ソース・データベースであるGoldenGate Extractは、c##を使用してルート・コンテナ・データベース内のユーザーに接続するように構成する必要があります
    • ターゲット・データベースには、プラガブル・データベース(PDB)ごとに個別のGoldenGate管理者ユーザーが必要です。Oracleマルチテナント・データベースでのGoldenGate管理者の作成の詳細は、マルチテナント・コンテナ・データベースでのOracle GoldenGateの構成を参照してください。
  • 非CDBデータベースについては、Oracle GoldenGate資格証明の確立を参照してください。
  1. ソース・システムのoracle OSユーザーとして、次のSQL命令を発行してOracle GoldenGateのデータベース・ユーザーを作成し、必要な権限を割り当てます。
    [opc@exadb-node1 ~]$ sudo su - oracle
    [oracle@exadb-node1 ~]$ source <db_name>.env
    [oracle@exadb-node1 ~]$ sqlplus / as sysdba
    
    # CDB
    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
    alter session set container=<PDB_name>;
    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のデータベース・ユーザーを作成し、必要な権限を割り当てます。
    # Target PDB
    [opc@exadb-node1 ~]$ sudo su - oracle
    [oracle@exadb-node1 ~]$ source <db_name>.env
    [oracle@exadb-node1 ~]$ sqlplus / as sysdba
    alter session set container=<PDB_name>;
    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');

ステップ2.3 - データベース・サービスの作成

データベースを開いたときにOracle Grid Infrastructure AgentがOracle GoldenGateのデプロイメントを自動的に開始するには、データベースサービスが必要です。DBFSを共有ファイル・システムに使用すると、データベース・サービスを使用してDBFSを正しいRACインスタンスにマウントすることもできます。

ソース・マルチテナント・データベースを使用する場合は、ルート・コンテナ・データベース(CDB)とレプリケートされるスキーマを含むプラガブル・データベース(PDB)に、個別のサービスが必要です。ターゲット・マルチテナント・データベースの場合は、PDBに単一のサービスが必要です。

  1. oracle OSユーザーとして、次のコマンドを使用してCDBデータベース・サービスを作成および開始します。
    [oracle@exadb-node1 ~]$ source <db_name>.env
    [oracle@exadb-node1 ~]$ srvctl add service -db $ORACLE_UNQNAME
     -service `echo $ORACLE_UNQNAME`_ogg -preferred <SID1> -available <SID2>
     -role PRIMARY
    [oracle@exadb-node1 ~]$ srvctl start service -db $ORACLE_UNQNAME
     -service `echo $ORACLE_UNQNAME`_ogg

    データベースがマルチテナント環境の一部である場合は、必ずプラガブル・データベース(PDB)でサービスを作成してください。

  2. oracle OSユーザーとして、次のコマンドを使用してPDBデータベース・サービスを作成および開始します。
    [oracle@exadb-node1 ~]$ dbaascli database getDetails
     --dbname <db_name> |grep pdbName
          "pdbName" : "<PDB_NAME>",
    [oracle@exadb-node1 ~]$ srvctl add service -db $ORACLE_UNQNAME
     -service <PDB_NAME>_ogg -preferred <SID1>,<SID2> -pdb <PDB_NAME> -role PRIMARY
    [oracle@exadb-node1 ~]$ srvctl start service -db $ORACLE_UNQNAME
     -service <PDB_NAME>_ogg
  3. oracle OSユーザーとして、サービスが実行されていることを確認します。
    [oracle@exadb-node1 ~]$ srvctl status service -d $ORACLE_UNQNAME |grep _ogg
    Service <ORACLE_UNQNAME>_ogg is running on instance(s) <SID1>
    Service <PDB_NAME>_ogg is running on instance(s) <SID1>

データベース・サービスの作成の詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』サーバー制御ユーティリティ・リファレンスを参照してください。