Oracle GoldenGate のセットアップ - Amazon Relational Database Service

Oracle GoldenGate のセットアップ

Amazon RDS を使用して Oracle GoldenGate をセットアップするには、Amazon EC2 インスタンス上にハブを設定し、ソースデータベースとターゲットデータベースを設定します。以下のセクションは、Amazon RDS for Oracle で使用するために Oracle GoldenGate を設定する方法を示しています。

Amazon EC2 での Oracle GoldenGate ハブのセットアップ

Amazon EC2 インスタンスに Oracle GoldenGate ハブを作成するには、まず Oracle RDBMS の完全なクライアントインストールで Amazon EC2 インスタンスを作成します。Amazon EC2 インスタンスには、Oracle GoldenGate ソフトウェアもインストールしている必要があります。Oracle GoldenGate ソフトウェアのバージョンは、ソースおよびターゲットのデータベースのバージョンにより決定されます。Oracle GoldenGate のインストールの詳細については、Oracle GoldenGate のドキュメントを参照してください。

Oracle GoldenGate ハブとして機能する Amazon EC2 インスタンスは、ソースデータベースのトランザクション情報をトレイルファイルに保存し、処理します。このプロセスをサポートするには、次の要件を満たしていることを確認してください。

  • トレイルファイル用に十分なストレージを割り当てています。

  • Amazon EC2 インスタンスには、データ量を管理するのに十分な処理能力がある。

  • トレイルファイルに書き込む前に、EC2 インスタンスにトランザクション情報を保存するのに十分なメモリがある。

Amazon EC2 インスタンスに Oracle GoldenGate クラシックアーキテクチャハブを設定するには
  1. Oracle GoldenGate ディレクトリにサブディレクトリを作成します。

    Amazon EC2 コマンドラインシェルで、Oracle GoldenGate コマンドインタープリタ ggsci を起動します。CREATE SUBDIRS コマンドは、パラメータ、レポート、チェックポイントの各ファイル用の /gg ディレクトリの下にサブディレクトリを作成します。

    prompt$ cd /gg prompt$ ./ggsci GGSCI> CREATE SUBDIRS
  2. mgr.prm ファイルを設定します。

    次の例では、$GGHOME/dirprm/mgr.prm ファイルに行を追加します。

    PORT 8199 PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS 5
  3. マネージャーを起動します。

    次の例では、ggsci を起動し、start mgr コマンドを実行します。

    GGSCI> start mgr

これで、Oracle GoldenGate ハブを使用する準備ができました。

Amazon RDS の Oracle GoldenGate 用の出典データベースのセットアップ

Oracle GoldenGate で使用するソースデータベースを設定するには、次のタスクを実行します。

ステップ 1: ソースデータベースでの補足的なログ記録を有効にする

最小限のデータベースレベルの補足的なログ記録を有効にするには、次の PL/SQL プロシージャを実行します。

EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD')

ステップ 2: ENABLE_GOLDENGATE_REPLICATION 初期化パラメータを true に設定する

ENABLE_GOLDENGATE_REPLICATION 初期化パラメータを true に設定すると、データベースサービスが論理レプリケーションをサポートできるようになります。ソースデータベースが Amazon RDS DB インスタンスにある場合、ENABLE_GOLDENGATE_REPLICATION インストールパラメータを true に設定して、DB インスタンスにパラメータグループを割り当てる必要があります。ENABLE_GOLDENGATE_REPLICATION の初期化パラメータの詳細については、Oracle Database のドキュメントを参照してください。

ステップ 3: ソースデータベースでのログの保持期間を設定する

アーカイブされた REDO ログを保持するようにソースデータベースを必ず設定してください。以下のガイドラインを検討します。

  • ログの保持期間を時間単位で指定します。最小値は 1 時間です。

  • この期間は、ソース DB インスタンスの潜在的なダウンタイム、潜在的な通信期間、ソースインスタンスのネットワーク問題の潜在的な期間を超えるように設定します。このような期間により、Oracle GoldenGate は必要に応じて出典インスタンスからログを復元できます。

  • ファイル用の十分なストレージがインスタンスにあることを確認します。

例えば、アーカイブ REDO ログの保持期間を 24 時間に設定します。

EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24)

ログの保持を有効にしていない場合や、保持の値が小さすぎる場合、次のようなエラーメッセージが表示されます。

2022-03-06 06:17:27 ERROR OGG-00446 error 2 (No such file or directory) opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 Not able to establish initial position for begin time 2022-03-06 06:16:55.

DB インスタンスにはアーカイブされた REDO ログが保持されるため、ファイル用の十分なスペースがあることを確認してください。過去 num_hours 時間で使用した領域の量を確認するには、num_hours を時間数に置き換えて、次のクエリを実行します。

SELECT SUM(BLOCKS * BLOCK_SIZE) BYTES FROM V$ARCHIVED_LOG WHERE NEXT_TIME>=SYSDATE-num_hours/24 AND DEST_ID=1;

ステップ 4: ソースデータベースに Oracle GoldenGate ユーザーアカウントを作成する

Oracle GoldenGate はデータベースユーザーとして実行され、出典データベースの REDO ログとアーカイブ REDO ログにアクセスするには、適切なデータベース権限が必要です。これらを指定するには、ソースデータベースにユーザーアカウントを作成します。Oracle GoldenGate のユーザーアカウントに関するアクセス許可の詳細については、Oracle のドキュメントを参照してください。

次のステートメントでは、oggadm1 という名前のユーザーアカウントが作成されます。

CREATE TABLESPACE administrator; CREATE USER oggadm1  IDENTIFIED BY "password" DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP; ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
注記

セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。

ステップ 5: ソースデータベースでユーザーに特権を付与する

このタスクでは、ソースデータベースでデータベースユーザーに必要なアカウント権限を付与します。

ソースデータベースでユーザーに特権を付与するには
  1. SQL コマンド grantrdsadmin.rdsadmin_util プロシージャ grant_sys_object を使用して、Oracle GoldenGate ユーザーアカウントに必要な権限を付与します。次のステートメントでは、oggadm1 という名前のユーザーに権限が付与されます。

    GRANT CREATE SESSION, ALTER SESSION TO oggadm1; GRANT RESOURCE TO oggadm1; GRANT SELECT ANY DICTIONARY TO oggadm1; GRANT FLASHBACK ANY TABLE TO oggadm1; GRANT SELECT ANY TABLE TO oggadm1; GRANT SELECT_CATALOG_ROLE TO rds_master_user_name WITH ADMIN OPTION; EXEC rdsadmin.rdsadmin_util.grant_sys_object ('DBA_CLUSTERS', 'OGGADM1'); GRANT EXECUTE ON DBMS_FLASHBACK TO oggadm1; GRANT SELECT ON SYS.V_$DATABASE TO oggadm1; GRANT ALTER ANY TABLE TO oggadm1;
  2. Oracle GoldenGate 管理者になるためにユーザーアカウントに必要な権限を付与します。以下の PL/SQL プログラムを実行します。

    EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'capture', grant_select_privileges => true, do_grants => TRUE);

    権限を取り消すには、同じパッケージのプロシージャ revoke_admin_privilege を使用します。

ステップ 6: ソースデータベースに TNS エイリアスを追加する

$ORACLE_HOME/network/admin/tnsnames.ora プロセスで使用する Oracle Home で、次のエントリを EXTRACT に追加します。tnsnames.ora ファイルの詳細については、Oracle のドキュメントを参照してください。

OGGSOURCE= (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-source.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200))) (CONNECT_DATA=(SERVICE_NAME=ORCL)) )

Amazon RDS で Oracle GoldenGate 用のターゲットデータベースをセットアップする

このタスクでは、Oracle GoldenGate で使用するターゲット DB インスタンスを設定します。

ステップ 1: ENABLE_GOLDENGATE_REPLICATION 初期化パラメータを true に設定する

ENABLE_GOLDENGATE_REPLICATION 初期化パラメータを true に設定すると、データベースサービスが論理レプリケーションをサポートできるようになります。ソースデータベースが Amazon RDS DB インスタンスにある場合、ENABLE_GOLDENGATE_REPLICATION インストールパラメータを true に設定して、DB インスタンスにパラメータグループを割り当てる必要があります。ENABLE_GOLDENGATE_REPLICATION の初期化パラメータの詳細については、Oracle Database のドキュメントを参照してください。

ステップ 2: ターゲットデータベースで GoldenGate のユーザーアカウントを作成する

Oracle GoldenGate はデータベースユーザーとして動作し、適切なデータベース権限が必要です。これらの権限があることを確認するには、ターゲットデータベースにユーザーアカウントを作成します。

次のステートメントでは、oggadm1 という名前のユーザーを作成します。

CREATE TABLESPSACE administrator; CREATE USER oggadm1  IDENTIFIED BY "password" DEFAULT TABLESPACE administrator TEMPORARY TABLESPACE temp; ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
注記

セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。

ステップ 3: ターゲットデータベースでアカウント権限を付与する

このタスクでは、ターゲットデータベースでデータベースユーザーに必要なアカウント権限を付与します。

ターゲットデータベースでユーザーに特権を付与するには
  1. ターゲットデータベースの Oracle GoldenGate ユーザーアカウントに必要な権限を付与します。次の例では、oggadm1 に権限を付与します。

    GRANT CREATE SESSION        TO oggadm1; GRANT ALTER SESSION         TO oggadm1; GRANT CREATE CLUSTER        TO oggadm1; GRANT CREATE INDEXTYPE      TO oggadm1; GRANT CREATE OPERATOR       TO oggadm1; GRANT CREATE PROCEDURE      TO oggadm1; GRANT CREATE SEQUENCE       TO oggadm1; GRANT CREATE TABLE          TO oggadm1; GRANT CREATE TRIGGER        TO oggadm1; GRANT CREATE TYPE           TO oggadm1; GRANT SELECT ANY DICTIONARY TO oggadm1; GRANT CREATE ANY TABLE      TO oggadm1; GRANT ALTER ANY TABLE       TO oggadm1; GRANT LOCK ANY TABLE        TO oggadm1; GRANT SELECT ANY TABLE      TO oggadm1; GRANT INSERT ANY TABLE      TO oggadm1; GRANT UPDATE ANY TABLE      TO oggadm1; GRANT DELETE ANY TABLE      TO oggadm1;
  2. Oracle GoldenGate 管理者になるためにユーザーアカウントに必要な権限を付与します。以下の PL/SQL プログラムを実行します。

    EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'apply', grant_select_privileges => true, do_grants => TRUE);

    権限を取り消すには、同じパッケージのプロシージャ revoke_admin_privilege を使用します。

ステップ 4: ターゲットデータベースに TNS エイリアスを追加する

$ORACLE_HOME/network/admin/tnsnames.ora プロセスで使用する Oracle Home で、次のエントリを REPLICAT に追加します。Oracle マルチテナントデータベースの場合、TNS エイリアスが PDB のサービス名を指していることを確認してください。tnsnames.ora ファイルの詳細については、Oracle のドキュメントを参照してください。

OGGTARGET= (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-target.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200))) (CONNECT_DATA=(SERVICE_NAME=ORCL)) )