Oracle Data Guardを構成

このプレイブックには、Oracle Data Guard環境の構成に役立つスクリプトが用意されています。これらのスクリプトは、restore from service機能とOracle Data Guard Brokerを使用して、既存のプライマリ・データベースのスタンバイ・データベースを設定します。

dg-setup-scriptsは、DG_properties.iniファイルを使用してプライマリ環境とスタンバイ環境を定義します。

このスクリプトは、2つのtarファイル、プライマリ・パスワード・ファイルのtar、およびスタンバイ・データベース・ノードにコピーするプライマリTransparent Data Encryption (TDE)ウォレットのtarを作成します。

スクリプトは、net.core.rmem_maxnet.core.wmem_maxなどのオペレーティング・システムや最大転送単位(MTU)を変更しません。最適なREDO転送のためにnet.core.rmem_maxおよびnet.core.wmem_maxを調整することをお薦めします。

次のタスクでは、データベースのOracle Data Guardを構成するためのスクリプトを実行する方法について説明します。

Oracle Data Guardの環境変数の定義

DG_properties.iniファイルを使用して、Oracle Data Guard構成のためのプライマリ・システムを準備します。スクリプトは、DG_properties.iniのパラメータを使用して、プライマリ・システムとスタンバイ・システムを構成します。ファイルには、スクリプトに必要なすべての入力パラメータが含まれています。詳細は、DG_properties.iniファイルの例を参照してください。

サンプルDG_properties.iniファイルは、dg-setup-scripts zipファイルで使用できます。環境の値を使用してファイルをカスタマイズできます。

  1. dg-setup-scripts zipファイルをダウンロードし、内容を抽出します。
  2. Linuxオペレーティング・システムのサンプルのDG_properties.iniプロパティ・ファイルを編集して、環境固有の値でファイルをカスタマイズします。
    Linuxでの編集では、行の最後に Windows CRLFを取得するなどのエンコーディング関連の問題を回避します。
  3. 「一般プロパティ」セクションを編集して、システムがOracle Real Application Clusters (Oracle RAC)であり、パスワード・ファイルがOracle Automatic Storage Management (Oracle ASM)にある場合は、エクスポート・パラメータを定義します。
    ########################################################################################################
    # GENERAL PROPERTIES
    ########################################################################################################
    export ORACLE_OSUSER=oracle
    export ORACLE_OSGROUP=oinstall
    export GRID_OSUSER=grid
    export GRID_HOME=/u01/app/19.0.0.0/grid
    export ORACLE_HOME=/u01/app/oracle/product/18.0.0.0/dbhome_1
    export ORACLE_BASE=/u01/app/oracle
    
    export DB_NAME=DBTEST4	    # The database name (the value of db parameter db_name)
    export SYS_USERNAME=sys
    
    export RAC=NO	             # Set to YES (if DB is a RAC) or to NO (if single instance DB)
    export PASSWORD_FILE_IN_ASM=YES  # Set to YES when the password file is placed in ASM (in case of RAC, it will always be placed in ASM).
    export ADDITIONAL_STANDBY=NO     # Set to YES only if the primary db has another standby database already configured, and you are using the scripts to add a second standby.
  4. 「Primary Env Properties」セクションを編集し、パラメータを変更してプライマリ・システム環境を定義します。
    #########################################################################################################
    # PRIMARY ENV PROPERTIES
    #########################################################################################################
    export A_PORT=1521					# The primary listener's port (scan's listener port if RAC)
    export A_SERVICE=ORCL_PRI.primarydomainexample.com	# The default CDB service name in primary (format is <db_unique_name>.<primary_domain>) 
    export A_DBNM=ORCL_PRI					# The DB UNIQUE NAME of primary DB
    
    # For single instance (will be ignored if RAC=YES)
    	export A_DB_IP=10.10.10.10			# Provide the primary listener's IP. This needs to be reachable from the standby DB.
    
    # For RAC (will be ignored if RAC=NO)
    	# Specify the PRIMARY RAC's scan IPs and scan address name
    	export A_SCAN_IP1=10.10.10.1
    	export A_SCAN_IP2=10.10.10.2
    	export A_SCAN_IP3=10.10.10.3
    	export A_SCAN_ADDRESS=primary-scan.primarydomainexample.com
    	# Provide the ORACLE_SID of the primary RAC instances
    	export A_SID1=ORCL1
    	export A_SID2=ORCL2
    
    export A_FILE_DEST="+DATA"              # the value of db_create_file_dest db parameter in primary DB
    export A_ONLINE_LOG_DEST1="+RECO"       # the value of db_create_online_log_dest_1 parameter in primary DB
    export A_RECOVERY_FILE_DEST="+RECO"     # the value of db_recovery_file_dest parameter in primary DB
    
    # Other properties required by primary setup script
    export TDE_LOC=/opt/oracle/dcs/commonstore/wallets/tde/${A_DBNM}	# The the TDE wallet folder in primary (where the .p12 file is located). Leave it EMPTY if TDE is not used.
    export CREATE_PASSWORD_FILE=YES                                         # If password file already exists in primary and you do not want to override it, set this to NO.
    export OUTPUT_WALLET_TAR=/tmp/PRIMARY_TDE_WALLET.GZ         		# Absolute file name for the output tar file that will be generated in primary, containing the primary TDE wallet.
    export OUTPUT_PASWORD_TAR=/tmp/PRIMARY_PASSWORD_FILE.GZ        		# Absolute file name for the output tar file that will be generated in primary, containing the primary password file.
    
  5. 「スタンバイ環境プロパティ」セクションを編集し、パラメータを変更してスタンバイ・システム環境を定義します。
    ########################################################################################################
    # STANDBY ENV PROPERTIES
    ########################################################################################################
    export B_PORT=1521							# The standby listener's port (scan's listener port if RAC)
    export B_SERVICE=ORCL_STBY.standbydomainexample.com			# The default CDB service name in standby (format is <db_unique_name>.<secondary_domain>)
    export B_DBNM=ORCL_STBY							# The DB UNIQUE NAME of standby DB
    
    # For single instance (will be ignored if RAC=YES)
    	export B_DB_IP=10.20.20.20	# Provide the primary listener's IP. This needs to be reachable from the standby DB
    
    # For RAC (will be ignored if RAC=NO) 
    	# Specify STANDBY RAC's scan IPs and scan address name
    	export B_SCAN_IP1=10.20.20.1
    	export B_SCAN_IP2=10.20.20.2
    	export B_SCAN_IP3=10.20.20.3
    	export B_SCAN_ADDRESS=standby-scan.standbydomainexample.com
    	# Standby node's VIPs (provide the IPS, not the names)
    	export B_VIP1=10.20.20.10
    	export B_VIP2=10.20.20.20
    	# Provide the ORACLE_SID of the standby RAC instances
    	export B_SID1=ORCL1
    	export B_SID2=ORCL2
    	# (normally only needed in Exadata) Provide interconnect IPs if they must be specified in the parameter cluster_interconnects. Leave them empty if cluster_interconnects is empty.
            export B_INTERCONNECT_IP1=
            export B_INTERCONNECT_IP2=
    
    
    export B_FILE_DEST="+DATA"              # the value of db_create_file_dest db parameter in standby DB
    export B_ONLINE_LOG_DEST1="+RECO"       # the value of db_create_online_log_dest_1 parameter in standby DB
    export B_RECOVERY_FILE_DEST="+RECO"     # the value of db_recovery_file_dest parameter in standby DB
    
    # Other properties required by the standby setup script
    export INPUT_WALLET_TAR=/tmp/PRIMARY_TDE_WALLET.GZ		   # Absolute file name for the input tar file that contains the primary TDE wallet.
    export INPUT_PASWORD_TAR=/tmp/PRIMARY_PASSWORD_FILE.GZ	      # Absolute file name for the input tar file that contains the primary password file.
    export B_TDE_LOC=/opt/oracle/dcs/commonstore/wallets/$B_DBNM/tde   # Absolute  path where the wallet files (.p12) will be created in standby hosts. 
    # Verify which is the value used by your system, it may differ. Leave it empty if TDE is not used.

スクリプトのアップロード

次のように、スクリプトをプライマリおよびセカンダリ・データベース・ホストにアップロードします。

  1. 次のスクリプトおよびファイルをプライマリ・データベース・ホストまたはホストにアップロードします。
    • 1_prepare_primary_maa_parameters.sh: データベース・ホスト1 (単一インスタンスまたはOracle RAC用)にアップロードします。
    • 2_dataguardit_primary.sh: すべてのデータベース・ノードにアップロードします。
    • create_pw_tar_from_asm_root.sh: すべてのデータベース・ノードにアップロードします。
    • DG_properties.ini: すべてのデータベース・ノードにアップロードします。
  2. プライマリ・データベース・ホストまたはホストに対して、すべてのノードのoracle OSユーザーにスクリプトの実行権限を付与します。
  3. 次のファイルを新しいセカンダリ・データベース・ホストにアップロードします。
    • 3_dataguardit_standby_root.sh: すべてのデータベース・ノードにアップロードします。
    • DG_properties.ini: すべてのデータベース・ノードにアップロードします。
  4. セカンダリ・データベース・ホストの場合は、スクリプトの実行権限をroot OSユーザーに付与します。

プライマリ・データベースのOracle Data Guardパラメータの準備

Oracle Data Guardを構成する前に、プライマリ・データベースでOracle Maximum Availability Architecture (MAA)推奨Oracle Data Guardパラメータを設定します。1_prepare_primary_maa_parameters.shスクリプトは、Oracle Data Guardの推奨MAAパラメータを構成し、スタンバイ・ログ・ファイルを作成します。

MAAは、Oracle Databasesのアーキテクチャ、構成およびライフサイクルのベスト・プラクティスを提供し、オンプレミス、クラウドまたはハイブリッド構成に存在するデータベースの高可用性サービス・レベルを実現します。

このスクリプトは、次のMAA推奨パラメータ値を設定します。
  • エクスポート DB_FLASHBACK_RETENTION_TARGET= 1440
  • エクスポート DB_BLOCK_CHECKSUM= FULL
  • エクスポート DB_BLOCK_CHECKING= FULL
  • エクスポート DB_LOST_WRITE_PROTECT= TYPICAL
  • エクスポート LOG_BUFFER= 256M
  • エクスポート STANDBY_FILE_MANAGEMENT= AUTO

ノート:

MAAベスト・プラクティスごとに、プライマリ・データベースでパラメータDB_BLOCK_CHECKINGMEDIUMまたはFULLに設定する必要があります。スクリプトによってFULLに設定されます。DB_BLOCK_CHECKINGMEDIUMまたはFULLにすることを有効にするパフォーマンス・オーバーヘッドがプライマリ・データベースで許容されない場合、スタンバイ・データベースに対してのみDB_BLOCK_CHECKINGMEDIUMまたはFULLに設定します。

Oracle Data Guardを構成する前に、スクリプトを実行してパラメータを設定します。このスクリプトは、プライマリがOracle Real Application Clusters (Oracle RAC)か単一のインスタンス・データベースのどちらであるかに関係なく、1回のみ実行します。

  1. oracleユーザーとしてプライマリ・データベース・ノードにログインします。
  2. 単一インスタンス・データベースのプライマリ・データベース・ホストで1_prepare_primary_maa_parameters.shスクリプトを実行するか、Oracle Real Application Clusters (Oracle RAC)でNode1を実行します。
    スクリプトによって、sysユーザーのパスワードの入力が求められます。

MAAパラメータを設定すると、スクリプトはONLINE_LOG_DEST1ディレクトリにスタンバイ・ログを作成します。スタンバイ・ログは、オンライン・ログ(REDOLOG_SIZE)と同じサイズです。オンライン・ログより1つのグループがありますが、スレッド数が同じです。

Oracle Data Guardのプライマリ・システムの準備

Oracle Data Guard構成のプライマリ・ホストを準備し、後でスタンバイ・データベース・ホストで必要な出力ファイルを作成します。

2_dataguardit_primary.shスクリプトは、次の出力ファイルを作成します。
  • パスワード・ファイルを含むTARファイル
  • TDEウォレットを含むTARファイル(TDE暗号化が使用されている場合のみ)。
  1. oracleユーザーとしてプライマリ・データベース・ノードにログインします。
  2. DG_properties.iniファイルが2_dataguardit_primary.shスクリプトと同じフォルダにあること、および環境値を使用して正しくカスタマイズされていることを確認します。
  3. プライマリDB Node1で2_dataguardit_primary.shスクリプトを実行します。

    スクリプトによって、sysユーザーのパスワードの入力が求められます。

    パスワード・ファイルがASMに格納されると、スクリプトはユーザーにcreate_pw_tar_from_asm_root.shスクリプトの実行を要求します。

    このスクリプトは、パスワード・ファイルのtarファイルとTransparent Data Encryption (TDE)ウォレット(TDEが使用されている場合)のtarファイルを作成します。
  4. プライマリがOracle Real Application Clusters (Oracle RAC)データベースの場合は、Node2でスクリプトを実行します。
  5. (推奨) net.core.rmem_maxnet.core.wmem_maxのオペレーティング・システム・パラメータを設定して、redo transportを最適化します。
    Oracle RACの場合は、両方のノードで最適化します。
    MAA推奨へのリンクについては、「詳細の確認」を参照してください。
  6. (推奨)最大転送単位(MTU)を設定して、redo transportを最適化します。
    Oracle RACの場合は、両方のノードで最適化します。
    MAA推奨へのリンクについては、「詳細の確認」を参照してください。

出力ファイルのコピー

プライマリ・データベース・ノードから生成された出力tarファイルをコピーし、セカンダリ・データベース・ホストにアップロードします。Oracle RACがある場合、tarファイルはNode1に作成されます。tarファイルをセカンダリホストの両方のノードにアップロードします。

DG_properties.iniファイルで定義されているプロパティINPUT_PASWORD_TARおよびINPUT_WALLET_TAR (TDE使用時)で示される場所にtarファイルを配置してください。

Oracle Data Guardのセカンダリ・システムの準備

新しいセカンダリ(スタンバイ)ホストを準備し、スタンバイ・データベースを作成し、セカンダリ・データベース・ノードでOracle Data Guardブローカを構成します。

3_dataguardit_standby_root.shスクリプトは、既存のデータベースを削除して必要なアーティファクト(TNS別名、NET暗号化、パスワード・ファイルおよびTransparent Data Encryption (TDE)ウォレット)を構成することで、新しいスタンバイ・データベース・ホストを準備します。次に、Oracle Recovery Manager (RMAN)restore from service機能を使用してスタンバイ・データベースを作成および構成し、Oracle Data Guardブローカを構成します。

3_dataguardit_standby_root.shスクリプトは、DG_properties.iniファイルで定義した環境変数を使用します。セカンダリがOracle RACデータベースの場合は、両方のノードでスクリプトを実行します。ほとんどのアクションは、スクリプトがNode1で実行され、ステップのサブセットがNode2で実行されたときに実行されます。Node1でスクリプトが完了する前に、Node2でスクリプトを実行しないでください。

  1. rootユーザーとしてセカンダリ・データベース・ノードにログインします。
    Oracle RACの場合は、Node1にログインします。
  2. スクリプトをアップロードしたディレクトリで3_dataguardit_standby_root.shスクリプトを見つけます。
  3. DG_properties.iniファイルが3_dataguardit_standby_root.shスクリプトと同じフォルダにあること、およびスクリプトのカスタマイズが正しいことを確認します。
  4. 3_dataguardit_standby_root.shスクリプトを実行します。
    スクリプトによって、sysユーザーのパスワードの入力が求められます。
  5. Oracle RACがある場合は、rootとしてNode2にログインし、Node1でスクリプトが完了したら、ノード2で3_dataguardit_standby_root.shスクリプトを実行します。
  6. (推奨) net.core.rmem_maxnet.core.wmem_maxのオペレーティング・システム・パラメータを設定して、redo transportを最適化します。
    Oracle RACの場合は、両方のノードで最適化します。
    Oracle Maximum Availability Architecture (MAA)推奨へのリンクについては、「詳細の確認」を参照してください。
  7. (推奨)最大転送単位(MTU)を設定して、redo transportを最適化します。
    Oracle RACの場合は、両方のノードで最適化します。
    MAA推奨へのリンクについては、「詳細の確認」を参照してください。

新しいスタンバイ・データベースのTNSエントリの追加

新しいスタンバイ・データベースを既存のOracle Data Guardインスタンス(ADDITIONAL_STANDBY=YES)に追加した場合は、以前の既存のスタンバイ・データベースを指すTNSエントリを新しいスタンバイ・データベースのtnsnames.oraファイルに追加し、逆にします。 スタンバイ・データベースがリスナー・ポートに接続できることを確認します。