TR-5002: Azure NetApp Filesによる Oracle Active Data Guard のコスト削減
このソリューションでは、Microsoft Azure NetApp Files (ANF) をプライマリおよびスタンバイ データベース ストレージとして使用して Oracle Data Guard を構成し、Azure クラウドでの 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 データベース運用のコストを削減することに熱心で、Azure クラウドに Active Data Guard を設定する予定の場合は、代替案を検討する必要があります。 Active Data Guard の代わりに、Data Guard を使用して、プライマリ データベースからAzure NetApp Filesストレージ上の単一の物理スタンバイ データベースにレプリケートします。その後、このスタンバイ データベースの複数のコピーをクローン化し、読み取り/書き込みアクセス用に開いて、レポート、開発、テストなどの他の多くのユース ケースに対応できます。最終的な結果として、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が提供する現在のバージョン |
2つの3 TiB容量プール、標準サービスレベル、自動QoS |
DB サーバー用の Azure VM |
標準 B4ms (4 vCPU、16 GiB メモリ) |
3 つの DB VM (1 つはプライマリ DB サーバー、1 つはスタンバイ DB サーバー、3 つ目はクローン DB サーバー) |
ソフトウェア |
||
レッドハットリナックス |
Red Hat Enterprise Linux 8.6 (LVM) - x64 Gen2 |
テスト用にRedHatサブスクリプションを導入 |
Oracle Database |
バージョン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 が有効 |
仮想的なニューヨークからロサンゼルスへの DR セットアップによる Oracle Data Guard 構成
データベース |
DB_UNIQUE_NAME |
Oracleネットサービス名 |
プライマリ |
NTAP_NY |
NTAP_NY.internal.cloudapp.net |
Standby |
NTAP_LA |
NTAP_LA.internal.cloudapp.net |
導入検討の重要な要素
-
*スタンバイ データベース クローン。*プライマリ データベースからトランザクション ログを受け取って適用しながら、フィジカル スタンバイ データベースを複製して DB VM にマウントし、DEV、TEST、レポートなどの他のワークロードをサポートできます。クローンには薄いクローンと厚いクローンがあります。現時点では、ANF はスタンバイ データベースの完全なコピーであるシック クローンのみをサポートしています。 ANF シン クローン オプションはまもなくリリースされる予定です。データベース ボリュームのシン クローン コピーでは、スタンバイ データベースの同じ DB ボリュームを共有し、コピー オン ライト テクノロジーを利用して書き込み IO を処理します。したがって、クローンのストレージ効率は非常に高く、新しい書き込み IO に対して最小限かつ増分的な新しいストレージ割り当てで、他の多くのユースケースに使用できます。これにより、Active Data Guard のストレージ フットプリントが大幅に削減され、ストレージ コストが大幅に削減されます。 NetApp、Oracle のパフォーマンスを高いレベルで維持するために、データベースがプライマリ ストレージからスタンバイ ANF ストレージに切り替わる場合、 FlexCloneアクティビティを最小限に抑えることを推奨しています。
-
*Oracle ソフトウェア要件*通常、フィジカルスタンバイデータベースは、Oracle Data Guard Standby-First Patch Applyプロセスが進行中でない限り(My Oracle Supportノート1265700.1に記載されているように)、パッチセット例外(PSE)、クリティカルパッチアップデート(CPU)、パッチセットアップデート(PSU)を含め、プライマリデータベースと同じデータベースホームバージョンである必要があります。"サポート" 。
-
*スタンバイ データベースのディレクトリ構造に関する考慮事項*可能であれば、プライマリ システムとスタンバイ システムのデータ ファイル、ログ ファイル、および制御ファイルの名前とパス名を同じにし、Optimal Flexible Architecture (OFA) 命名規則を使用する必要があります。スタンバイ データベース上のアーカイブ ディレクトリも、サイズや構造を含め、サイト間で同一である必要があります。この戦略により、バックアップ、スイッチオーバー、フェイルオーバーなどの他の操作でも同じ手順を実行できるようになり、メンテナンスの複雑さが軽減されます。
-
*強制ログモード。*スタンバイ データベースに伝播できないプライマリ データベースでのログに記録されない直接書き込みを防ぐには、スタンバイ作成用のデータ ファイルのバックアップを実行する前に、プライマリ データベースで FORCE LOGGING をオンにします。
-
*Azure VM のサイズ設定*これらのテストと検証では、4 つの vCPU と 16 GiB のメモリを備えた Azure VM - Standard_B4ms を使用しました。実際のワークロード要件に基づいて、vCPU の数と RAM の量に応じて Azure DB VM のサイズを適切に設定する必要があります。
-
* Azure NetApp Files の構成。* Azure NetApp FilesはAzure NetAppストレージアカウントに次のように割り当てられます。
Capacity Pools
。これらのテストと検証では、East リージョンで Oracle プライマリをホストし、West 2 リージョンでスタンバイ データベースをホストするために 3 TiB の容量プールを展開しました。 ANF 容量プールには、Standard、Premium、Ultra の 3 つのサービス レベルがあります。 ANF 容量プールの IO 容量は、容量プールのサイズとサービス レベルによって決まります。本番環境での導入では、 NetAppOracle データベースのスループット要件を完全に評価し、それに応じてデータベース容量プールのサイズを設定することを推奨しています。容量プールの作成時に、QoS を自動または手動に設定し、保存時のデータの暗号化をシングルまたはダブルに設定できます。 -
dNFS 構成。 dNFS を使用すると、ANF ストレージを備えた Azure 仮想マシン上で実行される Oracle データベースは、ネイティブ NFS クライアントよりも大幅に多くの I/O を実行できます。 NetApp自動化ツールキットを使用した自動化された Oracle デプロイメントでは、NFSv3 上に dNFS が自動的に構成されます。
ソリューションの展開
Oracle Data Guard をセットアップするための開始点として、プライマリ Oracle データベースが既に VNet 内の Azure クラウド環境にデプロイされているものと想定されます。理想的には、プライマリ データベースは、NFS マウントを使用して ANF ストレージにデプロイされます。 Oracle データベース ストレージ用に 3 つの NFS マウント ポイントが作成されます。Oracle バイナリ ファイル用のマウント /u01、Oracle データ ファイルと制御ファイル用のマウント /u02、Oracle の現在のログ ファイルとアーカイブ ログ ファイル、および冗長制御ファイル用のマウント /u03 です。
プライマリ Oracle データベースは、 NetApp ONTAPストレージ、または Azure エコシステム内またはプライベート データ センター内の任意の他のストレージで実行することもできます。次のセクションでは、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 サーバーとして、もう 1 台はレポート、開発、テストなどのためのクローン ターゲット DB サーバーとしてデプロイします。環境設定の詳細については、前のセクションのアーキテクチャ図を参照してください。また、Microsoft"Azure 仮想マシン"詳細についてはこちらをご覧ください。
-
プライマリ Oracle データベースは、プライマリ Oracle DB サーバーにインストールされ、構成されている必要があります。一方、スタンバイ Oracle DB サーバーまたはクローン Oracle DB サーバーには、Oracle ソフトウェアのみがインストールされ、Oracle データベースは作成されません。理想的には、Oracle ファイル ディレクトリのレイアウトは、すべての Oracle DB サーバー上で完全に一致している必要があります。 Azure クラウドおよび ANF での Oracle の自動展開に関するNetAppの推奨事項の詳細については、次の技術レポートを参照してください。
-
"TR-4987: NFS を使用したAzure NetApp Filesへの簡素化された自動 Oracle デプロイメント"
Oracle インストール ファイルをステージングするための十分な領域を確保するために、Azure VM のルート ボリュームに少なくとも 128 G が割り当てられていることを確認します。
-
-
Azure クラウド ポータル コンソールから、Oracle データベース ボリュームをホストするための 2 つの ANF ストレージ容量プールをデプロイします。真の DataGuard 構成を模倣するには、ANF ストレージ容量プールを異なるリージョンに配置する必要があります。 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 データ ファイルと Oracle 制御ファイル用の /u02、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 でフラッシュバックを有効にします。フラッシュバックを使用すると、フェイルオーバー後にプライマリ データベースをスタンバイとして簡単に復元できます。
alter database flashback on;
SQL> alter database flashback on; Database altered.
-
Oracle パスワード ファイルを使用して REDO トランスポート認証を構成します。プライマリで pwd ファイルが設定されていない場合は orapwd ユーティリティを使用して pwd ファイルを作成し、スタンバイ データベースの $ORACLE_HOME/dbs ディレクトリにコピーします。
-
現在のオンライン ログ ファイルと同じサイズのスタンバイ REDO ログをプライマリ DB に作成します。ログ グループは、オンライン ログ ファイル グループより 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 では、プライマリ DB サーバーと一致させるために、スタンバイ DB サーバー上の OS カーネル構成とパッチ セットを含む Oracle ソフトウェア スタックが必要です。管理を容易にし、簡素化するために、スタンバイ DB サーバーのデータベース ストレージ構成 (データベース ディレクトリのレイアウトや NFS マウント ポイントのサイズなど) は、プライマリ DB サーバーと一致させることが理想的です。スタンバイ Oracle DB サーバーを設定し、HA/DR 保護のために Oracle DataGuard をアクティブ化する詳細な手順を次に示します。すべてのコマンドはデフォルトのOracle所有者ユーザーIDとして実行する必要があります oracle
。
-
まず、プライマリ Oracle DB サーバー上のプライマリ データベースの構成を確認します。このデモでは、ANF ストレージ上の 3 つの NFS マウントを使用して、プライマリ DB サーバーに NTAP と呼ばれるプライマリ Oracle データベースをセットアップしました。
-
NetAppのドキュメントTR-4987に従ってOracleスタンバイDBサーバーをセットアップする場合"TR-4987: NFS を使用したAzure NetApp Filesへの簡素化された自動 Oracle デプロイメント"タグを使用する `-t software_only_install`ステップ2の `Playbook execution`自動 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.
-
複製されたスタンバイ データベースを検証します。新しく複製されたスタンバイ データベースは、最初は READ ONLY モードで開かれます。
[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 Brokerのセットアップ
Details
Oracle Data Guard Broker は、Oracle Data Guard 構成の作成、保守、監視を自動化および一元化する分散管理フレームワークです。次のセクションでは、Data Guard 環境を管理するために Data Guard Broker を設定する方法を説明します。
-
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 Broker 構成を作成して有効にします。
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 セットアップで Oracle スタンバイ データベースを ANF 上にホストする主な利点は、シン クローンが有効になっている場合、最小限の追加ストレージ投資で、他の多くのユース ケースに対応するためにすぐにクローンを作成できることです。 NetApp、Oracle DataGuard データベースを管理するためにSnapCenter UI ツールを使用することを推奨しています。次のセクションでは、 NetApp SnapCenterツールを使用して、DEV、TEST、REPORT などの他の目的で、ANF にマウントされリカバリ中のスタンバイ データベース ボリュームのスナップショットを作成し、クローンを作成する方法を説明します。
以下は、 SnapCenterを使用して Oracle Data Guard 内の管理対象フィジカル スタンバイ データベースから READ/WRITE データベースを複製するための高レベルの手順です。 ANF上でのSnapCenter for Oracleのセットアップと構成方法の詳細については、TR-4988を参照してください。"SnapCenterを使用した ANF 上の Oracle データベースのバックアップ、リカバリ、およびクローン"詳細については。
-
ユースケースの検証は、テスト テーブルを作成し、プライマリ データベースのテスト テーブルに行を挿入することから開始します。次に、トランザクションがスタンバイまで通過し、最終的にクローンまで到達することを検証します。
[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ユーザー(デモの場合はazureuser)とAzure資格情報(デモの場合はazure_anf)が追加されました。
Credential`で `Settings
。 -
azure_anf認証情報を使用してANFストレージを追加します
Storage Systems
。 Azure サブスクリプションに複数の ANF ストレージ アカウントがある場合は、ドロップダウン リストをクリックして適切なストレージ アカウントを選択してください。このデモ用に 2 つの専用の Oracle ストレージ アカウントを作成しました。 -
すべてのOracle DBサーバーがSnapCenterに追加されました
Hosts
。クローン DB サーバーには、同一の Oracle ソフトウェア スタックがインストールおよび構成されている必要があります。私たちのテストケースでは、Oracle 19C ソフトウェアはインストールおよび構成されていますが、データベースは作成されていません。 -
オフライン/マウントの完全データベース バックアップに合わせてカスタマイズされたバックアップ ポリシーを作成します。
-
スタンバイデータベースを保護するためにバックアップポリシーを適用する
Resources`タブ。最初に検出された場合、データベースのステータスは次のように表示されます。 `Not protected
。 -
バックアップを手動でトリガーするか、バックアップ ポリシーの適用後に設定された時間にスケジュールに従ってバックアップを実行するかを選択できます。
-
バックアップ後、データベース名をクリックしてデータベース バックアップ ページを開きます。データベースクローンに使用するバックアップを選択し、クリックします。 `Clone`クローンワークフローを起動するボタン。
-
選択してください `Complete Database Clone`クローンインスタンスの SID に名前を付けます。
-
スタンバイ DB からクローンされたデータベースをホストするクローン DB サーバーを選択します。データ ファイル、REDO ログについてはデフォルトを受け入れます。制御ファイルを /u03 マウント ポイントに置きます。
-
OS ベースの認証にはデータベース資格情報は必要ありません。 Oracle ホームの設定を、クローン DB サーバーで構成されているものと一致させます。
-
必要に応じて、クローン DB の PGA または SGA サイズを小さくするなど、クローン データベース パラメータを変更します。クローン前に実行するスクリプトがあれば指定します。
-
クローン後に実行する SQL を入力します。デモでは、dev/test/report データベースのデータベース アーカイブ モードをオフにするコマンドを実行しました。
-
必要に応じて電子メール通知を設定します。
-
概要を確認し、クリック `Finish`クローンを開始します。
-
クローンジョブを監視する `Monitor`タブ。データベース ボリューム サイズが約 950 GB のデータベースのクローン作成には約 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
これで、DEV、TEST、REPORT、またはその他のユース ケース向けの Azure ANF ストレージ上の Oracle Data Guard での Oracle スタンバイ データベース クローンのデモンストレーションが完了します。 ANF 上の Oracle Data Guard 内の同じスタンバイ データベースから複数の Oracle データベースをクローンできます。
詳細情報の入手方法
このドキュメントに記載されている情報の詳細については、次のドキュメントや Web サイトを参照してください。
-
Azure NetApp Files
-
TR-4988: SnapCenterを使用した ANF 上の Oracle データベースのバックアップ、リカバリ、およびクローン
-
TR-4987: NFS を使用したAzure NetApp Filesへの簡素化された自動 Oracle デプロイメント
-
Oracle Data Guardの概念と管理