TR-4981:『Oracle Active Data Guard Cost Reduction with Amazon FSx ONTAP』
ネットアップ、Niyaz Mohamed、Allen Cao氏
この解決策では、AWS FSx ONTAPをスタンバイサイトのOracleデータベースストレージとして使用してOracle Data Guardを構成し、AWSでOracle Data Guard HA / DR解決策のライセンスコストと運用コストを削減するための概要と詳細について説明します。
目的
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のラボ環境で実行されました。詳細については、を参照してください 導入にあたって考慮すべき主な要因。
アーキテクチャ
ハードウェアおよびソフトウェアコンポーネント
* ハードウェア * |
||
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 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
導入には、次の前提条件が必要です。
-
AWSアカウントが設定され、必要なVPCとネットワークセグメントがAWSアカウント内に作成されている。
-
AWS EC2コンソールから、最低3つのEC2 Linuxインスタンスを導入する必要があります。1つはプライマリOracle DBインスタンス、1つはスタンバイOracle DBインスタンス、1つはレポート作成、開発、テスト用のクローンターゲットDBインスタンスです。 環境のセットアップの詳細については、前のセクションのアーキテクチャ図を参照してください。AWSについても確認 "Linuxインスタンスのユーザーガイド" を参照してください。
-
AWS EC2コンソールから、Amazon FSx ONTAPストレージHAクラスタを導入して、Oracleスタンバイデータベースを格納するOracleボリュームをホストします。FSxストレージの導入に慣れていない場合は、ステップバイステップの手順についてドキュメントを参照してください"FSx ONTAPファイルシステムの作成"。
-
手順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ユーザ)として実行する必要があります。
-
プライマリ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 --------------------------------------------------------------------------------
-
sqlplusから、プライマリでの強制ロギングを有効にします。
alter database force logging;
-
sqlplusから、プライマリでフラッシュバックを有効にします。Flashbackを使用すると、フェールオーバー後にプライマリデータベースをスタンバイとして簡単に復元できます。
alter database flashback on;
-
Oracleパスワードファイルを使用してREDOトランスポート認証を設定します。設定されていない場合は、orapwdユーティリティを使用してプライマリにpwdファイルを作成し、スタンバイデータベースの$ORACLE_HOME/dbsディレクトリにコピーします。
-
プライマリ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.
-
sqlplusから'spfileからpfileを作成して編集します
create pfile='/home/oracle/initdb1.ora' from spfile;
-
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
-
sqlplusから、/home/oracleディレクトリ内の改訂されたpfileからASM+データディレクトリにspfileを作成します。
create spfile='+DATA' from pfile='/home/oracle/initdb1.ora';
-
(必要に応じて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
-
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))
-
プライマリデータベースのデータガードサービス名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
-
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として実行する必要があります。
-
まず、プライマリEC2インスタンスのプライマリデータベースの設定を確認します。このデモでは、プライマリEC2 DBインスタンスにdb1という名前のプライマリOracleデータベースをセットアップし、2つのASMディスクグループ+ dataおよび+ logsをスタンドアロンの再起動構成で使用します。プライマリASMディスクグループは、EC2エコシステム内のあらゆるタイプのストレージに配置できます。
-
ドキュメントの手順に従う "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データベース複製機能を使用してプライマリデータベースからインスタンス化されます。 -
Oracleソフトウェアをインストールして設定したら、スタンバイ$ORACLE_HOME dbsディレクトリからプライマリデータベースからOracleパスワードをコピーします。
scp oracle@172.30.15.45:/u01/app/oracle/product/19.0.0/db1/dbs/orapwdb1 .
-
次のエントリを含む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) ) )
-
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
-
Oracleのホームとパスを設定します。
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db1
export PATH=$PATH:$ORACLE_HOME/bin
-
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.
-
複製されたスタンバイデータベースを検証します。新しく複製されたスタンバイデータベースは、最初は読み取り専用モードで開きます。
[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
-
でスタンバイデータベースを再起動します。
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.
-
スタンバイデータベースのリカバリステータスを検証します。ここで、
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ブローカーのセットアップ方法を示します。
-
sqlplusを使用して次のコマンドを実行し、プライマリデータベースとスタンバイデータベースの両方でデータガードブローカーを起動します。
alter system set dg_broker_start=true scope=both;
-
プライマリデータベースから、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.
-
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)
-
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セクション。
-
まず、テストテーブルを作成し、プライマリデータベースのテストテーブルに行を挿入します。次に、トランザクションがスタンバイにトラバースするかどうかを検証し、最後にクローンを検証します。
[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
-
FSxストレージクラスタを
Storage Systems
FSxクラスタ管理IPとfsxadminクレデンシャルを使用するSnapCenterの場合。 -
AWS EC2-userをに追加
Credential
インチSettings
。 -
スタンバイEC2 DBインスタンスの追加とクローンEC2 DBインスタンスの追加:
Hosts
。クローンEC2 DBインスタンスには、同様のOracleソフトウェアスタックがインストールおよび設定されている必要があります。このテストケースでは、グリッドインフラとOracle 19Cをインストールして設定しましたが、データベースは作成されませんでした。 -
オフライン/フルデータベースバックアップのマウント用にカスタマイズしたバックアップポリシーを作成します。
-
バックアップポリシーを適用してスタンバイデータベースを保護
Resources
タブ。 -
データベース名をクリックすると、データベースバックアップのページが開きます。データベースクローンに使用するバックアップを選択し、
Clone
ボタンをクリックしてクローニングワークフローを起動します。 -
選択するオプション
Complete Database Clone
クローンインスタンスにSIDという名前を付けます。 -
クローンホストを選択します。このホストは、クローンデータベースをスタンバイDBからホストします。データファイル、制御ファイル、およびREDOログはデフォルトのままにします。クローンホストに、スタンバイデータベースのディスクグループに対応する2つのASMディスクグループが作成されます。
-
OSベースの認証にはデータベースクレデンシャルは必要ありません。Oracleホーム設定を、クローンEC2データベースインスタンスに設定されている設定と照合します。
-
必要に応じてクローンデータベースのパラメータを変更し、Cloenの前に実行するスクリプトを指定します。
-
「SQL to run after clone」と入力します。デモでは、dev/test/reportデータベースのデータベースアーカイブモードをオフにするコマンドを実行しました。
-
必要に応じてEメール通知を設定します。
-
概要を確認し、
Finish
をクリックしてクローンを開始します。 -
クローニングジョブの監視
Monitor
タブ。データベースのボリュームサイズでは、約300GBのデータベースをクローニングするのに約8分かかったことがわかりました。 -
にすぐに登録されているSnapCenterからクローンデータベースを検証します。
Resources
タブをクリックします。 -
クローン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データベースをクローニングできます。
追加情報の参照先
このドキュメントに記載されている情報の詳細については、以下のドキュメントや Web サイトを参照してください。
-
Data Guardの概念と管理
-
WP-7357:『Oracle Database Deployment on EC2 and FSx Best Practices』
-
Amazon FSx ONTAP
-
Amazon EC2