TR-5002:『Oracle Active Data Guard Cost Reduction with Azure NetApp Files』
ネットアップ、Niyaz Mohamed、Allen Cao氏
このソリューションでは、AzureクラウドでOracle Data Guard HA / DRソリューションのライセンスコストと運用コストを削減するために、Microsoft Azure NetApp Files(ANF)をプライマリおよびスタンバイデータベースストレージとして使用してOracle Data Guardを設定する方法の概要と詳細について説明します。
目的
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データベースの運用コストを削減したいと考えていて、AzureクラウドにActive Data Guardをセットアップする予定がある場合は、別の方法を検討してください。プライマリデータベースからAzure NetApp Filesストレージ上の単一の物理スタンバイデータベースにレプリケートする場合は、Active Data Guardの代わりにData Guardを使用します。その後、このスタンバイデータベースの複数のコピーをクローニングして読み取り/書き込みアクセス用にオープンし、レポート作成、開発、テストなど、他の多くのユースケースに対応できます。最終的な結果は、Active Data Guardの機能を効果的に提供しながら、Active Data Guardのライセンスを不要にします。このドキュメントでは、ANFストレージ上の既存のプライマリデータベースおよび物理スタンバイデータベースを使用してOracle Data Guardをセットアップする方法を説明します。スタンバイデータベースは、必要に応じてNetApp SnapCenterデータベース管理ツールを使用して、読み取り/書き込みアクセス用にバックアップおよびクローニングされます。また、NetAppソリューションエンジニアリングチームは、ユーザの介入を必要とせずに、完全かつ自動化されたデータベースクローンライフサイクル管理を実現するための自動化ツールキットも提供しています。
この解決策 は、次のユースケースに対応します。
-
複数のAzureリージョンにわたるMicrosoft Azure NetApp Filesストレージ上のプライマリデータベースと物理スタンバイデータベースの間にOracle Data Guardを実装します。
-
レポート作成、開発、テストなどのユースケースに対応するために、物理スタンバイデータベースのバックアップとクローニングを行います。
-
自動化によるOracleデータベースのクローン更新ライフサイクル管理
対象者
この解決策 は、次のユーザーを対象としています。
-
高可用性、データ保護、ディザスタリカバリを実現するためにAzureクラウドにOracle Active Data GuardをセットアップするDBAです。
-
AzureクラウドでのOracle Active Data Guardの構成に関心をお持ちのデータベースソリューションアーキテクト。
-
Oracle Data GuardをサポートするAzure NetApp Filesストレージを管理するストレージ管理者。
-
Azureクラウド環境でOracle Data Guardを立ち上げることを好むアプリケーション所有者。
解決策 のテストおよび検証環境
このソリューションのテストと検証は、実際のユーザ導入環境とは一致しない可能性があるAzureクラウドラボ環境で実行されました。詳細については、を参照してください 導入にあたって考慮すべき主な要因。
アーキテクチャ
ハードウェアおよびソフトウェアコンポーネント
* ハードウェア * |
||
Azure NetApp Files の特長 |
Microsoftが提供する最新バージョン |
3TiB容量プール×2、Standardサービスレベル、自動QoS |
DBサーバ用Azure VM |
標準B4ミリ秒(vCPU×4、メモリ:16GiB) |
3つのDB VM(1つはプライマリDBサーバ、1つはスタンバイDBサーバ、3つ目はクローンDBサーバ) |
ソフトウェア |
||
Red Hat Linux |
Red Hat Enterprise Linux 8.6(LVM)- x64 Gen2 |
テスト用にRedHatサブスクリプションを導入 |
Oracle データベース |
バージョン19.18 |
RUパッチp34765931_190000_Linux-x86-64.zipを適用しました |
Oracle OPatchの略 |
バージョン12.2.0.1.36 |
最新のパッチp6880880_190000_Linux-x86-64.zip |
SnapCenter |
バージョン6.0.1 |
ビルド6.0.1.4487 |
NFS |
バージョン 3.0 以降 |
OracleでDNFSが有効 |
NYからLAへのDRを想定したOracle Data Guard構成
* データベース * |
* DB_UNIQUE_NAME * |
* Oracle Net Service Name * |
プライマリ |
NTAP_NY |
NTAP_NY.internal.cloudapp.net |
スタンバイ |
NTAP_LA |
NTAP_LA.internal.cloudapp.net |
導入にあたって考慮すべき主な要因
-
*スタンバイデータベースクローン*プライマリデータベースからトランザクションログを受信して適用する際に、物理スタンバイデータベースのクローンを作成してDB VMにマウントすることで、開発、テスト、レポートなどの他のワークロードをサポートできます。クローンは、シンクローンでもシッククローンでもかまいません。現時点では、ANFでサポートされるのは、スタンバイデータベースのフルコピーであるシッククローンのみです。ANFシンクローンオプションはまもなくリリースされます。データベースボリュームのシンクローニングコピーの場合、スタンバイデータベースの同じDBボリュームを共有し、copy-on-writeテクノロジを使用して書き込みI/Oに対応します。そのため、クローンは非常にストレージ効率に優れているため、新しい書き込みI/Oに最小限の容量を追加して新しいストレージを割り当てるだけで、他の多くのユースケースにも使用できます。これにより、Active Data Guardストレージの設置面積が大幅に削減され、ストレージコストを大幅に削減できます。NetAppでは、データベースがプライマリストレージからスタンバイANFストレージに切り替わった場合にFlexCloneの処理を最小限に抑えて、高いレベルのパフォーマンスを維持することを推奨しています。
-
* Oracleソフトウェア要件。*一般に、物理スタンバイデータベースは、パッチセット例外(PSE)、重要なパッチアップデート(CPU)など、プライマリデータベースと同じバージョンのDatabase Homeを使用する必要があります。 Oracle Data Guard Standby-First Patch Applyプロセスが進行中でない場合(My Oracle Support note 1265700.1 "support.oracle.com"
-
*スタンバイデータベースディレクトリ構造に関する考慮事項*可能であれば、プライマリシステムとスタンバイシステムのデータファイル、ログファイル、および制御ファイルは同じ名前とパス名を使用し、最適なFlexible Architecture(OFA)命名規則を使用する必要があります。スタンバイデータベースのアーカイブディレクトリも、サイズや構造など、サイト間で同一である必要があります。この戦略により、バックアップ、スイッチオーバー、フェイルオーバーなどの他の操作でも同じ手順を実行できるため、メンテナンスの複雑さが軽減されます。
-
*強制ログモード。*スタンバイデータベースに伝播できないプライマリデータベースのログされていない直接書き込みから保護するには、スタンバイ作成のデータファイルバックアップを実行する前に、プライマリデータベースで強制ログをオンにします。
-
* Azure VMのサイジング*今回のテストと検証では、4つのvCPUと16GiBメモリを搭載したAzure VM-Standard_B4msを使用しました。実際のワークロード要件に基づいて、vCPUの数とRAMの容量に合わせてAzure DB VMのサイズを適切に設定する必要があります。
-
* Azure NetApp Files構成*Azure NetApp Filesは、Azure NetAppストレージアカウントでとして割り当てられ `Capacity Pools`ます。今回のテストと検証では、東部リージョンでOracleプライマリをホストし、西部2リージョンでスタンバイデータベースをホストするために3TiBの容量プールを導入しました。ANF容量プールには、Standard、Premium、Ultraという3つのサービスレベルがあります。 ANF容量プールのIO容量は、容量プールのサイズとそのサービスレベルに基づきます。本番環境ではNetApp、Oracleデータベースのスループット要件を完全に評価し、それに応じてデータベース容量プールをサイジングすることを推奨します。容量プールの作成時に、QoSを[Auto]または[Manual]に設定し、保存データの暗号化を[Single]または[Double]に設定できます。
-
* dNFS構成*ANFストレージを備えたAzure仮想マシンで実行されるOracleデータベースでは、dNFSを使用することで、ネイティブのNFSクライアントに比べて大幅に多くのI/Oを処理できます。NetApp Automation Toolkitを使用したOracleの自動導入で、NFSv3ではdNFSが自動的に設定されます。
解決策 の導入
ここでは、Oracle Data Guardをセットアップするための出発点として、VNet内のAzureクラウド環境にプライマリOracleデータベースがすでに導入されていることを前提としています。プライマリデータベースをNFSマウントでANFストレージに導入するのが理想的です。Oracleデータベースストレージ用に3つのNFSマウントポイントが作成されます。Oracleバイナリファイル用にmount/u01、Oracleデータファイルと制御ファイル用にmount/u02、Oracleの現在のログファイルとアーカイブログファイル用にmount/u03、冗長制御ファイル1つです。
プライマリOracleデータベースは、Azureエコシステムまたはプライベートデータセンター内のNetApp ONTAPストレージやその他の任意のストレージで実行することもできます。次のセクションでは、ANFストレージを使用するAzureのプライマリOracle DBと、ANFストレージを使用するAzureの物理スタンバイOracle DBとの間にOracle Data Guardを設定する手順を説明します。
導入の前提条件
Details
導入には、次の前提条件が必要です。
-
Azureクラウドアカウントがセットアップされ、必要なVNetとネットワークサブネットがAzureアカウント内に作成されている。
-
Azureクラウドポータルコンソールから、最低3つのAzure Linux VMを導入する必要があります。1つはプライマリOracle DBサーバ、もう1つはスタンバイOracle DBサーバ、およびレポート作成、開発、テスト用のクローンターゲットDBサーバなどです。環境のセットアップの詳細については、前のセクションのアーキテクチャ図を参照してください。詳細については、Microsoftを参照して"Azure 仮想マシン"ください。
-
プライマリOracleデータベースがプライマリOracle DBサーバにインストールされ、設定されている必要があります。一方、スタンバイOracle DBサーバまたはクローンOracle DBサーバには、Oracleソフトウェアのみがインストールされ、Oracleデータベースは作成されません。OracleファイルディレクトリのレイアウトがすべてのOracle DBサーバで完全に一致することを推奨します。AzureクラウドとANFへのOracleの自動導入に関するNetAppの推奨事項の詳細については、次のテクニカルレポートを参照してください。
-
"TR-4987:『Simplified、Automated Oracle Deployment on Azure NetApp Files with NFS』"
Oracleインストールファイルをステージングするための十分なスペースを確保するために、Azure VMSのルートボリュームに少なくとも128Gが割り当てられていることを確認してください。
-
-
Azureクラウドポータルコンソールで、OracleデータベースボリュームをホストするためのANFストレージ容量プールを2つ導入します。ANFストレージ容量プールは、真のDataGuard構成を再現するために、別 々 のリージョンに配置する必要があります。ANFストレージの導入方法に詳しくない場合は、のドキュメントで詳細な手順を参照してください"クイックスタート: Azure NetApp Files をセットアップし、 NFS ボリュームを作成します"。
-
プライマリOracleデータベースとスタンバイOracleデータベースが2つの異なるリージョンに配置されている場合は、2つの独立したVNet間のデータトラフィックフローを許可するようにVPNゲートウェイを設定する必要があります。Azureのネットワーク構成の詳細については、本ドキュメントでは取り上げません。次のスクリーンショットは、VPNゲートウェイの設定方法、接続方法、およびデータトラフィックフローの確認方法を示しています。
ラボVPNゲートウェイ:
プライマリVNetゲートウェイ:
VNetゲートウェイの接続ステータス:
トラフィックフローが確立されていることを確認します(3つの点をクリックしてページを開きます)。
Data Guardのプライマリデータベースの準備
Details
このデモでは、プライマリAzure DBサーバにNTAPという名前のプライマリOracleデータベースをセットアップし、3つのNFSマウントポイント(Oracleバイナリ用に/u01、Oracleデータファイル用に/u02、Oracle制御ファイル用に/u03、Oracleのアクティブログ、アーカイブログファイル、冗長Oracle制御ファイル用に/u03)を設定します。次に、Oracle Data Guard保護用にプライマリデータベースを設定するための詳細な手順を示します。すべての手順は、Oracleデータベースの所有者またはデフォルトのユーザとして実行する必要があります oracle
。
-
プライマリAzure DBサーバorap.internal.cloudapp.net上のプライマリデータベースNTAPは、最初はスタンドアロンデータベースとして導入され、ANFはデータベースストレージとして導入されます。
orap.internal.cloudapp.net: resource group: ANFAVSRG Location: East US size: Standard B4ms (4 vcpus, 16 GiB memory) OS: Linux (redhat 8.6) pub_ip: 172.190.207.231 pri_ip: 10.0.0.4 [oracle@orap ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.7G 4.0K 7.7G 1% /dev tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 209M 7.5G 3% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/mapper/rootvg-rootlv 22G 413M 22G 2% / /dev/mapper/rootvg-usrlv 10G 2.1G 8.0G 21% /usr /dev/sda1 496M 181M 315M 37% /boot /dev/mapper/rootvg-homelv 2.0G 47M 2.0G 3% /home /dev/sda15 495M 5.8M 489M 2% /boot/efi /dev/mapper/rootvg-varlv 8.0G 1.1G 7.0G 13% /var /dev/mapper/rootvg-tmplv 12G 120M 12G 1% /tmp /dev/sdb1 32G 49M 30G 1% /mnt 10.0.2.36:/orap-u02 500G 7.7G 493G 2% /u02 10.0.2.36:/orap-u03 450G 6.1G 444G 2% /u03 10.0.2.36:/orap-u01 100G 9.9G 91G 10% /u01 [oracle@orap ~]$ 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. # # NTAP:/u01/app/oracle/product/19.0.0/NTAP:N
-
OracleユーザとしてプライマリDBサーバにログインします。sqlplusを使用してデータベースにログインし'プライマリで強制ログを有効にします
alter database force logging;
[oracle@orap admin]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Tue Nov 26 20:12:02 2024 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 database force logging; Database altered.
-
sqlplusから、プライマリDBのフラッシュバックを有効にします。Flashbackを使用すると、フェールオーバー後にプライマリデータベースをスタンバイとして簡単に復元できます。
alter database flashback on;
SQL> alter database flashback on; Database altered.
-
Oracleパスワードファイルを使用したREDO転送認証の設定- orapwdユーティリティを使用してプライマリにpwdファイルを作成します(設定されていない場合)。スタンバイデータベースの$ORACLE_HOME/dbsディレクトリにコピーします。
-
プライマリDBに、現在のオンラインログファイルと同じサイズのスタンバイREDOログを作成します。ロググループは、1つ以上のオンラインログファイルグループです。これにより、プライマリデータベースは、フェイルオーバーが発生してREDOデータの受信を開始したときに、すぐにスタンバイロールに移行できます。次のコマンドを4回繰り返して、4つのスタンバイログファイルを作成します。
alter database add standby logfile thread 1 size 200M;
SQL> alter database add standby logfile thread 1 size 200M; Database altered. SQL> / Database altered. SQL> / Database altered. SQL> / Database altered. SQL> set lin 200 SQL> col member for a80 SQL> select group#, type, member from v$logfile; GROUP# TYPE MEMBER ---------- ------- -------------------------------------------------------------------------------- 3 ONLINE /u03/orareco/NTAP/onlinelog/redo03.log 2 ONLINE /u03/orareco/NTAP/onlinelog/redo02.log 1 ONLINE /u03/orareco/NTAP/onlinelog/redo01.log 4 STANDBY /u03/orareco/NTAP/onlinelog/o1_mf_4__2m115vkv_.log 5 STANDBY /u03/orareco/NTAP/onlinelog/o1_mf_5__2m3c5cyd_.log 6 STANDBY /u03/orareco/NTAP/onlinelog/o1_mf_6__2m4d7dhh_.log 7 STANDBY /u03/orareco/NTAP/onlinelog/o1_mf_7__2m5ct7g1_.log
-
sqlplusから'spfileからpfileを作成して編集します
create pfile='/home/oracle/initNTAP.ora' from spfile;
-
pfileを修正し、次のパラメータを追加します。
vi /home/oracle/initNTAP.ora
Update the following parameters if not set: DB_NAME=NTAP DB_UNIQUE_NAME=NTAP_NY LOG_ARCHIVE_CONFIG='DG_CONFIG=(NTAP_NY,NTAP_LA)' LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=NTAP_NY' LOG_ARCHIVE_DEST_2='SERVICE=NTAP_LA ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=NTAP_LA' REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE FAL_SERVER=NTAP_LA STANDBY_FILE_MANAGEMENT=AUTO
-
sqlplusから'修正されたpfileからspfileを再作成して'$ORACLE_HOME/dbsディレクトリ内の既存のspfileを上書きします
create spfile='$ORACLE_HOME/dbs/spfileNTAP.ora' from pfile='/home/oracle/initNTAP.ora';
-
$ORACLE_HOME/network/adminディレクトリのOracle tnsnames.oraを変更して、名前解決のためにdb_unique_nameを追加します。
vi $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/NTAP/network/admin/tnsnames.ora # Generated by Oracle configuration tools. NTAP_NY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = orap.internal.cloudapp.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = NTAP) ) ) NTAP_LA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oras.internal.cloudapp.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = NTAP) ) ) LISTENER_NTAP = (ADDRESS = (PROTOCOL = TCP)(HOST = orap.internal.cloudapp.net)(PORT = 1521))
Azure DBサーバにデフォルトとは異なる名前を付ける場合は、ホスト名を解決するためにローカルホストファイルに名前を追加します。 -
プライマリデータベースのデータガードサービス名NTAP_NY_DGMGRL.internal.cloudapp.netをlistener.oraファイルに追加します。
vi $ORACLE_HOME/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/NTAP/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER.NTAP = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = orap.internal.cloudapp.net)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER.NTAP = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = NTAP_NY_DGMGRL.internal.cloudapp.net) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/NTAP) (SID_NAME = NTAP) ) )
-
sqlplusを使用してデータベースをシャットダウンして再起動し'データ・ガード・パラメータがアクティブになったことを確認します
shutdown immediate;
startup;
SQL> show parameter name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cdb_cluster_name string cell_offloadgroup_name string db_file_name_convert string db_name string NTAP db_unique_name string NTAP_NY global_names boolean FALSE instance_name string NTAP lock_name_space string log_file_name_convert string pdb_file_name_convert string processor_group_name string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ service_names string NTAP_NY.internal.cloudapp.net SQL> sho parameter log_archive_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string log_archive_dest_1 string LOCATION=USE_DB_RECOVERY_FILE_ DEST VALID_FOR=(ALL_LOGFILES,A LL_ROLES) DB_UNIQUE_NAME=NTAP_ NY log_archive_dest_10 string log_archive_dest_11 string log_archive_dest_12 string log_archive_dest_13 string log_archive_dest_14 string log_archive_dest_15 string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_16 string log_archive_dest_17 string log_archive_dest_18 string log_archive_dest_19 string log_archive_dest_2 string SERVICE=NTAP_LA ASYNC VALID_FO R=(ONLINE_LOGFILES,PRIMARY_ROL E) DB_UNIQUE_NAME=NTAP_LA log_archive_dest_20 string log_archive_dest_21 string . .
これで、Data Guardのプライマリデータベースのセットアップは完了です。
スタンバイデータベースの準備とData Guardのアクティブ化
Details
Oracle Data Guardを使用するには、OSカーネル構成とOracleソフトウェアスタック(スタンバイDBサーバにパッチセットを含む)がプライマリDBサーバと一致する必要があります。管理を簡易化するためには、データベースディレクトリのレイアウトやNFSマウントポイントのサイズなど、スタンバイDBサーバのデータベースストレージ構成もプライマリDBサーバと同じにすることが理想的です。次に、スタンバイOracle DBサーバのセットアップとOracle DataGuardのアクティブ化によるHA/DR保護の詳細な手順を示します。すべてのコマンドは、デフォルトのOracle所有者ユーザIDとして実行する必要があります oracle
。
-
まず、プライマリOracle DBサーバ上のプライマリデータベースの構成を確認します。このデモでは、プライマリDBサーバにNTAPというプライマリOracleデータベースをセットアップし、ANFストレージに3つのNFSマウントを配置しました。
-
NetAppのドキュメントTR-4987に従ってOracleスタンバイDBサーバをセットアップする場合は、の手順2の `Playbook execution`"TR-4987:『Simplified、Automated Oracle Deployment on Azure NetApp Files with NFS』"タグを使用し `-t software_only_install`て、Oracleの自動インストールを実行します。変更されたコマンド構文を次に示します。このタグを使用すると、Oracleソフトウェアスタックのインストールと設定が可能になりますが、データベースの作成は完了しません。
ansible-playbook -i hosts 4-oracle_config.yml -u azureuser -e @vars/vars.yml -t software_only_install
-
デモラボのスタンバイサイトのスタンバイOracle DBサーバ構成。
oras.internal.cloudapp.net: resource group: ANFAVSRG Location: West US 2 size: Standard B4ms (4 vcpus, 16 GiB memory) OS: Linux (redhat 8.6) pub_ip: 172.179.119.75 pri_ip: 10.0.1.4 [oracle@oras ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 265M 7.5G 4% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/mapper/rootvg-rootlv 22G 413M 22G 2% / /dev/mapper/rootvg-usrlv 10G 2.1G 8.0G 21% /usr /dev/sda1 496M 181M 315M 37% /boot /dev/mapper/rootvg-varlv 8.0G 985M 7.1G 13% /var /dev/mapper/rootvg-homelv 2.0G 52M 2.0G 3% /home /dev/mapper/rootvg-tmplv 12G 120M 12G 1% /tmp /dev/sda15 495M 5.8M 489M 2% /boot/efi /dev/sdb1 32G 49M 30G 1% /mnt 10.0.3.36:/oras-u01 100G 9.5G 91G 10% /u01 10.0.3.36:/oras-u02 500G 8.1G 492G 2% /u02 10.0.3.36:/oras-u03 450G 4.8G 446G 2% /u03
-
Oracleソフトウェアのインストールと設定が完了したら、Oracleホームとパスを設定します。また、スタンバイ$ORACLE_HOME dbsディレクトリからOracleパスワードをコピーしていない場合は、プライマリデータベースからコピーします。
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/NTAP
export PATH=$PATH:$ORACLE_HOME/bin
scp oracle@10.0.0.4:$ORACLE_HOME/dbs/orapwNTAP .
-
tnsnames.oraファイルを次のエントリで更新します。
vi $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/NTAP/network/admin/tnsnames.ora # Generated by Oracle configuration tools. NTAP_NY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = orap.internal.cloudapp.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = NTAP) ) ) NTAP_LA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oras.internal.cloudapp.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = NTAP) ) )
-
DBデータガードサービス名をlistener.oraファイルに追加します。
vi $ORACLE_HOME/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/NTAP/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER.NTAP = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oras.internal.cloudapp.net)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = NTAP) ) ) SID_LIST_LISTENER.NTAP = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = NTAP_LA_DGMGRL.internal.cloudapp.net) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/NTAP) (SID_NAME = NTAP) ) ) LISTENER = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oras.internal.cloudapp.net)(PORT = 1521)) )
-
dbcaを起動して、プライマリデータベースNTAPからスタンバイデータベースをインスタンス化します。
dbca -silent -createDuplicateDB -gdbName NTAP -primaryDBConnectionString orap.internal.cloudapp.net:1521/NTAP_NY.internal.cloudapp.net -sid NTAP -initParams fal_server=NTAP_NY -createAsStandby -dbUniqueName NTAP_LA
[oracle@oras admin]$ dbca -silent -createDuplicateDB -gdbName NTAP -primaryDBConnectionString orap.internal.cloudapp.net:1521/NTAP_NY.internal.cloudapp.net -sid NTAP -initParams fal_server=NTAP_NY -createAsStandby -dbUniqueName NTAP_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/NTAP_LA/NTAP_LA.log" for further details.
-
複製されたスタンバイデータベースを検証します。新しく複製されたスタンバイデータベースは、最初は読み取り専用モードで開きます。
[oracle@oras admin]$ 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. # # NTAP:/u01/app/oracle/product/19.0.0/NTAP:N [oracle@oras admin]$ export ORACLE_SID=NTAP [oracle@oras admin]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Tue Nov 26 23:04:07 2024 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 --------- -------------------- NTAP 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 NTAP db_unique_name string NTAP_LA global_names boolean FALSE instance_name string NTAP lock_name_space string log_file_name_convert string pdb_file_name_convert string processor_group_name string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ service_names string NTAP_LA.internal.cloudapp.net SQL> show parameter log_archive_config NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_config string DG_CONFIG=(NTAP_NY,NTAP_LA) SQL> show parameter fal_server NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ fal_server string NTAP_NY SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/system01.dbf /u02/oradata/NTAP/sysaux01.dbf /u02/oradata/NTAP/undotbs01.dbf /u02/oradata/NTAP/pdbseed/system01.dbf /u02/oradata/NTAP/pdbseed/sysaux01.dbf /u02/oradata/NTAP/users01.dbf /u02/oradata/NTAP/pdbseed/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb1/system01.dbf /u02/oradata/NTAP/NTAP_pdb1/sysaux01.dbf /u02/oradata/NTAP/NTAP_pdb1/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb1/users01.dbf NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/NTAP_pdb2/system01.dbf /u02/oradata/NTAP/NTAP_pdb2/sysaux01.dbf /u02/oradata/NTAP/NTAP_pdb2/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb2/users01.dbf /u02/oradata/NTAP/NTAP_pdb3/system01.dbf /u02/oradata/NTAP/NTAP_pdb3/sysaux01.dbf /u02/oradata/NTAP/NTAP_pdb3/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb3/users01.dbf 19 rows selected. SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/control01.ctl /u03/orareco/NTAP_LA/control02.ctl SQL> col member form a80 SQL> select group#, type, member from v$logfile order by 2, 1; GROUP# TYPE MEMBER ---------- ------- -------------------------------------------------------------------------------- 1 ONLINE /u03/orareco/NTAP_LA/onlinelog/o1_mf_1_mndl6mxh_.log 2 ONLINE /u03/orareco/NTAP_LA/onlinelog/o1_mf_2_mndl7jdb_.log 3 ONLINE /u03/orareco/NTAP_LA/onlinelog/o1_mf_3_mndl8f03_.log 4 STANDBY /u03/orareco/NTAP_LA/onlinelog/o1_mf_4_mndl99m7_.log 5 STANDBY /u03/orareco/NTAP_LA/onlinelog/o1_mf_5_mndlb67d_.log 6 STANDBY /u03/orareco/NTAP_LA/onlinelog/o1_mf_6_mndlc2tw_.log 7 STANDBY /u03/orareco/NTAP_LA/onlinelog/o1_mf_7_mndlczhb_.log 7 rows selected.
-
ステージでスタンバイデータベースを再起動し
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 6442449688 bytes Fixed Size 9177880 bytes Variable Size 1090519040 bytes Database Buffers 5335154688 bytes Redo Buffers 7598080 bytes Database mounted. SQL> alter database recover managed standby database disconnect from session; Database altered.
-
スタンバイデータベースのリカバリステータスを検証します。ここで、
recovery logmerger
インチAPPLYING_LOG
アクション。SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;
SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS; ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ post role transition 0 0 IDLE 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 18 APPLYING_LOG managed recovery 0 0 IDLE RFS async 1 18 IDLE RFS ping 1 18 IDLE archive redo 0 0 IDLE redo transport timer 0 0 IDLE ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ gap manager 0 0 IDLE archive redo 0 0 IDLE archive redo 0 0 IDLE redo transport monitor 0 0 IDLE log writer 0 0 IDLE archive local 0 0 IDLE 17 rows selected. SQL>
これで、マネージドスタンバイリカバリを有効にした状態での、プライマリからスタンバイへのNTAPの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@orap ~]$ dgmgrl sys@NTAP_NY DGMGRL for Linux: Release 19.0.0.0.0 - Production on Wed Dec 11 20:53:20 2024 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 "NTAP_NY" Connected as SYSDBA. DGMGRL>
-
Data Guardブローカー設定を作成して有効にします。
DGMGRL> create configuration dg_config as primary database is NTAP_NY connect identifier is NTAP_NY; Configuration "dg_config" created with primary database "ntap_ny" DGMGRL> add database NTAP_LA as connect identifier is NTAP_LA; Database "ntap_la" added DGMGRL> enable configuration; Enabled. DGMGRL> show configuration; Configuration - dg_config Protection Mode: MaxPerformance Members: ntap_ny - Primary database ntap_la - Physical standby database Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 3 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を使用して、プライマリデータベースを瞬時にスタンバイデータベースにフェイルオーバーできます。が有効な場合、 `Fast-Start Failover`障害が検出されたときにユーザの介入なしにData Guard Brokerでプライマリデータベースをスタンバイにフェイルオーバーできます。
他のユースケースでのスタンバイデータベースのクローニング
Details
Oracle Data Guard環境でANFでOracleスタンバイデータベースをホストする主なメリットは、クローンを迅速に作成して他の多くのユースケースに対応できることです。シンクローンが有効になっていれば、最小限の追加ストレージ投資で対応できます。NetAppでは、SnapCenter UIツールを使用してOracle DataGuardデータベースを管理することを推奨しています。次のセクションでは、NetApp SnapCenterツールを使用して、マウント済みおよびリカバリ対象のスタンバイデータベースボリュームを開発、テスト、レポートなどの他の目的に使用するために、ANF上のSnapshotおよびクローニングを実行する方法を説明します。
以下に、SnapCenterを使用してOracle Data Guardの管理対象物理スタンバイデータベースから読み取り/書き込みデータベースをクローニングする手順の概要を示します。ANFでSnapCenter for Oracleをセットアップおよび設定する詳細な手順については、TR-4988を参照してください"SnapCenterを使用したANFでのOracleデータベースのバックアップ、リカバリ、クローン"。
-
usecaseの検証を開始するには、テストテーブルを作成し、プライマリデータベースのテストテーブルに行を挿入します。次に、トランザクションがスタンバイに移行し、最後にクローンが移行することを検証します。
[oracle@orap ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Wed Dec 11 16:33:17 2024 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=ntap_pdb1; Session altered. SQL> create table test(id integer, dt timestamp, event varchar(100)); Table created. SQL> insert into test values(1, sysdate, 'a test transaction at primary database NTAP on DB server orap.internal.cloudapp.net'); 1 row created. SQL> commit; Commit complete. SQL> select * from test; ID ---------- DT --------------------------------------------------------------------------- EVENT -------------------------------------------------------------------------------- 1 11-DEC-24 04.38.44.000000 PM a test transaction at primary database NTAP on DB server orap.internal.cloudapp. net SQL> select instance_name, host_name from v$instance; INSTANCE_NAME ---------------- HOST_NAME ---------------------------------------------------------------- NTAP orap SQL>
-
SnapCenter構成では、UNIXユーザ(demoの場合はazureuser)とAzureクレデンシャル(demoの場合はazure_anf)がのに
Settings`追加されています `Credential
。 -
azure_anfクレデンシャルを使用してANFストレージをに追加します
Storage Systems
。Azureサブスクリプションに複数のANFストレージアカウントがある場合は、ドロップダウンリストをクリックして適切なストレージアカウントを選択してください。このデモでは、Oracle専用ストレージアカウントを2つ作成しました。 -
すべてのOracle DBサーバがSnapCenterに追加されている
Hosts
。クローンDBサーバには、偶発的なOracleソフトウェアスタックがインストールおよび設定されている必要があります。このテストケースでは、Oracle 19Cソフトウェアがインストールおよび設定されていますが、データベースは作成されていません。 -
オフライン/フルデータベースバックアップのマウント用にカスタマイズしたバックアップポリシーを作成します。
-
Tabキーでバックアップポリシーを適用してスタンバイデータベースを保護し `Resources`ます。最初に検出されたデータベースのステータスは、と表示され `Not protected`ます。
-
バックアップは、手動で開始することも、バックアップポリシー適用後に設定した時間にスケジュールに従って実行することもできます。
-
バックアップが完了したら、データベース名をクリックしてデータベースバックアップのページを開きます。データベースのクローニングに使用するバックアップを選択し、ボタンをクリックし `Clone`てクローニングワークフローを起動します。
-
を選択し
Complete Database Clone
、クローンインスタンスにSIDという名前を付けます。 -
クローンDBサーバを選択します。このサーバは、クローンデータベースをスタンバイDBからホストします。データファイル(REDOログ)はデフォルトのままにします。/u03マウントポイントに制御ファイルを配置します。
-
OSベースの認証にはデータベースクレデンシャルは必要ありません。Oracleホーム設定を、クローンDBサーバで設定されている設定と照合します。
-
必要に応じてクローンデータベースのパラメータを変更します(クローンDBのPGAまたはSGAサイズの縮小など)。クローンの前に実行するスクリプトがある場合は指定します。
-
クローンのあとに実行するsqlと入力します。デモでは、dev/test/reportデータベースのデータベースアーカイブモードをオフにするコマンドを実行しました。
-
必要に応じてEメール通知を設定します。
-
概要を確認し、
Finish
をクリックしてクローンを開始します。 -
タブでクローニングジョブを監視します
Monitor
。データベースのボリュームサイズでは、約950GBのデータベースをクローニングするのに約14分かかったことがわかりました。 -
にすぐに登録されているSnapCenterからクローンデータベースを検証します。
Resources
タブをクリックします。 -
クローンDBサーバからクローンデータベースを照会します。プライマリデータベースで発生したテストトランザクションがクローンデータベースにトラバースされたことを確認しました。
[oracle@orac ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Wed Dec 11 20:16:09 2024 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 --------- -------------------- ------------ NTAPDEV READ WRITE NOARCHIVELOG SQL> select instance_name, host_name from v$instance; INSTANCE_NAME ---------------- HOST_NAME ---------------------------------------------------------------- NTAPDEV orac SQL> alter pluggable database all open; Pluggable database altered. SQL> alter pluggable database all save state; Pluggable database altered. SQL> alter session set container=ntap_pdb1; Session altered. SQL> select * from test; ID ---------- DT --------------------------------------------------------------------------- EVENT -------------------------------------------------------------------------------- 1 11-DEC-24 04.38.44.000000 PM a test transaction at primary database NTAP on DB server orap.internal.cloudapp. net
これで、開発、テスト、レポートなどのユースケース向けのOracle Data Guard on Azure ANFストレージでのOracleスタンバイデータベースクローンのデモは完了です。ANF上のOracle Data Guard内の同じスタンバイデータベースから、複数のOracleデータベースをクローニングできます。
追加情報の参照先
このドキュメントに記載されている情報の詳細については、以下のドキュメントや Web サイトを参照してください。
-
Azure NetApp Files の特長
-
TR-4988:『Oracle Database Backup、Recovery、and Clone on ANF with SnapCenter』
-
TR-4987:『Simplified、Automated Oracle Deployment on Azure NetApp Files with NFS』
-
Oracle Data Guardの概念と管理