Amazon Web Services ブログ

Amazon RDS for Oracle の Oracle GoldenGate を使用したリージョン間災害復旧機能の実装

多くの AWS ユーザーは、日々のアクティビティの骨の折れる作業に AWS ポートフォリオで利用できるマネージドサービスを活用しています。Amazon RDS はこれらのサービスの 1 つであり、リレーショナルデータベースのデプロイに最適です。RDS を使って、リレーショナルデータベースの管理と保守の管理費用を大幅に削減できます。

この記事では、あるリージョンから別のリージョンに実行されているデータベースインスタンスの Amazon RDS for Oracle でリージョン間の災害復旧 (DR) をセットアップする方法を示します。ソリューションは、Amazon EC2 インスタンスハブにインストールされた、Oracle GoldenGate を使用することです。そのインスタンスハブは、DDL レプリケーションを実行するために統合キャプチャモードで設定されたものです。

概要

次の要因に応じて、DR を実装する方法は複数あります。

  • 目標復旧時間 (RTO) および目標復旧ポイント (RPO)
  • DR サイトのセットアップと保守のコストと管理タスク
  • 地理的多様性のための DR サイトの場所

Amazon RDS for Oracle は、マルチ AZ 配置オプションを提供し、データベース (DB) インスタンスの可用性と耐久性を強化しています。これは、多くの場合、一部の顧客ユースケースに効果的な DR ソリューションです。DR サイトを 2 つの異なるリージョンに分散する必要がある場合、DR にマルチ AZ を使用することはできません。ただし、前述の要因に応じて、このようなソリューションを実装する方法はいくつかあります。

ソリューションのアーキテクチャ

ソリューションは、次のコンポーネントで構成されています。

  • GoldenGate ハブインスタンスとして設定された EC2 インスタンス (RHEL 7.4 AMI)。
  • ハブインスタンスには、ソース DB 用とターゲット DB 用の 2 つの異なる Oracle GoldenGate ホーム (OGGSRC および OGGTRG) で設定された、Oracle GoldenGate ソフトウェアバージョン 12.3.0.1.4 があります。
  • ハブインスタンスには、Oracle Database バージョン 12.1.0.2 もあります。
  • us-east-1 で 12.1.0.2.v14 バージョンを実行している Oracle DB インスタンス用のソース RDS
  • us-west-2 で 12.1.0.2.v14 バージョンを実行している Oracle DB インスタンス用のターゲット RDS

この記事では、RDS Oracle DB バージョン 12.1.0.2.v14 および Oracle GoldenGate バージョン 12.3.0.1.4 でソリューションをテストしました。ただし、RDS for Oracle にはサポートされている最新の DB エンジンバージョンを使用する必要があります。

以下の図は、このソリューションのアーキテクチャを示しています。

ソリューションのデプロイ

高レベルのデプロイ手順は次のとおりです。

  • ソース RDS Oracle データベースを作成します。
  • ターゲット RDS Oracle データベースを作成します。
  • ソースデータベース用に EC2 で GoldenGate ハブを設定します。
  • ターゲットデータベース用に EC2 で GoldenGate ハブを設定します。
  • DDL および DML レプリケーションのセットアップをテストします。

ソース RDS Oracle データベースの作成

ソース RDS Oracle データベースをセットアップするには、次の手順を実行します。

  1. ソース RDS データベースで GoldenGate レプリケーションパラメータを有効にします。
    ソースリージョンで enable_goldengate_replicationtrue に設定して、新しいデータベースパラメータグループを作成します。パラメータグループの作成方法の詳細については、「DB パラメータグループの作成」を参照してください。
  2. Oracle DB インスタンス用のソース RDS を作成します。
    新しいカスタム DB パラメータグループを使用して、us-east-1 リージョンにエンジンバージョン 12.1.0.2v14 で Oracle DB インスタンス (OGGSRC) 用のソース RDS を作成します。ソース RDS Oracle DB インスタンスで自動バックアップを有効にしてください。この記事のデータベースは一般公開されています。詳細については、「Oracle DB インスタンスの作成および Oracle DB インスタンス上のデータベースへの接続」を参照してください。
    次のスクリーンショットは、ソースおよびターゲット RDS DB インスタンスのエンドポイント (DNS 名) とポート番号を示しています。

    データベースの接続情報を示す RDS コンソールのスクリーンショット

  3. GoldenGate を使用してレプリケーション用のソースデータベースをセットアップします。
    a.) ソースデータベース OGGSRC に RDS マスターユーザー (この記事ではユーザーは admin) として接続し、GoldenGate レプリケーションパラメータが true に設定されていることを確認します。次のコードを参照してください。

    [oracle@ip-172-31-30-239 admin]$ sqlplus admin/xxxxxxxxx@OGGSRC
    
    SQL> show parameter enable_goldengate_replication
    
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    enable_goldengate_replication	     boolean	 TRUE
    SQL> 
    

    b.) 次のコードを使用して、OGGSRC データベースで補足ログを有効にします。

    [oracle@ip-172-31-30-239 admin]$ sqlplus admin/xxxxxxxxx@OGGSRC
    
    SQL> exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);
    exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);
    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
    exec rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD',p_type => 'ALL');
    exec rdsadmin.rdsadmin_util.switch_logfile;
    PL/SQL procedure successfully completed.
    SQL>

    c.) 次のコードを使用して、OGGSRC データベースでサプリメンタルロギングが有効になっていることを確認します。

    [oracle@ip-172-31-30-239 admin]$ sqlplus admin/xxxxxxxxx@OGGSRC
    
    SQL> select supplemental_log_data_min, force_logging FROM  v$database;
    
    SUPPLEME FORCE_LOGGING
    -------- ---------------------------------------
    YES	 YES
    
    SQL>
  4. ソースデータベースで Oracle GoldenGate レプリケーションユーザーを設定します。
    ソースデータベース OGGSRC に管理ユーザーとして接続し、Oracle GoldenGate レプリケーションユーザー (OGGUSER) を設定します。次のコードを参照してください。

    [oracle@ip-172-31-30-239 admin]$ sqlplus admin/xxxxxxxxx@OGGSRC
    
    SQL> create user OGGUSER identified by xxxxxxxxx default tablespace USERS temporary tablespace TEMP;
    
    User created.
    
    SQL> grant DBA to OGGUSER;
    
    Grant succeeded.
    
    SQL> create tablespace srcdata datafile size 50M autoextend on extent management local uniform size 256k;
    
    Tablespace created.
    
    SQL> create user OGGSRC identified by xxxxxxxxx default tablespace  SRCDATA temporary tablespace TEMP;
    
    User created.
    
    SQL> grant CONNECT,RESOURCE to OGGSRC;
    
    Grant succeeded.
    
    SQL> alter user OGGSRC quota unlimited on SRCDATA;
    
    User altered.
    
    SQL> 

    簡単にするために、この記事では GoldenGate ユーザーに DBA 権限を割り当てています。ベストプラクティスは、DBA 権限を付与するのではなく、必要な特定の GoldenGate 権限を付与することです。詳細については、Oracle ウェブサイトの「適切なユーザー特権を付与する」を参照してください。

ターゲット RDS Oracle データベースの作成

ターゲット RDS Oracle データベースをセットアップするには、次の手順を実行します。

  1. ターゲット RDS データベースで GoldenGate レプリケーションパラメータを有効にします。
    ターゲットリージョンで enable_goldengate_replicationtrue に設定して、新しいデータベースパラメータグループを作成します。詳細については、「DB パラメータグループの作成」を参照してください。
  2. ターゲットリージョンで Oracle DB インスタンス用のターゲット RDS を作成します。
    前の手順で作成した新しいカスタム DB パラメータグループを使用して、us-west-2 リージョンにエンジンバージョン 12.1.0.2v14 で Oracle DB インスタンス (OGGTRG) 用のターゲット RDS を作成します。Oracle DB インスタンス用のターゲット RDS で自動バックアップを有効にしてください。この記事のデータベースは一般公開されています。詳細については、「Oracle DB インスタンスの作成および Oracle DB インスタンス上のデータベースへの接続」を参照してください。
    次のスクリーンショットは、ターゲット RDS DB インスタンスのエンドポイント (DNS 名) とポート番号を示しています。

    データベースの接続情報を示す RDS コンソールのスクリーンショット

  3. ターゲットデータベースで Oracle GoldenGate レプリケーションユーザーを設定します。
    管理ユーザーとしてターゲットデータベース OGGTRG に接続し、Oracle GoldenGate レプリケーションユーザー (OGGUSER) を設定します。次のコードを参照してください。

    [oracle@ip-172-31-30-239 admin]$ sqlplus admin/xxxxxxxxx@OGGTRG
    
    SQL> create tablespace trgdata datafile  size 50M autoextend on extent management local uniform size 256k;
    
    Tablespace created.
    
    SQL> create user OGGUSER identified by xxxxxxxxx default tablespace USERS temporary tablespace TEMP;
    
    User created.
    
    SQL> grant DBA to OGGUSER;
    
    Grant succeeded.
    
    SQL> create user OGGTRG identified by xxxxxxxxx default tablespace TRGDATA temporary tablespace TEMP;
    
    User created.
    
    SQL> alter user OGGTRG quota unlimited on TRGDATA;
    
    User altered.
    
    SQL> grant CONNECT,RESOURCE to OGGTRG;
    
    Grant succeeded.
    
    SQL> 

ソースデータベース用に EC2 で GoldenGate ハブを設定する

次のステップは、ソース OGGSRC データベースと同じリージョンにインストールされた Oracle Database 12c 12.1.0.2.0 バージョンと GoldenGate 12.3.0.1.4 ソフトウェアを完全にインストールして、EC2 に GoldenGate ハブインスタンスを作成することです。EC2 インスタンスの作成の詳細については、「EC2 リソースの作成と EC2 インスタンスの起動」を参照してください。GoldenGate のインストールの詳細については、Oracle ドキュメントライブラリを参照してください。

Oracle Database 12c ソフトウェアは、Optimal Flexible Architecture (OFA) 標準に従って EC2 ハブインスタンスにインストールされます。ORACLE_HOME は、「/u01/app/oracle/product/12c/db1」にあります。
同じ EC2 ホストに次の 2 つの Oracle GoldenGate ホームがあります。

  • ソース「/u01/app/oracle/product/ogg_src」用の OGG ホーム
  • ターゲット「/u01/app/oracle/product/ogg_trg」用の OGG ホーム

GoldenGate ハブインスタンスを設定するには、次の手順を実行します。

  1. EC2 ハブインスタンスからソースおよびターゲット DB への接続を確立します。
    OGGUSER を使用してソースおよびターゲットデータベースに接続するように EC2 ハブインスタンスを設定します。前述のように、OGGSRC および OGGTRG データベースの DNS エンドポイントエントリを使用して、EC2 ハブインスタンス上の tnsnames.ora ファイルを更新します。次のコードを参照してください。

    [oracle@ip-172-31-19-223 ~]$ echo $TNS_ADMIN
    /u01/app/oracle/product/12c/db_1/network/admin
    [oracle@ip-172-31-19-223 ~]$ vi $TNS_ADMIN/tnsnames.ora
    
    # tnsnames.ora Network Configuration File: 
    /u01/app/oracle/product/12c/db_1/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    OGGTRG.WORLD =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = oggtrg1.xxxxxxxxxx.us-west-2.rds.amazonaws.com)(PORT = 1521))
     
        (CONNECT_DATA =
          (SERVICE_NAME = OGGTRG)
        )
      )
    
    OGGSRC.WORLD =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = oggsrg1. xxxxxxxxxx.us-east-1.rds.amazonaws.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVICE_NAME = OGGSRC)
        )
      )
  2. 次のコードを使用して、ソース RDS DB の OGG (OGGSRC) を設定します。
    GGSCI (ip-172-31-19-223.ec2.internal) 2>edit param mgr
    PORT 7809
    DynamicPortList 20000-20099
    PurgeOldExtracts ./dirdat/*, UseCheckPoints, MinKeepHours 2
    Autostart Extract E*
    AUTORESTART Extract *, WaitMinutes 1, Retries 3
    GGSCI (ip-172-31-19-223.ec2.internal) 3> start mgr 
    Manager started.
    
    
    GGSCI (ip-172-31-19-223.ec2.internal)  4> info mgr detail
    
    Manager is running (IP port ip-172-31-19-223.ec2.internal.7809, Process ID 4611).
    
    GGSCI (ip-172-31-30-239.ec2.internal) 5> 
  3. 次のコードを使用してソース RDS データベースに接続するように Oracle GoldenGate Wallet を設定します。
    GGSCI (ip-172-31-19-223.ec2.internal) 4>  Create Wallet
    
    Created wallet at location 'dirwlt'.
    
    Opened wallet at location 'dirwlt'.
    
    GGSCI (ip-172-31-19-223.ec2.internal) 6> Add CredentialStore
    Credential store created in ./dircrd/.
    
    GGSCI (ip-172-31-19-223.ec2.internal) 6> Alter CredentialStore Add User ogguser@oggsrc
    Password xxxxxxx Alias ogg_user_src
    
    Credential store in ./dircrd/ altered.
    
    GGSCI (ip-172-31-19-223.ec2.internal) 7> Info CredentialStore 
    
    Reading from ./dircrd/:
    
    Domain: OracleGoldenGate
    
      Alias: ogg_user_src
      Userid: ogguser@oggsrc
    GGSCI (ip-172-31-19-223.ec2.internal) 8>
    
    GGSCI (ip-172-31-19-223.ec2.internal) 8>  DBLogin UserIDAlias ogg_user_src                            
    Successfully logged into database.
  4. 次のコードを使用して、ソースデータベース用の Oracle GoldenGate TRANDATA オプションを設定します。
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 13> Add TranData OGGSRC.*  ALLCOLS
    
    2019-06-19 02:33:35  INFO    OGG-15132  Logging of supplemental redo data enabled for table OGGSRC.ECONOMIC_DATA.
    
    2019-06-19 02:33:35  INFO    OGG-15133  TRANDATA for scheduling columns has been added on table OGGSRC.ECONOMIC_DATA.
    
    2019-06-19 02:33:35  INFO    OGG-15134  TRANDATA for all columns has been added on table OGGSRC.ECONOMIC_DATA.
    
    2019-06-19 02:33:35  INFO    OGG-15135  TRANDATA for instantiation CSN has been added on table OGGSRC.ECONOMIC_DATA.
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 14> Info TranData OGGSRC.*     
    
    Logging of supplemental redo log data is enabled for table OGGSRC.ECONOMIC_DATA.
    
    All columns supplementally logged for table OGGSRC.ECONOMIC_DATA.
    
    Prepared CSN for table OGGSRC.ECONOMIC_DATA: 524105
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 15>

    a.) 次のコードにより、ソースデータベース用の Integrated Extract を使用してソースデータキャプチャを設定します。

    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 15> edit param EXTSRC
    Extract EXTSRC
    SETENV (ORACLE_SID='OGGSRC')
    UserIdAlias ogg_user_src
    TranlogOptions IntegratedParams (max_sga_size 256)
    Exttrail ./dirdat/in
    ddl include all
    ddloptions addtrandata, report
    LOGALLSUPCOLS
    UPDATERECORDFORMAT COMPACT
    Table OGGSRC.*;
    
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 16> dblogin useridalias ogg_user_src
    Successfully logged into database.
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 17> register extract EXTSRC database
    
    2019-06-19 02:38:34  INFO    OGG-02003  Extract EXTSRC successfully registered with database at SCN 524573.
    
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 18> add extract EXTSRC , integrated tranlog, begin now
    EXTRACT (Integrated) added.
    
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 19> add exttrail ./dirdat/in, extract EXTSRC , megabytes 10  
    EXTTRAIL added.
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 20>

    b.) 次のコードを使用して、ソースデータベース用のオプションのデータポンプを設定します。

    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 20> edit param PXTSRC
    Extract  PXTSRC
    SETENV (ORACLE_SID=’OGGSRC’)
    UserIdAlias ogg_user_src
    rmthost localhost, mgrport 7909
    rmttrail ./dirdat/pn
    table OGGSRC.*;
    
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 21> add extract PXTSRC, exttrailsource ./dirdat/in 
    EXTRACT added.
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 22> add rmttrail ./dirdat/pn, extract PXTSRC, megabytes 10
    RMTTRAIL added.

    データポンププロセスは、GoldenGate レプリケーションソフトウェアの 2 番目のオプションコンポーネントであり、主にネットワークおよびターゲットの障害から保護するために推奨されます。詳細については、Oracle ウェブサイトの「Oracle GoldenGate アーキテクチャの概要」を参照してください。
    c.) 次のコードを使用して、ソースデータベース用のプライマリ抽出とデータポンププロセスを開始します。

    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 23>) > start Extract EXTSRC  
    
    Sending START request to MANAGER ...
    EXTRACT EINTA starting
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGSRC) 25> start extract PXTSRC
    
    Sending START request to MANAGER ...
    EXTRACT PINTA starting
    
    GGSCI (host01.example.com) >  
    
    
    
    GGSCI (host01.example.com) > Info All  
    
    Program     Status      Group       Lag at Chkpt  Time Since Chkpt
    
    MANAGER     RUNNING
    EXTRACT     RUNNING     EINTA       20:44:16      00:00:01
    EXTRACT     RUNNING     PINTA       00:00:00      00:00:03
    
    GGSCI (host01.example.com) >

ターゲットデータベース用に EC2 で GoldenGate ハブを設定する

ターゲットデータベース用に GoldenGate ハブをセットアップするには、次の手順を実行します。

  1. ターゲット RDS DB の OGG (OGGTRG) を設定します。
    ターゲットデータベース用に以下のパラメータを使用してマネージャーを設定します。

    GGSCI (ip-172-31-19-223.ec2.internal) 2>  edit param mgr
    Port 7909
    DynamicPortList 20100-20199
    PurgeOldExtracts ./dirdat/pe*, UseCheckPoints, MinKeepHours 2
    Autostart Replicat R*
    AUTORESTART Replicat *, WaitMinutes 1, Retries 3 
    
    GGSCI (ip-172-31-30-239.ec2.internal) 1> stop mgr
    Manager process is required by other GGS processes.
    Are you sure you want to stop it (y/n)?y
    
    Sending STOP request to MANAGER ...
    Request processed.
    Manager stopped.
    
    
    GGSCI (ip-172-31-19-223.ec2.internal) 2> start mgr
    Manager started.
    
    
    GGSCI (ip-172-31-19-223.ec2.internal) 3> info mgr detail
    
    Manager is running (IP port ip-172-31-30-239.ec2.internal.7909, Process ID 5048).
    
    
    GGSCI (ip-172-31-19-223.ec2.internal) 4>\
  2. 次のコードを使用して、ターゲット RDS データベース用に Oracle GoldenGate Wallet を設定します。
    GGSCI (ip-172-31-19-223.ec2.internal) 4>  Create Wallet
    
    Created wallet at location 'dirwlt'.
    
    Opened wallet at location 'dirwlt'.
    
    GGSCI (ip-172-31-19-223.ec2.internal) 6> Add CredentialStore           
    
    Credential store created in ./dircrd/.
    
    GGSCI (ip-172-31-19-223.ec2.internal) 6> Alter CredentialStore Add User ogguser@oggtrg
    Password oracle Alias ogg_user_trg
    
    Credential store in ./dircrd/ altered.
    
    GGSCI (ip-172-31-19-223.ec2.internal) 7> Info CredentialStore 
    
    Reading from ./dircrd/:
    
    Domain: OracleGoldenGate
    
      Alias: ogg_user_trg
      Userid: ogguser@oggtrg
    
    GGSCI (ip-172-31-19-223.ec2.internal) 8>  DBLogin UserIDAlias ogg_user_trg                            
    Successfully logged into database.
  3. Integrated Replicat を使用してターゲットデータ配信を設定します。次のコードを参照してください。
    GGSCI (ip-172-31-19-223.ec2.internal) >Edit Param RXTTRG
    
    Replicat RXTTRG
    SETENV(ORACLE_SID=’OGGTRG’)
    DBOPTIONS INTEGRATEDPARAMS(parallelism 6)
    AssumeTargetDefs
    DiscardFile ./dirrpt/rpdw.dsc, Purge
    UserIdAlias ogg_user_trg
    Map oggsrc.*, target oggtrg.*;
    
    
    GGSCI (ip-172-31-19-223.ec2.internal) > DBlogin UserIdAlias ogg_user_trg 
    Successfully logged into database.
    
    GGSCI (ip-172-31-19-223.ec2.internal) > Add Replicat RXTTRG Integrated  exttrail ./dirdat/pn                        
    REPLICAT (Integrated) added.
    
    GGSCI (ip-172-31-19-223.ec2.internal) > Start Replicat RXTTRG
    
    Sending START request to MANAGER ...
    REPLICAT RXTTRG starting
    
    GGSCI (ip-172-31-19-223.ec2.internal) > info all
    
    Program     Status      Group       Lag at Chkpt  Time Since Chkpt
    
    MANAGER     RUNNING
    REPLICAT    RUNNING     RXTTRG       00:00:00      00:00:39
    
    GGSCI (ip-172-31-19-223.ec2.internal) >
  4. 次のコードを使用して、Replicat などのプロセスに関する情報を取得します。
    GGSCI (ip-172-31-19-223.ec2.internal) > Info RXTTRG, Detail 
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGTRG) 14> info RXTTRG, detail
    
    REPLICAT   RXTTRG    Last Started 2019-06-19 03:07   Status RUNNING
    INTEGRATED
    Checkpoint Lag       00:00:00 (updated 00:00:06 ago)
    Process ID           14328
    Log Read Checkpoint  File /u01/app/oracle/product/ogg_trg/dirdat/pn000000000
                         First Record  RBA 0
    
    INTEGRATED Replicat
    DBLOGIN Provided, inbound server name is OGG$RXTTRG in ATTACHED state
    
    Current Log BSN value: (no data)
    
    Low Watermark CSN value: (no data)
    
    High Watermark CSN value: (no data)
    
      Extract Source                          Begin             End             
    
      /u01/app/oracle/product/ogg_trg/dirdat/pn000000000  * Initialized *   First Record    
      /u01/app/oracle/product/ogg_trg/dirdat/pn000000000  * Initialized *   First Record    
      ./dirdat/pn000000000                    * Initialized *   First Record    
    
    
    Current directory    /u01/app/oracle/product/ogg_trg
    
    Report file          /u01/app/oracle/product/ogg_trg/dirrpt/RXTTRG.rpt
    Parameter file       /u01/app/oracle/product/ogg_trg/dirprm/rxttrg.prm
    Checkpoint file      /u01/app/oracle/product/ogg_trg/dirchk/RXTTRG.cpr
    Process file         /u01/app/oracle/product/ogg_trg/dirpcs/RXTTRG.pcr
    Error log            /u01/app/oracle/product/ogg_trg/ggserr.log
    
    GGSCI (ip-172-31-19-223.ec2.internal as ogguser@OGGTRG) 15> 

DDL および DML レプリケーションセットアップのテスト

レプリケーションセットアップをテストするには、次の手順を実行します。

  1. サンプルデータを作成して、ソースでレプリケーションをテストします。
    OGGSRC ユーザーとしてソースデータベース OGGSRC に接続し、次のコードでテストデータを作成します。

    [oracle@ip-172-31-30-239 admin]$ sqlplus OGGSRC/xxxxxxxxx@OGGSRC
    
    SQL> create table ECONOMIC_DATA
    (
      entity_id        integer      not null,
      economic_entity  varchar2(128) not null,
      continent	   varchar2(20),
      PRIMARY KEY(entity_id)
    );  
    
    Table created.
    
    SQL> Insert into ECONOMIC_DATA (ENTITY_ID,ECONOMIC_ENTITY,CONTINENT) values (29,'St Vincent and the Grenadines','AMERICAS');
    
    1 row created.
    SQL> commit;
  2. 次のコードで DML と DDL を実行します。
    [oracle@ip-172-31-30-239 admin]$ sqlplus OGGSRC/oracle@OGGSRC
    
    SQL> select count(*) from ECONOMIC_DATA ;
    
      COUNT(*)
    ----------
    	 1
    
    SQL> delete from ECONOMIC_DATA;
    
    1 row deleted.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> 

    a.) stats コマンドを使用して、抽出プロセス EXTSRC をリクエストします。次のコードを参照してください。

    GGSCI (ip-172-31-19-223.ec2.internal) 1> stats EXTSRC
    
    Sending STATS request to EXTRACT EXTSRC ...
    
    Start of Statistics at 2019-06-19 03:28:00.
    
    DDL replication statistics (for all trails):
    
    *** Total statistics since extract started     ***
    	Operations                		           1.00
    	Mapped operations         		           1.00
    	Unmapped operations         		           0.00
    	Other operations         		                0.00
    	Excluded operations         		           0.00
    
    Output to ./dirdat/in:
    
    Extracting from OGGSRC.ECONOMIC_DATA to OGGSRC.ECONOMIC_DATA:
    
    *** Total statistics since 2019-06-19 03:16:57 ***
    	Total inserts                   	           0.00
    	Total updates                   	           0.00
    	Total deletes                   	           1.00
    	Total discards                  	           0.00
    	Total operations                	           1.00
    
    End of Statistics.
    
    GGSCI (ip-172-31-19-223.ec2.internal) 3>

    b.) stats コマンドを使用して、Replicat プロセス RXTTRG をリクエストします。DDL レプリケーションの統計のみを表示するために、統計の出力が切り捨てられていることに注意してください。次のコードを参照してください。

    GGSCI (ip-172-31-19-223.ec2.internal) 1> stats RXTTRG
    
    Sending STATS request to REPLICAT RXTTRG ...
    
    Start of Statistics at 2019-06-19 03:32:52.
    
    Integrated Replicat Statistics:
    
    	Total transactions            		           2.00
    	Redirected                    		           0.00
    	Replicated procedures         		           0.00
    	DDL operations                		           1.00
    	Stored procedures             		           0.00
    	Datatype functionality        		           0.00
    	Event actions                 		           0.00
    	Direct transactions ratio     		          50.00%
    
    DDL replication statistics:
    
    *** Total statistics since replicat started     ***
    	Operations                		           1.00
    	Mapped operations         		           1.00
    	Unmapped operations         		           0.00
    	Other operations         		                0.00
    	Excluded operations         		           0.00
    	Errors                    		           0.00
    	Retried errors            		           0.00
    	Discarded errors          		           0.00
    	Ignored errors            		           0.00
    
    GGSCI (ip-172-31-19-223.ec2.internal) 2>

    c.) ターゲットデータベース OGGTRG を OGGTRG ユーザーとして接続し、レプリケーションを確認します。次のコードを参照してください。

    [oracle@ip-172-31-30-239 admin]$ sqlplus OGGTRG/oracle@OGGTRG
    
    SQL> select count(*) from ECONOMIC_DATA ;
    
      COUNT(*)
    ----------
    	 0
    
    SQL> desc ECONOMIC_DATA
     Name					   Null?      Type
     ----------------------------------------- -------- ----------------------------
     entity_id				 NOT NULL   NUMBER
     economic_entity            NOT NULL   varchar2(128)  
     continent                             varchar2(20)

まとめ

この記事では、GoldenGate 統合キャプチャを使用して、2 つの異なるリージョンで実行されている RDS for Oracle データベースにリージョン間の災害復旧機能を実装する方法について説明しました。キャプチャが統合された Oracle GoldenGate バージョン 12.1 以上は、設定が簡単で、ネイティブ DDL レプリケーションをサポートしています。またソースまたはターゲット RDS データベースで追加のデータベースオブジェクトを作成する必要はありません。RDS for Oracle の低コストのリージョン間災害復旧機能の実装の詳細については、「DB スナップショットと AWS Lambda を使用した Amazon RDS for Oracle Database でのリージョン間災害復旧」を参照してください。

 


著者について

 

Sameer Malik は、アマゾン ウェブ サービスのプリンシパルデータベースソリューションアーキテクトです

 

 

 

 

Sahil Thapar は、アマゾン ウェブ サービスのエンタープライズソリューションアーキテクトです