タスク2 - GoldenGateに向けたOracle Databaseの構成
ソースおよびターゲットのOracle GoldenGateデータベースは、次に示す推奨事項を使用して構成する必要があります。
このタスクを完了するには、次のステップを実行します。
- ステップ2.1 - データベース構成
- ステップ2.2 - データベース・レプリケーション管理者ユーザーの作成
- ステップ2.3 - データベース・サービスの作成
ステップ2.1 - データベース構成
ソースおよびターゲットのOracle GoldenGateデータベースは、次に示す推奨事項を使用して構成する必要があります。
- データベース初期化パラメータを設定してOracle GoldenGateレプリケーションを有効にします。
- ソースOracle GoldenGateデータベースの場合:
- データベースを
ARCHIVELOG
モードで実行します FORCE LOGGING
モードを有効にします- 最小サプリメンタル・ロギングを有効にしてください
- さらに、すべてのレプリケートされたオブジェクトのスキーマまたは表レベルのログを追加します
- データベースを
STREAMS_POOL_SIZE
初期化パラメータを使用して、ソース・データベースのシステム・グローバル領域(SGA)でストリーム・プールを構成します。統合Replicatを使用する場合は、ターゲット・データベースでストリーム・プールのみが必要です。
Oracle GoldenGate用にデータベースを準備するステップは、『Oracle DatabaseでのOracle GoldenGateクラシック・アーキテクチャの使用』を参照してください。
- ソースおよびターゲット・システムの
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='*';
- ソース・システムの
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の構成を参照してください。
- ソース・データベースであるGoldenGate Extractは、
- 非CDBデータベースについては、Oracle GoldenGate資格証明の確立を参照してください。
- ソース・システムの
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');
- ターゲット・システムの
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に単一のサービスが必要です。
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)でサービスを作成してください。
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
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管理およびデプロイメント・ガイド』のサーバー制御ユーティリティ・リファレンスを参照してください。