Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

TR-4981:『Oracle Active Data Guard Cost Reduction with Amazon FSx ONTAP』

共同作成者

ネットアップ、Niyaz Mohamed、Allen Cao氏

目的

Oracle Data Guardは、プライマリデータベースとスタンバイデータベースのレプリケーション構成内のエンタープライズデータの高可用性、データ保護、ディザスタリカバリを実現します。Oracle Active Data Guardを使用すると、プライマリデータベースからスタンバイデータベースへのデータレプリケーションをアクティブにしながら、ユーザはスタンバイデータベースにアクセスできます。Data GuardはOracle Database Enterprise Editionの機能です。個別のライセンスは必要ありません。一方、Active Data GuardはOracle Database Enterprise Editionオプションであるため、別途ライセンスが必要です。Active Data Guard環境のプライマリデータベースから、複数のスタンバイデータベースからデータレプリケーションを受信できます。ただし、スタンバイデータベースを追加するたびに、Active Data Guardライセンスが必要になり、プライマリデータベースのサイズとしてストレージを追加する必要があります。運用コストはあっという間に増大します。

Oracleデータベースの運用コストを削減したいと考えていて、AWSにActive Data Guardをセットアップする予定がある場合は、別の方法を検討する必要があります。Active Data Guardの代わりに、Data Guardを使用して、プライマリデータベースからAmazon FSx ONTAPストレージ上の単一の物理スタンバイデータベースにレプリケートします。その後、このスタンバイデータベースの複数のコピーをクローニングして読み取り/書き込みアクセス用にオープンし、レポート作成、開発、テストなど、他の多くのユースケースに対応できます。 その結果、Active Data Guardの機能を効果的に提供する一方で、Active Data Guardのライセンスが不要になり、スタンバイデータベースを追加するたびに追加のストレージコストが発生することがなくなります。このドキュメントでは、AWSの既存のプライマリデータベースでOracle Data Guardをセットアップし、物理スタンバイデータベースをAmazon FSx ONTAPストレージに配置する方法を説明します。スタンバイデータベースはSnapshotを使用してバックアップされ、必要に応じて読み取り/書き込みアクセス用にクローニングされます。

この解決策 は、次のユースケースに対応します。

  • AWSの任意のストレージ上のプライマリデータベースからAmazon FSx ONTAPストレージ上のスタンバイデータベースまでの間のOracle Data Guard。

  • データレプリケーション用に閉じた状態でスタンバイデータベースをクローニングし、レポート作成、開発、テストなどのユースケースに対応

対象者

この解決策 は、次のユーザーを対象としています。

  • 高可用性、データ保護、ディザスタリカバリを実現するためにAWSにOracle Active Data GuardをセットアップするDBA。

  • AWSクラウドでのOracleアクティブデータガードの構成に関心をお持ちのデータベース解決策アーキテクト。

  • Oracle Data GuardをサポートするAWS FSx ONTAPストレージを管理するストレージ管理者。

  • AWS FSX/EC2環境でOracle Data Guardを立ち上げたいアプリケーションオーナー。

解決策 のテストおよび検証環境

この解決策のテストと検証は、最終的な導入環境とは異なる可能性があるAWS FSx ONTAPおよびEC2のラボ環境で実行されました。詳細については、を参照してください [Key Factors for Deployment Consideration]

アーキテクチャ

このイメージは、FSxNを使用したAWSでのOracle Data Guardの実装の詳細を示しています。

ハードウェアおよびソフトウェアコンポーネント

* ハードウェア *

FSX ONTAP ストレージ

AWSで提供されている最新バージョン

同じVPCとアベイラビリティゾーンに1つのFSx HAクラスタを配置します

コンピューティングのEC2インスタンス

t2.xlarge / 4vCPU / 16G

3つのEC2 T2 xlarge EC2インスタンス(1つはプライマリDBサーバ、1つはスタンバイDBサーバ、3つ目はクローンDBサーバ)

ソフトウェア

Red Hat Linux

RHEL-8.6.0_HVM-20220503-x86_64-2- Hourly2-gp2の場合

テスト用にRedHatサブスクリプションを導入

Oracle Grid Infrastructureの略

バージョン19.18

RUパッチp34762026_190000_Linux-x86-64.zipを適用しました

Oracle データベース

バージョン19.18

RUパッチp34765931_190000_Linux-x86-64.zipを適用しました

Oracle OPatchの略

バージョン12.2.0.1.36

最新のパッチp6880880_190000_Linux-x86-64.zip

NYからLAへのDRを想定したOracle Data Guard構成

* データベース *

* DB_UNIQUE_NAME *

* Oracle Net Service Name *

プライマリ

DB1_NY

db1_NY.demo.netapp.com

物理スタンバイ

db1_la

db1_LA.demo.netapp.com

導入にあたって考慮すべき主な要因

  • * OracleスタンバイデータベースFlexCloneの仕組み。* AWS FSx ONTAP FlexCloneは、書き込み可能な同じスタンバイデータベースボリュームの共有コピーを提供します。ボリュームのコピーは、クローンで新しい書き込みが開始されるまで、実際には元のデータブロックにリンクするポインタです。次に、ONTAPは新しい書き込み用に新しいストレージブロックを割り当てます。読み取りIOはすべて、アクティブなレプリケーションの元のデータブロックによって処理されます。そのため、クローンは非常にストレージ効率に優れているため、新しい書き込みI/Oに最小限の容量を追加して新しいストレージを割り当てるだけで、他の多くのユースケースにも使用できます。これにより、Active Data Guardストレージの設置面積が大幅に削減され、ストレージコストを大幅に削減できます。NetAppでは、データベースがプライマリストレージからスタンバイFSxストレージに切り替わった場合にFlexCloneの処理を最小限に抑えて、Oracleのパフォーマンスを高いレベルで維持することを推奨しています。

  • * Oracleソフトウェア要件。*一般に、物理スタンバイデータベースは、パッチセット例外(PSE)、重要なパッチアップデート(CPU)など、プライマリデータベースと同じバージョンのDatabase Homeを使用する必要があります。 Oracle Data Guard Standby-First Patch Applyプロセスが進行中でない場合(My Oracle Support note 1265700.1 "support.oracle.com"

  • *スタンバイデータベースディレクトリ構造に関する考慮事項*可能であれば、プライマリシステムとスタンバイシステムのデータファイル、ログファイル、および制御ファイルは同じ名前とパス名を使用し、最適なFlexible Architecture(OFA)命名規則を使用する必要があります。スタンバイデータベースのアーカイブディレクトリも、サイズや構造など、サイト間で同一である必要があります。この戦略により、バックアップ、スイッチオーバー、フェイルオーバーなどの他の操作でも同じ手順を実行できるため、メンテナンスの複雑さが軽減されます。

  • *強制ログモード。*スタンバイデータベースに伝播できないプライマリデータベースのログされていない直接書き込みから保護するには、スタンバイ作成のデータファイルバックアップを実行する前に、プライマリデータベースで強制ログをオンにします。

  • *データベース・ストレージ管理*運用を簡素化するために、Oracle Data Guard構成でOracle Automatic Storage Management(Oracle ASM)およびOracle Managed Files(OMF)をセットアップする場合は、プライマリ・データベースとスタンバイ・データベースで対称的にセットアップすることをお勧めします。

  • * EC2コンピューティングインスタンス。*このテストと検証では、AWS EC2 T2.xlargeインスタンスをOracleデータベースコンピューティングインスタンスとして使用しました。NetAppでは、データベースワークロード向けに最適化されているため、本番環境ではOracleのコンピューティングインスタンスとしてM5タイプのEC2インスタンスを使用することを推奨しています。実際のワークロード要件に基づいて、vCPUの数とRAMの容量に合わせてEC2インスタンスのサイズを適切に設定する必要があります。

  • * FSXストレージHAクラスタのシングルゾーンまたはマルチゾーン展開。*このテストと検証では、FSX HAクラスタを単一のAWSアベイラビリティゾーンに導入しました。本番環境では、FSX HAペアを2つの異なるアベイラビリティゾーンに導入することを推奨します。FSxクラスタは、ストレージレベルの冗長性を提供するために、アクティブ/パッシブファイルシステムのペアで同期ミラーリングされるHAペアで常にプロビジョニングされます。マルチゾーン導入により、単一のAWSゾーンで障害が発生した場合の高可用性がさらに向上します。

  • * FSxストレージクラスタのサイジング。* Amazon FSx for ONTAP ストレージファイルシステムは、SSDの最大16万IOPS、最大4GBpsのスループット、最大192TiBの容量を提供します。ただし、プロビジョニングされたIOPS、スループット、およびストレージ制限(最小1、024GiB)については、導入時の実際の要件に基づいてクラスタのサイジングを行うことができます。アプリケーションの可用性に影響を与えることなく、容量をオンザフライで動的に調整できます。

解決策 の導入

ここでは、Data Guardをセットアップするための出発点として、すでにプライマリOracleデータベースがVPC内のAWS EC2環境に導入されていることを前提としています。プライマリデータベースは、ストレージ管理にOracle ASMを使用して導入されます。 Oracleデータファイル、ログファイル、制御ファイルなど用に、2つのASMディスクグループ(+ dataおよび+ logs)が作成されます。 ASMを使用したAWSへのOracleの導入の詳細については、次のテクニカルレポートを参照してください。

プライマリOracleデータベースは、FSx ONTAPまたはAWS EC2エコシステム内の任意のストレージで実行できます。次のセクションでは、ASMストレージを使用するプライマリEC2 DBインスタンスと、ASMストレージを使用するスタンバイEC2 DBインスタンスの間にOracle Data Guardをセットアップする手順を詳しく説明します。

導入の前提条件

Details

導入には、次の前提条件が必要です。

  1. AWSアカウントが設定され、必要なVPCとネットワークセグメントがAWSアカウント内に作成されている。

  2. AWS EC2コンソールから、最低3つのEC2 Linuxインスタンスを導入する必要があります。1つはプライマリOracle DBインスタンス、1つはスタンバイOracle DBインスタンス、1つはレポート作成、開発、テスト用のクローンターゲットDBインスタンスです。 環境のセットアップの詳細については、前のセクションのアーキテクチャ図を参照してください。AWSについても確認 "Linuxインスタンスのユーザーガイド" を参照してください。

  3. AWS EC2コンソールから、Amazon FSx for ONTAPストレージHAクラスタを導入して、Oracleスタンバイデータベースを格納するOracleボリュームをホストします。FSXストレージの導入に慣れていない場合は、マニュアルを参照してください "ONTAP ファイルシステム用のFSXを作成しています" を参照してください。

  4. 手順2と3は、次のTerraform自動化ツールキットを使用して実行できます。このツールキットでは、という名前のEC2インスタンスが作成されます ora_01 という名前のFSxファイルシステムがあります fsx_01。実行する前に、指示をよく確認し、環境に合わせて変数を変更してください。テンプレートは、独自の導入要件に合わせて簡単に変更できます。

    git clone https://github.com/NetApp-Automation/na_aws_fsx_ec2_deploy.git
メモ Oracleインストールファイルをステージングするための十分なスペースを確保するために、EC2インスタンスのルートボリュームに少なくとも50Gが割り当てられていることを確認してください。

Data Guardのプライマリデータベースの準備

Details

このデモでは、プライマリEC2 DBインスタンスにdb1というプライマリOracleデータベースをセットアップし、2つのASMディスクグループをスタンドアロンで使用します。ASMディスクグループ+データおよびASMディスクグループ+ログのフラッシュリカバリ領域にデータファイルを使用して構成を再起動します。次に、Data Guardのプライマリデータベースを設定するための詳細な手順を示します。すべての手順は、データベース所有者(Oracleユーザ)として実行する必要があります。

  1. プライマリEC2 DBインスタンスIP-172-30-15-45のプライマリデータベースdb1設定。ASMディスクグループは、EC2エコシステム内のあらゆるタイプのストレージに配置できます。

    [oracle@ip-172-30-15-45 ~]$ cat /etc/oratab
    
    # This file is used by ORACLE utilities.  It is created by root.sh
    # and updated by either Database Configuration Assistant while creating
    # a database or ASM Configuration Assistant while creating ASM instance.
    
    # A colon, ':', is used as the field terminator.  A new line terminates
    # the entry.  Lines beginning with a pound sign, '#', are comments.
    #
    # Entries are of the form:
    #   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
    #
    # The first and second fields are the system identifier and home
    # directory of the database respectively.  The third field indicates
    # to the dbstart utility that the database should , "Y", or should not,
    # "N", be brought up at system boot time.
    #
    # Multiple entries with the same $ORACLE_SID are not allowed.
    #
    #
    +ASM:/u01/app/oracle/product/19.0.0/grid:N
    db1:/u01/app/oracle/product/19.0.0/db1:N
    
    [oracle@ip-172-30-15-45 ~]$ /u01/app/oracle/product/19.0.0/grid/bin/crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.DATA.dg
                   ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.LISTENER.lsnr
                   ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.LOGS.dg
                   ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.asm
                   ONLINE  ONLINE       ip-172-30-15-45          Started,STABLE
    ora.ons
                   OFFLINE OFFLINE      ip-172-30-15-45          STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.cssd
          1        ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.db1.db
          1        ONLINE  ONLINE       ip-172-30-15-45          Open,HOME=/u01/app/o
                                                                 racle/product/19.0.0
                                                                 /db1,STABLE
    ora.diskmon
          1        OFFLINE OFFLINE                               STABLE
    ora.driver.afd
          1        ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.evmd
          1        ONLINE  ONLINE       ip-172-30-15-45          STABLE
    --------------------------------------------------------------------------------
  2. sqlplusから、プライマリでの強制ロギングを有効にします。

    alter database force logging;
  3. sqlplusから、プライマリでフラッシュバックを有効にします。Flashbackを使用すると、フェールオーバー後にプライマリデータベースをスタンバイとして簡単に復元できます。

    alter database flashback on;
  4. Oracleパスワードファイルを使用してREDOトランスポート認証を設定します。設定されていない場合は、orapwdユーティリティを使用してプライマリにpwdファイルを作成し、スタンバイデータベースの$ORACLE_HOME/dbsディレクトリにコピーします。

  5. プライマリDBに、現在のオンラインログファイルと同じサイズのスタンバイREDOログを作成します。ロググループは、1つ以上のオンラインログファイルグループです。その後、プライマリデータベースはすぐにスタンバイロールに移行し、必要に応じてREDOデータの受信を開始できます。

    alter database add standby logfile thread 1 size 200M;
    Validate after standby logs addition:
    
    SQL> select group#, type, member from v$logfile;
    
        GROUP# TYPE    MEMBER
    ---------- ------- ------------------------------------------------------------
             3 ONLINE  +DATA/DB1/ONLINELOG/group_3.264.1145821513
             2 ONLINE  +DATA/DB1/ONLINELOG/group_2.263.1145821513
             1 ONLINE  +DATA/DB1/ONLINELOG/group_1.262.1145821513
             4 STANDBY +DATA/DB1/ONLINELOG/group_4.286.1146082751
             4 STANDBY +LOGS/DB1/ONLINELOG/group_4.258.1146082753
             5 STANDBY +DATA/DB1/ONLINELOG/group_5.287.1146082819
             5 STANDBY +LOGS/DB1/ONLINELOG/group_5.260.1146082821
             6 STANDBY +DATA/DB1/ONLINELOG/group_6.288.1146082825
             6 STANDBY +LOGS/DB1/ONLINELOG/group_6.261.1146082827
             7 STANDBY +DATA/DB1/ONLINELOG/group_7.289.1146082835
             7 STANDBY +LOGS/DB1/ONLINELOG/group_7.262.1146082835
    
    11 rows selected.
  6. sqlplusから'spfileからpfileを作成して編集します

    create pfile='/home/oracle/initdb1.ora' from spfile;
  7. pfileを修正し、次のパラメータを追加します。

    DB_NAME=db1
    DB_UNIQUE_NAME=db1_NY
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(db1_NY,db1_LA)'
    LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=db1_NY'
    LOG_ARCHIVE_DEST_2='SERVICE=db1_LA ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=db1_LA'
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
    FAL_SERVER=db1_LA
    STANDBY_FILE_MANAGEMENT=AUTO
  8. sqlplusから、/home/oracleディレクトリ内の改訂されたpfileからASM+データディレクトリにspfileを作成します。

    create spfile='+DATA' from pfile='/home/oracle/initdb1.ora';
  9. (必要に応じてasmcmdユーティリティを使用して)+dataディスクグループの下に新しく作成されたspfileを探します。次に示すように、srvctlを使用してgridを変更し、新しいspfileからデータベースを開始します。

    [oracle@ip-172-30-15-45 db1]$ srvctl config database -d db1
    Database unique name: db1
    Database name: db1
    Oracle home: /u01/app/oracle/product/19.0.0/db1
    Oracle user: oracle
    Spfile: +DATA/DB1/PARAMETERFILE/spfile.270.1145822903
    Password file:
    Domain: demo.netapp.com
    Start options: open
    Stop options: immediate
    Database role: PRIMARY
    Management policy: AUTOMATIC
    Disk Groups: DATA
    Services:
    OSDBA group:
    OSOPER group:
    Database instance: db1
    [oracle@ip-172-30-15-45 db1]$ srvctl modify database -d db1 -spfile +DATA/DB1/PARAMETERFILE/spfiledb1.ora
    [oracle@ip-172-30-15-45 db1]$ srvctl config database -d db1
    Database unique name: db1
    Database name: db1
    Oracle home: /u01/app/oracle/product/19.0.0/db1
    Oracle user: oracle
    Spfile: +DATA/DB1/PARAMETERFILE/spfiledb1.ora
    Password file:
    Domain: demo.netapp.com
    Start options: open
    Stop options: immediate
    Database role: PRIMARY
    Management policy: AUTOMATIC
    Disk Groups: DATA
    Services:
    OSDBA group:
    OSOPER group:
    Database instance: db1
  10. tnsnames.oraを変更して、名前解決のためにdb_unique_nameを追加します。

    # tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/db1/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    db1_NY =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SID = db1)
        )
      )
    
    db1_LA =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-67.ec2.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SID = db1)
        )
      )
    
    LISTENER_DB1 =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521))
  11. プライマリデータベースのデータガードサービス名db1_NY_DGMGRL.demo.netappをlistener.oraファイルに追加します。

#Backup file is  /u01/app/oracle/crsdata/ip-172-30-15-45/output/listener.ora.bak.ip-172-30-15-45.oracle line added by Agent
# listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = db1_NY_DGMGRL.demo.netapp.com)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/db1)
      (SID_NAME = db1)
    )
  )

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON            # line added by Agent
  1. srvctlを使用してデータベースをシャットダウンして再起動し、データガードパラメータがアクティブになったことを確認します。

    srvctl stop database -d db1
    srvctl start database -d db1

これで、Data Guardのプライマリデータベースのセットアップは完了です。

スタンバイデータベースの準備とData Guardのアクティブ化

Details

Oracle Data Guardを使用するには、OSカーネル構成とOracleソフトウェアスタック(スタンバイEC2 DBインスタンスにパッチセットを含む)がプライマリEC2 DBインスタンスと一致する必要があります。管理と簡易性を容易にするために、スタンバイEC2 DBインスタンスデータベースのストレージ構成は、ASMディスクグループの名前、数、サイズなど、プライマリEC2 DBインスタンスと同じにすることが理想的です。以下は、Data GuardのスタンバイEC2 DBインスタンスを設定するための詳細な手順です。すべてのコマンドは、Oracleの所有者ユーザIDとして実行する必要があります。

  1. まず、プライマリEC2インスタンスのプライマリデータベースの設定を確認します。このデモでは、プライマリEC2 DBインスタンスにdb1という名前のプライマリOracleデータベースをセットアップし、2つのASMディスクグループ+ dataおよび+ logsをスタンドアロンの再起動構成で使用します。プライマリASMディスクグループは、EC2エコシステム内のあらゆるタイプのストレージに配置できます。

  2. ドキュメントの手順に従う "TR-4965:『Oracle Database Deployment and Protection in AWS FSX/EC2 with iSCSI/ASM』" プライマリデータベースと一致するように、スタンバイEC2 DBインスタンスにグリッドとOracleをインストールして設定します。データベースストレージは、プライマリEC2 DBインスタンスと同じストレージ容量で、FSx ONTAPからスタンバイEC2 DBインスタンスにプロビジョニングして割り当てる必要があります。

    メモ の手順10で停止します。 Oracle database installation セクション。スタンバイデータベースは、dbcaデータベース複製機能を使用してプライマリデータベースからインスタンス化されます。
  3. Oracleソフトウェアをインストールして設定したら、スタンバイ$ORACLE_HOME dbsディレクトリからプライマリデータベースからOracleパスワードをコピーします。

    scp oracle@172.30.15.45:/u01/app/oracle/product/19.0.0/db1/dbs/orapwdb1 .
  4. 次のエントリを含むtnsnames.oraファイルを作成します。

    # tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/db1/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    db1_NY =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SID = db1)
        )
      )
    
    db1_LA =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-67.ec2.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SID = db1)
        )
      )
  5. DBデータガードサービス名をlistener.oraファイルに追加します。

    #Backup file is  /u01/app/oracle/crsdata/ip-172-30-15-67/output/listener.ora.bak.ip-172-30-15-67.oracle line added by Agent
    # listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/grid/network/admin/listener.ora
    # Generated by Oracle configuration tools.
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-67.ec2.internal)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = db1_LA_DGMGRL.demo.netapp.com)
          (ORACLE_HOME = /u01/app/oracle/product/19.0.0/db1)
          (SID_NAME = db1)
        )
      )
    
    ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent
    VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON            # line added by Agent
  6. Oracleのホームとパスを設定します。

    export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db1
    export PATH=$PATH:$ORACLE_HOME/bin
  7. dbcaを使用して、プライマリデータベースdb1からスタンバイデータベースをインスタンス化します。

    [oracle@ip-172-30-15-67 bin]$ dbca -silent -createDuplicateDB -gdbName db1 -primaryDBConnectionString ip-172-30-15-45.ec2.internal:1521/db1_NY.demo.netapp.com -sid db1 -initParams fal_server=db1_NY -createAsStandby -dbUniqueName db1_LA
    Enter SYS user password:
    
    Prepare for db operation
    22% complete
    Listener config step
    44% complete
    Auxiliary instance creation
    67% complete
    RMAN duplicate
    89% complete
    Post duplicate database operations
    100% complete
    
    Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/db1_LA/db1_LA.log" for further details.
  8. 複製されたスタンバイデータベースを検証します。新しく複製されたスタンバイデータベースは、最初は読み取り専用モードで開きます。

    [oracle@ip-172-30-15-67 bin]$ export ORACLE_SID=db1
    [oracle@ip-172-30-15-67 bin]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 30 18:25:46 2023
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2022, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.18.0.0.0
    
    SQL> select name, open_mode from v$database;
    
    NAME      OPEN_MODE
    --------- --------------------
    DB1       READ ONLY
    
    SQL> show parameter name
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    cdb_cluster_name                     string
    cell_offloadgroup_name               string
    db_file_name_convert                 string
    db_name                              string      db1
    db_unique_name                       string      db1_LA
    global_names                         boolean     FALSE
    instance_name                        string      db1
    lock_name_space                      string
    log_file_name_convert                string
    pdb_file_name_convert                string
    processor_group_name                 string
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    service_names                        string      db1_LA.demo.netapp.com
    SQL>
    SQL> show parameter log_archive_config
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_config                   string      DG_CONFIG=(db1_NY,db1_LA)
    SQL> show parameter fal_server
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    fal_server                           string      db1_NY
    
    SQL> select name from v$datafile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/DB1_LA/DATAFILE/system.261.1146248215
    +DATA/DB1_LA/DATAFILE/sysaux.262.1146248231
    +DATA/DB1_LA/DATAFILE/undotbs1.263.1146248247
    +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/DATAFILE/system.264.1146248253
    +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/DATAFILE/sysaux.265.1146248261
    +DATA/DB1_LA/DATAFILE/users.266.1146248267
    +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/DATAFILE/undotbs1.267.1146248269
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/system.268.1146248271
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/sysaux.269.1146248279
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/undotbs1.270.1146248285
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/users.271.1146248293
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/system.272.1146248295
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/sysaux.273.1146248301
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/undotbs1.274.1146248309
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/users.275.1146248315
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/system.276.1146248317
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/sysaux.277.1146248323
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/undotbs1.278.1146248331
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/users.279.1146248337
    
    19 rows selected.
    
    SQL> select name from v$controlfile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/DB1_LA/CONTROLFILE/current.260.1146248209
    +LOGS/DB1_LA/CONTROLFILE/current.257.1146248209
    
    SQL> select name from v$tempfile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/DB1_LA/TEMPFILE/temp.287.1146248371
    +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/TEMPFILE/temp.288.1146248375
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/TEMPFILE/temp.290.1146248463
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/TEMPFILE/temp.291.1146248463
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/TEMPFILE/temp.292.1146248463
    
    SQL> select group#, type, member from v$logfile order by 2, 1;
    
        GROUP# TYPE    MEMBER
    ---------- ------- ------------------------------------------------------------
             1 ONLINE  +LOGS/DB1_LA/ONLINELOG/group_1.259.1146248349
             1 ONLINE  +DATA/DB1_LA/ONLINELOG/group_1.280.1146248347
             2 ONLINE  +DATA/DB1_LA/ONLINELOG/group_2.281.1146248351
             2 ONLINE  +LOGS/DB1_LA/ONLINELOG/group_2.258.1146248353
             3 ONLINE  +DATA/DB1_LA/ONLINELOG/group_3.282.1146248355
             3 ONLINE  +LOGS/DB1_LA/ONLINELOG/group_3.260.1146248355
             4 STANDBY +DATA/DB1_LA/ONLINELOG/group_4.283.1146248357
             4 STANDBY +LOGS/DB1_LA/ONLINELOG/group_4.261.1146248359
             5 STANDBY +DATA/DB1_LA/ONLINELOG/group_5.284.1146248361
             5 STANDBY +LOGS/DB1_LA/ONLINELOG/group_5.262.1146248363
             6 STANDBY +LOGS/DB1_LA/ONLINELOG/group_6.263.1146248365
             6 STANDBY +DATA/DB1_LA/ONLINELOG/group_6.285.1146248365
             7 STANDBY +LOGS/DB1_LA/ONLINELOG/group_7.264.1146248369
             7 STANDBY +DATA/DB1_LA/ONLINELOG/group_7.286.1146248367
    
    14 rows selected.
    
    SQL> select name, open_mode from v$database;
    
    NAME      OPEN_MODE
    --------- --------------------
    DB1       READ ONLY
  9. でスタンバイデータベースを再起動します。 mount 次のコマンドをステージングして実行し、スタンバイデータベース管理リカバリをアクティブにします。

    alter database recover managed standby database disconnect from session;
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount;
    ORACLE instance started.
    
    Total System Global Area 8053062944 bytes
    Fixed Size                  9182496 bytes
    Variable Size            1291845632 bytes
    Database Buffers         6744440832 bytes
    Redo Buffers                7593984 bytes
    Database mounted.
    SQL> alter database recover managed standby database disconnect from session;
    
    Database altered.
  10. スタンバイデータベースのリカバリステータスを検証します。ここで、 recovery logmerger インチ APPLYING_LOG アクション。

    SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;
    
    ROLE                        THREAD#  SEQUENCE# ACTION
    ------------------------ ---------- ---------- ------------
    recovery apply slave              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery logmerger                1         30 APPLYING_LOG
    RFS ping                          1         30 IDLE
    RFS async                         1         30 IDLE
    archive redo                      0          0 IDLE
    archive redo                      0          0 IDLE
    archive redo                      0          0 IDLE
    gap manager                       0          0 IDLE
    
    ROLE                        THREAD#  SEQUENCE# ACTION
    ------------------------ ---------- ---------- ------------
    managed recovery                  0          0 IDLE
    redo transport monitor            0          0 IDLE
    log writer                        0          0 IDLE
    archive local                     0          0 IDLE
    redo transport timer              0          0 IDLE
    
    16 rows selected.
    
    SQL>

これで、管理スタンバイリカバリを有効にした状態で、db1のプライマリからスタンバイへのData Guard保護のセットアップは完了です。

Data Guardブローカーのセットアップ

Details

Oracle Data Guardブローカーは、Oracle Data Guard構成の作成、メンテナンス、監視を自動化して一元化する分散管理フレームワークです。次のセクションでは、Data Guard環境を管理するためのData Guardブローカーのセットアップ方法を示します。

  1. sqlplusを使用して次のコマンドを実行し、プライマリデータベースとスタンバイデータベースの両方でデータガードブローカーを起動します。

    alter system set dg_broker_start=true scope=both;
  2. プライマリデータベースから、SYSDBAとしてData Guard Borkerに接続します。

    [oracle@ip-172-30-15-45 db1]$ dgmgrl sys@db1_NY
    DGMGRL for Linux: Release 19.0.0.0.0 - Production on Wed Aug 30 19:34:14 2023
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
    
    Welcome to DGMGRL, type "help" for information.
    Password:
    Connected to "db1_NY"
    Connected as SYSDBA.
  3. Data Guardブローカー設定を作成して有効にします。

    DGMGRL> create configuration dg_config as primary database is db1_NY connect identifier is db1_NY;
    Configuration "dg_config" created with primary database "db1_ny"
    DGMGRL> add database db1_LA as connect identifier is db1_LA;
    Database "db1_la" added
    DGMGRL> enable configuration;
    Enabled.
    DGMGRL> show configuration;
    
    Configuration - dg_config
    
      Protection Mode: MaxPerformance
      Members:
      db1_ny - Primary database
        db1_la - Physical standby database
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 28 seconds ago)
  4. Data Guard Broker管理フレームワーク内でデータベースのステータスを検証

    DGMGRL> show database db1_ny;
    
    Database - db1_ny
    
      Role:               PRIMARY
      Intended State:     TRANSPORT-ON
      Instance(s):
        db1
    
    Database Status:
    SUCCESS
    
    DGMGRL> show database db1_la;
    
    Database - db1_la
    
      Role:               PHYSICAL STANDBY
      Intended State:     APPLY-ON
      Transport Lag:      0 seconds (computed 1 second ago)
      Apply Lag:          0 seconds (computed 1 second ago)
      Average Apply Rate: 2.00 KByte/s
      Real Time Query:    OFF
      Instance(s):
        db1
    
    Database Status:
    SUCCESS
    
    DGMGRL>

障害が発生した場合は、Data Guard Brokerを使用して、プライマリデータベースを瞬時にスタンバイデータベースにフェイルオーバーできます。

他のユースケースでのスタンバイデータベースのクローニング

Details

Data GuardのAWS FSx ONTAPでスタンバイデータベースをステージングする主なメリットは、最小限の追加ストレージ投資で他の多くのユースケースに対応できることです。次のセクションでは、FSx ONTAPで、マウントされたスタンバイデータベースボリュームとリカバリ対象スタンバイデータベースボリュームを、開発、テスト、レポートなどの他の目的のためにスナップショット作成およびクローニングする方法を説明します。 NetApp SnapCenterツールを使用する。

次に、SnapCenterを使用してData Guardの管理対象物理スタンバイデータベースから読み取り/書き込みデータベースをクローニングする手順の概要を示します。SnapCenterのセットアップおよび設定方法の詳細については、を参照してください。 "SnapCenter を使用したハイブリッドクラウドデータベースソリューション" 関連Oracleセクション。

  1. まず、テストテーブルを作成し、プライマリデータベースのテストテーブルに行を挿入します。次に、トランザクションがスタンバイにトラバースするかどうかを検証し、最後にクローンを検証します。

    [oracle@ip-172-30-15-45 db1]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Thu Aug 31 16:35:53 2023
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2022, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.18.0.0.0
    
    SQL> alter session set container=db1_pdb1;
    
    Session altered.
    
    SQL> create table test(
      2  id integer,
      3  dt timestamp,
      4  event varchar(100));
    
    Table created.
    
    SQL> insert into test values(1, sysdate, 'a test transaction on primary database db1 and ec2 db host: ip-172-30-15-45.ec2.internal');
    
    1 row created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> select * from test;
    
            ID
    ----------
    DT
    ---------------------------------------------------------------------------
    EVENT
    --------------------------------------------------------------------------------
             1
    31-AUG-23 04.49.29.000000 PM
    a test transaction on primary database db1 and ec2 db host: ip-172-30-15-45.ec2.
    internal
    
    SQL> select instance_name, host_name from v$instance;
    
    INSTANCE_NAME
    ----------------
    HOST_NAME
    ----------------------------------------------------------------
    db1
    ip-172-30-15-45.ec2.internal
  2. FSxストレージクラスタを Storage Systems FSxクラスタ管理IPとfsxadminクレデンシャルを使用するSnapCenterの場合。

    GUIでのこの手順を示すスクリーンショット。
  3. AWS EC2-userをに追加 Credential インチ Settings

    GUIでのこの手順を示すスクリーンショット。
  4. スタンバイEC2 DBインスタンスの追加とクローンEC2 DBインスタンスの追加: Hosts

    GUIでのこの手順を示すスクリーンショット。
    メモ クローンEC2 DBインスタンスには、同様のOracleソフトウェアスタックがインストールおよび設定されている必要があります。このテストケースでは、グリッドインフラとOracle 19Cをインストールして設定しましたが、データベースは作成されませんでした。
  5. オフライン/フルデータベースバックアップのマウント用にカスタマイズしたバックアップポリシーを作成します。

    GUIでのこの手順を示すスクリーンショット。
  6. バックアップポリシーを適用してスタンバイデータベースを保護 Resources タブ。

    GUIでのこの手順を示すスクリーンショット。
  7. データベース名をクリックすると、データベースバックアップのページが開きます。データベースクローンに使用するバックアップを選択し、 Clone ボタンをクリックしてクローニングワークフローを起動します。

    GUIでのこの手順を示すスクリーンショット。
  8. 選択するオプション Complete Database Clone クローンインスタンスにSIDという名前を付けます。

    GUIでのこの手順を示すスクリーンショット。
  9. クローンホストを選択します。このホストは、クローンデータベースをスタンバイDBからホストします。データファイル、制御ファイル、およびREDOログはデフォルトのままにします。クローンホストに、スタンバイデータベースのディスクグループに対応する2つのASMディスクグループが作成されます。

    GUIでのこの手順を示すスクリーンショット。
  10. OSベースの認証にはデータベースクレデンシャルは必要ありません。Oracleホーム設定を、クローンEC2データベースインスタンスに設定されている設定と照合します。

    GUIでのこの手順を示すスクリーンショット。
  11. 必要に応じてクローンデータベースのパラメータを変更し、Cloenの前に実行するスクリプトを指定します。

    GUIでのこの手順を示すスクリーンショット。
  12. 「SQL to run after clone」と入力します。デモでは、dev/test/reportデータベースのデータベースアーカイブモードをオフにするコマンドを実行しました。

    GUIでのこの手順を示すスクリーンショット。
  13. 必要に応じてEメール通知を設定します。

    GUIでのこの手順を示すスクリーンショット。
  14. 概要を確認し、 Finish をクリックしてクローンを開始します。

    GUIでのこの手順を示すスクリーンショット。
  15. クローニングジョブの監視 Monitor タブ。データベースのボリュームサイズでは、約300GBのデータベースをクローニングするのに約8分かかったことがわかりました。

    GUIでのこの手順を示すスクリーンショット。
  16. にすぐに登録されているSnapCenterからクローンデータベースを検証します。 Resources タブをクリックします。

    GUIでのこの手順を示すスクリーンショット。
  17. クローンEC2インスタンスからクローンデータベースを照会します。プライマリデータベースで発生したテストトランザクションが、データベースをクローニングするまでトラバースされたことを検証しました。

    [oracle@ip-172-30-15-126 ~]$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dev
    [oracle@ip-172-30-15-126 ~]$ export ORACLE_SID=db1dev
    [oracle@ip-172-30-15-126 ~]$ export PATH=$PATH:$ORACLE_HOME/bin
    [oracle@ip-172-30-15-126 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 6 16:41:41 2023
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2022, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.18.0.0.0
    
    SQL> select name, open_mode, log_mode from v$database;
    
    NAME      OPEN_MODE            LOG_MODE
    --------- -------------------- ------------
    DB1DEV    READ WRITE           NOARCHIVELOG
    
    SQL> select instance_name, host_name from v$instance;
    
    INSTANCE_NAME
    ----------------
    HOST_NAME
    ----------------------------------------------------------------
    db1dev
    ip-172-30-15-126.ec2.internal
    
    SQL> alter session set container=db1_pdb1;
    
    Session altered.
    
    SQL> select * from test;
    
            ID
    ----------
    DT
    ---------------------------------------------------------------------------
    EVENT
    --------------------------------------------------------------------------------
             1
    31-AUG-23 04.49.29.000000 PM
    a test transaction on primary database db1 and ec2 db host: ip-172-30-15-45.ec2.
    internal
    
    
    SQL>

これで、FSxストレージ上のData Guard内のスタンバイデータベースから新しいOracleデータベースをクローニングして検証し、開発、テスト、レポートなどのユースケースに対応できるようになります。Data Guardの同じスタンバイデータベースから、複数のOracleデータベースをクローニングできます。