メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

Amazon RDS での Oracle GoldenGate の使用

Oracle GoldenGate を使用すると、データベース間でトランザクションデータを収集、レプリケート、管理することができます。このツールは、ログベースの変更データキャプチャ (CDC) であり、オンライントランザクション処理 (OLTP) システムの Oracle データベースで使用されるレプリケーションソフトウェアパッケージです。GoldenGate によって、ソースデータベースで最近変更されたデータを含んでいるトレイルファイルが作成され、これらのファイルがターゲットデータベースにプッシュされます。Amazon RDS で Oracle GoldenGate を使用することで、アクティブなデータベース間でのレプリケーション、ダウンタイムのない移行とアップグレード、災害対策、データ保護、およびリージョン内のレプリケーションとリージョン間でのレプリケーションを行うことができます。

Amazon RDS で Oracle GoldenGate を使用する場合に理解する必要がある重要な点を次に示します。

  • お客様は、Amazon RDS で GoldenGate を設定および管理する責任があります。

  • Amazon RDS は、すべての AWS リージョンの "自分のライセンス使用" モデルにおいて Oracle GoldenGate をサポートしています。詳細については、「Oracle のライセンス」を参照してください。

  • Amazon RDS は、Oracle Database Standard Edition Two (SE2)、Standard Edition One (SE1)、Standard Edition (SE)、Enterprise Edition (EE) 用の Oracle GoldenGate をサポートしています。

  • Amazon RDS は、データベースバージョン 11.2.0.4、12.1.0.1、または 12.1.0.2 用の Oracle GoldenGate をサポートしています。

  • Amazon RDS は、Oracle GoldenGate バージョン 11.2.1 および 12.1.x をサポートしています。

  • Amazon RDS は、Oracle GoldenGate を使用して Oracle データベース間での移行とレプリケーションをサポートしています。また、異機種データベース間での移行やレプリケーションはサポートしていませんが、お客様がこのような操作を行うことは禁止していません。

  • Oracle Transparent Data Encryption (TDE) を使用する Amazon RDS Oracle DB インスタンスで、GoldenGate を使用できます。トレイルファイルにはデフォルトでは暗号化されていないデータが保存されるため、sqlnet.ora 暗号化を使用して、ソースインスタンス、GoldenGate ハブ、およびターゲットインスタンスの間のパイプラインを暗号化する必要があります。sqlnet.ora 暗号化の詳細については、Oracle のドキュメントを参照してください。

  • Oracle GoldenGate DDL は現在サポートされていません。

概要

Amazon RDS で使用される Oracle GoldenGate アーキテクチャは、3 つの独立したモジュールで構成されています。ソースデータベースには、オンプレミスの Oracle データベース、EC2 インスタンス上の Oracle データベース、Amazon RDS DB インスタンス上の Oracle データベースを使用できます。また GoldenGate ハブは、ソースデータベースからターゲットデータベースにトランザクション情報を移動します。GoldenGate ハブには、Oracle Database 11.2.0.4 と GoldenGate 11.2.1 がインストールされた EC2 インスタンス、またはオンプレミスの Oracle インストールを使用できます。EC2 ハブは複数使用できます。クロスリージョンレプリケーションで GoldenGate を使用する場合は、2 つのハブの使用をお勧めします。最後に、ターゲットデータベースには、EC2 インスタンスまたはオンプレミスの場所にある Amazon RDS DB インスタンスを使用できます。

Amazon RDS で Oracle GoldenGate を使用する場合は、次の一般的なシナリオがサポートされます。

シナリオ 1: オンプレミスの Oracle ソースデータベースとオンプレミスの Oracle GoldenGate ハブを使用し、ターゲットとなる Amazon RDS DB インスタンスにデータを提供します。

 Amazon RDS を使用する GoldenGate の設定 0

シナリオ 2: ソースデータベースとして機能するオンプレミスの Oracle データベースを Amazon EC2 インスタンスハブに接続し、ターゲットとなる Amazon RDS DB インスタンスにデータを提供します。

 Amazon RDS を使用する GoldenGate の設定 1

シナリオ 3: Amazon RDS DB インスタンス上の Oracle データベース (ソースデータベースとして機能) を Amazon EC2 インスタンスハブに接続し、ターゲットとなる Amazon RDS DB インスタンスにデータを提供します。

 Amazon RDS を使用する GoldenGate の設定 2

シナリオ 4: Amazon EC2 インスタンス上の Oracle データベース (ソースデータベースとして機能) を Amazon EC2 インスタンスハブに接続し、ターゲットとなる Amazon RDS DB インスタンスにデータを提供します。

 Amazon RDS を使用する GoldenGate の設定 3

シナリオ 5: Amazon RDS DB インスタンス上の Oracle データベースを同じリージョンの Amazon EC2 インスタンスハブに接続します。このインスタンスハブを別のリージョンの Amazon EC2 インスタンスハブに接続し、この 2 番目の EC2 インスタンスハブと同じリージョンにある、ターゲットとなる Amazon RDS DB インスタンスにデータを提供します。

 Amazon RDS を使用する GoldenGate の設定 4

注記

オンプレミス環境で実行中の Oracle GoldenGate に影響する問題は、AWS で実行中の GoldenGate にも影響します。GoldenGate ハブを監視し、フェイルオーバーが発生した場合に EXTRACTREPLICAT が再起動されるのを確認することを強くお勧めします。GoldenGate ハブは Amazon EC2 インスタンス上で実行されるため、Amazon RDS では GoldenGate ハブが管理されず、実行中であるかどうかを確認できません。

Amazon RDS で GoldenGate を使用して、Oracle のメジャーバージョンにアップグレードすることができます。たとえば、Amazon RDS で GoldenGate を使用して、オンプレミスデータベースの Oracle バージョン 8 から、Amazon RDS DB インスタンスで実行中の Oracle データベースのバージョン 11.2.0.4 にアップグレードすることができます。

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

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

Amazon EC2 インスタンス上に Oracle GoldenGate ハブを作成するには、いくつかのステップがあります。最初に、Oracle DBMS 11g バージョン 11.2.0.4 の完全インストールを使用して、EC2 インスタンスを作成します。EC2 インスタンスには、Oracle GoldenGate 11.2.1 ソフトウェアをインストールする必要があります。また、Oracle パッチ 13328193 もインストールする必要があります。GoldenGate のインストールの詳細については、Oracle のドキュメントを参照してください。

GoldenGate ハブを提供する EC2 インスタンスでは、ソースデータベースからのトランザクション情報を処理し、トレイルファイルに保存します。このため、トレイルファイルを保存するのに十分なストレージを割り当てる必要があります。また、EC2 インスタンスには、処理されるデータ量を管理するための十分な処理能力と、トレイルファイルに書き込む前にトランザクション情報を保存するための十分なメモリがあることが確認する必要もあります。

次のタスクでは、Amazon EC2 インスタンスの GoldenGate ハブをセットアップします。各タスクの詳細は、このセクションで説明します。タスクには以下のものがあります。

  • tnsname.ora ファイルにエイリアスを追加する

  • GoldenGate サブディレクトリを作成する

  • GLOBALS パラメータファイルを更新する

  • mgr.prm ファイルを設定し、manager を起動する

tnsname.ora ファイルに次のエントリを追加して、エイリアスを作成します。tnsname.ora ファイルの詳細については、Oracle のドキュメントを参照してください。

Copy
$ cat /example/config/tnsnames.ora TEST= (DESCRIPTION=  (ENABLE=BROKEN) (ADDRESS_LIST=    (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-test.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200)) ) (CONNECT_DATA=    (SID=ORCL) ) )

次に、EC2 コマンドラインシェルと ggsci (GoldenGate のコマンドインタープリタ) を使用して、GoldenGate ディレクトリ内にサブディレクトリを作成します。サブディレクトリは gg ディレクトリの下に作成され、パラメータ、レポート、チェックポイントの各ファイル用のディレクトリが含まれます。

Copy
prompt$ cd /gg prompt$ ./ggsci GGSCI> CREATE SUBDIRS

EC2 コマンドラインシェルを使用して、GLOBALS パラメータファイルを作成します。すべての GoldenGate プロセスに影響するパラメータは、GLOBALS パラメータファイルで定義されます。次の例では、必要なファイルを作成します。

Copy
prompt$ cd $GGHOME prompt$ vi GLOBALS CheckpointTable oggadm1.oggchkpt

GoldenGate ハブのセットアップと設定の最後のステップでは、manager を設定します。mgr.prm ファイルに次の行を追加し、ggsci を使用して manager を起動します。

Copy
PORT 8199 PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS 5
Copy
GGSCI> start mgr

以上のステップを完了すると、GoldenGate ハブを使用できる状態になります。次に、ソースデータベースとターゲットデータベースをセットアップします。

Amazon RDS の GoldenGate で使用するためのソースデータベースのセットアップ

ソースデータベースでバージョン 11.2.0.4 以降が実行されている場合、GoldenGate で使用するためのソースデータベースのセットアップでは、3 つのタスクを実行する必要があります。

  • compatible パラメータを 11.2.0.4 以降に設定します。

  • ENABLE_GOLDENGATE_REPLICATION パラメータを True に設定します。このパラメータによって、ソースデータベースのサプリメンタルロギングが有効になります。ソースデータベースが Amazon RDS DB インスタンス上にある場合、ENABLE_GOLDENGATE_REPLICATION パラメータを true に設定して、DB インスタンスにパラメータグループを割り当てる必要があります。ENABLE_GOLDENGATE_REPLICATION パラメータの詳細については、Oracle のドキュメントを参照してください。

  • GoldenGate ソースデータベースに関するアーカイブされた再実行ログの保持期間を設定します。

  • ソースデータベースに GoldenGate ユーザーアカウントを作成します。

  • GoldenGate ユーザーに必要な権限を付与します。

ソースデータベースでは、compatible パラメータを 11.2.0.4 以降に設定する必要があります。Amazon RDS DB インスタンスの Oracle データベースをソースデータベースとして使用する場合は、11.2.0.4 以降に設定された compatible パラメータを含んだパラメータグループを DB インスタンスに関連付ける必要があります。DB インスタンスに関連付けられているパラメータグループの compatible パラメータを変更した場合は、変更を反映させるためにインスタンスを再起動してください。次の Amazon RDS CLI コマンドを使用して、新しいパラメータグループを作成し、compatible パラメータを設定することができます。新しいパラメータグループは、ソース DB インスタンスと関連付ける必要があります。

Linux、OS X、Unix の場合:

Copy
aws rds create-db-parameter-group \ --db-parameter-group-name example-goldengate \ --description "Parameters to allow GoldenGate" \ --db-parameter-group-family oracle-ee-11.2 aws rds modify-db-parameter-group \ --db-parameter-group-name example-goldengate \ --parameters "name=compatible, value=11.2.0.4, method=pending-reboot" aws rds modify-db-instance \ --db-instance-identifier example-test \ --db-parameter-group-name example-goldengate \ --apply-immediately aws rds reboot-db-instance \ --db-instance-identifier example-test

Windows の場合:

Copy
aws rds create-db-parameter-group ^ --db-parameter-group-name example-goldengate ^ --description "Parameters to allow GoldenGate" ^ --db-parameter-group-family oracle-ee-11.2 aws rds modify-db-parameter-group ^ --db-parameter-group-name example-goldengate ^ --parameters "name=compatible, value=11.2.0.4, method=pending-reboot" aws rds modify-db-instance ^ --db-instance-identifier example-test ^ --db-parameter-group-name example-goldengate ^ --apply-immediately aws rds reboot-db-instance ^ --db-instance-identifier example-test

パラメータグループは compatible パラメータを含めて保持する必要があります。DB スナップショットからインスタンスを復元する場合は、上で設定した値と等しいか大きい compatible パラメータ値を指定したパラメータグループを使用するように、復元されたインスタンスを変更する必要があります。この変更は、可能な限り復元アクションの直後に実行してください。また、インスタンスの再起動が必要となります。

ENABLE_GOLDENGATE_REPLICATION パラメータを True に設定すると、ソースデータベースのサプリメンタルロギングが有効になり、必要な GoldenGate の権限が設定されます。ソースデータベースが Amazon RDS DB インスタンス上にある場合、ENABLE_GOLDENGATE_REPLICATION パラメータを true に設定して、DB インスタンスにパラメータグループを割り当てる必要があります。ENABLE_GOLDENGATE_REPLICATION パラメータの詳細については、Oracle のドキュメントを参照してください。

ソースデータベースでは、アーカイブされた再実行ログを保持する必要もあります。たとえば、次のコマンドを使用すると、アーカイブされた再実行ログの保持期間を 24 時間に設定できます。

Copy
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);

ログを保持する期間は、時間単位で指定します。保持期間は、ソースインスタンスで発生する可能性があるダウンタイムや、通信/ネットワークの問題に十分対応できる期間にする必要があります。これにより、Oracle GoldenGate では、必要に応じてソースインスタンスからログを復旧することができます。ログの保持期間は、必ず 1 時間以上にする必要があります。

ログを保持する設定が小さすぎると、次のメッセージが表示されます。

Copy
ERROR OGG-02028 Failed to attach to logmining server OGG$<extract_name> error 26927 - ORA-26927: altering an outbound server with a remote capture is not allowed.

これらのログは DB インスタンスで保持されるため、ログファイルを保存するための十分なストレージがインスタンスで利用できることを確認してください。過去 "X" 時間で使用した領域の量を確認するには、次のクエリを使用します。"X" は時間数に置き換えてください。

Copy
select sum(blocks * block_size) bytes from v$archived_log where next_time>=sysdate-X/24 and dest_id=1;

GoldenGate は、データベースユーザーとして実行します。この際、ソースデータベースの再実行ログやアーカイブログにアクセスするための適切なデータベース権限が必要になります。このため、GoldenGate のユーザーアカウントはソースデータベース上に作成する必要があります。GoldenGate のユーザーアカウントに関する権限の詳細については、Oracle のドキュメントのセクション 4、セクション 4.4、および表 4.1 を参照してください。

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

Copy
CREATE tablespace administrator; CREATE USER oggadm1  IDENTIFIED BY "XXXXXX"   default tablespace ADMINISTRATOR temporary tablespace TEMP;

最後に、GoldenGate のユーザーアカウントに必要な権限を付与します。次のステートメントでは、oggadm1 という名前のユーザーに権限が付与されます。

Copy
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 instance master username> 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; EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE (grantee=>'OGGADM1', privilege_type=>'capture', grant_select_privileges=>true, do_grants=>TRUE);

Amazon RDS の GoldenGate で使用するためのターゲットデータベースのセットアップ

以下のタスクでは、GoldenGate で使用するためにターゲット DB インスタンスをセットアップします。

  • compatible パラメータを 11.2.0.4 以降に設定する

  • ENABLE_GOLDENGATE_REPLICATION パラメータを True に設定します。ターゲットデータベースが Amazon RDS DB インスタンス上にある場合、ENABLE_GOLDENGATE_REPLICATION パラメータを true に設定して、DB インスタンスにパラメータグループを割り当てる必要があります。ENABLE_GOLDENGATE_REPLICATION パラメータの詳細については、Oracle のドキュメントを参照してください。

  • ターゲットデータベースで GoldenGate のユーザーアカウントを作成し、管理する

  • GoldenGate ユーザーに必要な権限を付与する

GoldenGate は、データベースユーザーとして実行されます。この際、適切なデータベース権限が必要になります。このため、GoldenGate のユーザーアカウントはターゲットデータベース上に作成する必要があります。次のステートメントでは、oggadm1 という名前のユーザーが作成されます。

Copy
create tablespace administrator; create tablespace administrator_idx; CREATE USER oggadm1  IDENTIFIED BY "XXXXXX" default tablespace ADMINISTRATOR temporary tablespace TEMP; alter user oggadm1 quota unlimited on ADMINISTRATOR; alter user oggadm1 quota unlimited on ADMINISTRATOR_IDX;

最後に、GoldenGate のユーザーアカウントに必要な権限を付与します。次のステートメントでは、oggadm1 という名前のユーザーに権限が付与されます。

Copy
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; EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE (grantee=>'OGGADM1',privilege_type=>'apply', grant_select_privileges=>true, do_grants=>TRUE);

Oracle GoldenGate の EXTRACT ユーティリティと REPLICAT ユーティリティの使用

Oracle GoldenGate のユーティリティである EXTRACTREPLICAT は連携して動作し、トレイルファイルを使った増分トランザクションのレプリケーションを利用して、ソースデータベースとターゲットデータベースの同期を維持します。ソースデータベースで行われたすべての変更は EXTRACT によって自動的に検出され、その後整形されて、オンプレミスの GoldenGate または EC2 インスタンスハブ上のトレイルファイルに転送されます。トレイルファイルの初回の読み込みが完了すると、REPLICAT ユーティリティによってデータがこれらのファイルから読み取られ、ターゲットデータベースにレプリケートされます。

Oracle GoldenGate の EXTRACT ユーティリティの実行

EXTRACT ユーティリティは、ソースデータベースのデータを取得、変換して、トレイルファイルに出力します。EXTRACT は、トランザクションの詳細情報をメモリまたは一時ディスクストレージ上のキューに入れます。トランザクションがソースデータベースにコミットされると、EXTRACT はすべてのトランザクションの詳細情報をトレイルファイルにフラッシュします。このファイルは、オンプレミスの GoldenGate または EC2 インスタンスハブへルーティングされ、その後でターゲットデータベースへルーティングされます。

次のタスクは、EXTRACT ユーティリティを有効にして起動します。

  • GoldenGate ハブ (オンプレミスまたは EC2 インスタンス) にある EXTRACT パラメータファイルを設定します。サンプルの EXTRACT パラメータファイルを次に示します。

    Copy
    EXTRACT EABC SETENV (ORACLE_SID=ORCL) SETENV (NLSLANG=AL32UTF8)   USERID oggadm1@TEST, PASSWORD XXXXXX EXTTRAIL /path/to/goldengate/dirdat/ab   IGNOREREPLICATES GETAPPLOPS TRANLOGOPTIONS EXCLUDEUSER OGGADM1   TABLE EXAMPLE.TABLE;
  • GoldenGate ハブで、GoldenGate コマンドラインインターフェイス (ggsci) を起動します。ソースデータベースにログインします。次の例は、ログインの形式を示しています。

    Copy
    dblogin userid <user>@<db tnsname>
  • データベースのチェックポイントテーブルを追加します。

    Copy
    add checkpointtable
  • データベーステーブルのサプリメンタルロギングを有効にするために、transdata を追加します。

    Copy
    add trandata <user>.<table>

    また、データベースのすべてのテーブルについてサプリメンタルロギングを有効にするように、transdata を追加することもできます。

    Copy
    add trandata <user>.*
  • ggsci コマンドラインを使用する場合、次のコマンドを使用して、EXTRACT ユーティリティを有効にします。

    Copy
    add extract <extract name> tranlog, INTEGRATED tranlog, begin now add exttrail <path-to-trail-from-the param-file> extract <extractname-from-paramfile>, MEGABYTES Xm
  • アーカイブログが削除されないように、データベースに EXTRACT ユーティリティを登録します。これにより、以前のコミットされていないトランザクションを必要に応じて復旧できます。データベースに EXTRACT ユーティリティを登録するには、次のコマンドを使用します。

    Copy
    register EXTRACT <extract process name>, DATABASE
  • EXTRACT ユーティリティを起動するには、次のコマンドを使用します。

    Copy
    start <extract process name>

Oracle GoldenGate の REPLICAT ユーティリティの実行

REPLICAT ユーティリティは、トレイルファイルのトランザクション情報をターゲットデータベースに「プッシュ」するために使用されます。

次のタスクは、REPLICAT ユーティリティを有効にして起動します。

  • GoldenGate ハブ (オンプレミスまたは EC2 インスタンス) にある REPLICAT パラメータファイルを設定します。サンプルの REPLICAT パラメータファイルを次に示します。

    Copy
    REPLICAT RABC SETENV (ORACLE_SID=ORCL) SETENV (NLSLANG=AL32UTF8)   USERID oggadm1@TARGET, password XXXXXX   ASSUMETARGETDEFS MAP EXAMPLE.TABLE, TARGET EXAMPLE.TABLE;
  • GoldenGate コマンドラインインターフェイス (ggsci) を起動します。ターゲットデータベースにログインします。次の例は、ログインの形式を示しています。

    Copy
    dblogin userid <user>@<db tnsname>
  • ggsci コマンドラインを使用して、チェックポイントテーブルを追加します。ここで指定するユーザーは、ターゲットテーブルスキーマの所有者ではなく、GoldenGate のユーザーアカウントであることが必要です。次の例では、gg_checkpoint という名前のチェックポイントテーブルを作成します。

    Copy
    add checkpointtable <user>.gg_checkpoint 
  • REPLICAT ユーティリティを有効にするには、次のコマンドを使用します。

    Copy
    add replicat <replicat name> EXTTRAIL <extract trail file> CHECKPOINTTABLE <user>.gg_checkpoint 
  • REPLICAT ユーティリティを起動するには、次のコマンドを使用します。

    Copy
    start <replicat name>

Amazon RDS で Oracle GoldenGate を使用する場合の問題のトラブルシューティング

このセクションでは、Amazon RDS で GoldenGate を使用する場合に発生する最も一般的な問題について説明します。

ログの保持

ログの保持を有効にする必要があります。有効にしない場合、または保持の値が小さすぎる場合は、次のメッセージが表示されます。

Copy
2014-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 1306Not able to establish initial position for begin time 2014-03-06 06:16:55.

GoldenGate は適切に設定されているようだが、レプリケーションが機能していない

既存のテーブルに関して、開始 SCN を GoldenGate に指示する必要があります。この問題を解決するには、次の手順に従います。

  • GoldenGate コマンドラインインターフェイス (ggsci) を起動します。ソースデータベースにログインします。次の例は、ログインの形式を示しています。

    Copy
    dblogin userid <user>@<db tnsname>
  • ggsci コマンドラインを使用して、EXTRACT プロセスの開始 SCN を設定します。次の例では、extract の SCN を 223274 に設定しています。

    Copy
    ALTER EXTRACT <extract process name> SCN 223274 start <extract process name>
  • ターゲットデータベースにログインします。次の例は、ログインの形式を示しています。

    Copy
    dblogin userid <user>@<db tnsname>
  • ggsci コマンドラインを使用して、REPLICAT プロセスの開始 SCN を設定します。次の例では、REPLICAT の SCN を 223274 に設定しています。

    Copy
    start <replicat process name> atcsn 223274