トポロジのデプロイの準備
Data Guardが機能するには、異なるリージョンの2つのデータベースが通信する必要があります。そのため、OCIの2つのリージョン間に、それぞれのDRGを介してリモート・ピアリング接続を設定する必要があります。DRGは、OracleDB for Azure設定によって作成されるため、既存のDRG間のリモート・ピアリング接続を確立するだけで済みます。
ネットワークの設定
ネットワークを設定するには、次のステップを実行します
- Azure VMおよびOracleDB for Azureデータベース・システムのネットワーク接続を設定します。
- Oracle DBシステムのssh秘密キーがAzure VMで使用可能であることを確認します。
- Azure VMsとOracleDB for Azure DBシステム間の接続をテストします。
- OCIのデータベース・システムのネットワークを設定します。
- まず、リージョン1のDB SystemのVCN詳細に移動し、「Dynamic Routing Gateway Attachments」、次にDRG名を選択して、DRGの詳細をリージョン1にロードします。次に、「リモート・ピアリング接続アタッチメント」を選択します。2番目のブラウザ・ウィンドウで、リージョン2に対してまったく同じ操作を行います。
- 次に、両方のリージョンで、「リモート・ピアリング接続の作成」を選択してRPCを作成します。
- 両方のRPCが作成されたら、リージョン1でRPC名を選択し、OCIDをコピーします。
- リージョン2で、RPC名を選択し、「接続の確立」を選択します。リージョン1の正しいリージョン名(接続先)を選択し、前のステップでコピーしたリージョン1のRPCのOCIDを指定します。接続を確立してからしばらくすると、ピア・ステータスは「ピアリング済」になります。
- 次に、2つのリージョンのVCN間のトラフィックを許可します。VCNの詳細に移動し、デフォルトのセキュリティ・リストを選択します。反対のVCNのCIDR範囲からのトラフィックを許可するには、「イングレス・ルールの追加」を選択します。
- 最後に、Azureの仮想マシンからそれぞれのOCIベースDBシステムに接続します。両方のベースDBシステムの
tnsnames.ora
ファイルを編集して、もう一方のデータベースに接続します。 - 両方のDBシステムから反対側のデータベースへの
tnsping
が正常に動作していることを確認します。
Oracle Database for Azure DR構成の設定
OracleデータベースをAzure DR構成用に設定するには、次に示すように、プライマリ・データベースとセカンダリ・データベースの両方を準備する必要があります。
ノート:
「コピー」をクリックして、コマンドラインに貼り付けるためにコマンド例をクリップボードに保存します。variables
は、実装に固有の値に置き換えてください。
プライマリ・データベースの準備
プライマリ・データベースを準備するには、静的リスナーの構成、tnsnames.oraファイルの更新、および様々なデータベース設定およびパラメータの構成を行う必要があります。
SQL>
プロンプトから、次の情報を確認します。- データベース・フラッシュバックが有効であることの確認
- チェック・フォース・データベース・ロギング使用可能
- データベースがアーカイブ・ログ・モードであることを確認してください
- データベースがオープン・モードであることを確認してください
- データベースがプライマリ・データベース・ロールにあることを確認してください
select log_mode, FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE from v$database ;
出力は次のようになります。LOG_MODE FORCE_LOGGING FLASHBACK_ON OPEN_MODE DATABASE_ROLE ---------------- ------------------------ ---------------------- -------------------- ----------------------- ARCHIVELOG YES YES READ WRITE PRIMARY
- 次のコマンドを実行して、自動スタンバイ・ファイル管理がautoに設定されていることを確認します。
show parameter standby_file_management
出力は次のようになります。NAME TYPE VALUE ------------------------------------ ----------- ---------- standby_file_management string AUTO
- ブローカ構成ファイルを設定します。
show parameter dg_broker_config_file1;
出力は次のようになります。NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file1 string /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr1dbuks_898_lhr.dat
その後、このコマンドを入力します。
show parameter dg_broker_config_file2;
出力は次のようになります。NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file2 string /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr2dbuks_898_lhr.dat
- Data Guardブローカを有効にします。
show parameter dg_broker_start
出力は次のようになります。NAME TYPE VALUE ------------------------------------ ----------- -------------- dg_broker_start boolean FALSE
その後、次のコマンドを入力します。alter system set dg_broker_start=true scope=both;
show parameter dg_broker_start
出力は次のようになります。NAME TYPE VALUE ------------------------------------ ----------- -------------- dg_broker_start boolean TRUE
- コマンド・プロンプト(
[oracle@ldbuksdr ]$
など)から、リスタナのステータスを確認します。lsnrctl status
- データベース構成の詳細に注意してください。
srvctl config database -d db_unique_name
tns
エントリに注意してください。cat $ORACLE_HOME/network/admin/tnsnames.ora
- ノート
sqlnet.ora
の出力:cat $ORACLE_HOME/network/admin/sqlnet.ora
- 次のコマンドを入力して、
/tmp
の場所にあるスタンバイDBシステムにパスワード・ファイルをコピーします:cd .ssh
scp -i private_key /tmp/orapw<sid> opc@ip_standby_vm:/tmp/orapwsid
- ウォレット・ファイルを見つけて、
/tmp
の場所のスタンバイDBシステムにコピーします:select CON_ID, WRL_PARAMETER, WRL_TYPE, STATUS, WALLET_TYPE from V$ENCRYPTION_WALLET;
出力は次のようになります。CON_ID WRL_PARAMETER STATUS WALLET_TYPE ---------- ------------------------------------------------------------------------------ ------------ ------------ ---------------------------- 1 /opt/oracle/dcs/commonstore/wallets/dbuks_898_lhr/tde/ OPEN AUTOLOGIN 2 OPEN AUTOLOGIN 3 OPEN AUTOLOGIN
さらに、次のように入力します。cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde ls -ltra
次のように表示されます:-rw------- 1 oracle asmadmin 5467 Jun 19 18:59 ewallet.p12 -rw------- 1 oracle asmadmin 5512 Jun 19 18:59 cwallet.sso
次に、次のコマンドを入力します(db_unique_name
はウォレットのデータベースの一意の名前)。[oracle@ ~]$ cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12/tmp/cwallet.p12
cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso/tmp/cwallet.sso
chmod 777 /tmp/ewallet.p12
chmod 777 /tmp/cwallet.sso
scp -i private_key /tmp/ewallet.p12 opc@ip_standby_vm:/tmp/ewallet.p12
scp -i private_key /tmp/cwallet.sso opc@ip_standby_vm:/tmp/cwallet.sso.
- 静的リスナーを構成します。スタンバイ・データベースの初期インスタンス化には、静的リスナーが必要です。データベースが停止すると、静的リスナーによってインスタンスへのリモート接続が有効になり、Oracle Data Guardを使用してインスタンスを起動できます。
listener.ora
ファイルに改行または空白がないことを確認してください。プライマリ・データベースで、
listener.ora
ファイルにSID_LIST_LISTENER
ファイルを追加して、プライマリ・データベースのデータベースの一意の名前、Oracle HomeおよびOracleシステム識別子(SID)を含めます。
次のエントリをlsnrctl status vi listener.ora
listener.ora
に追加します。ここでは:DB_UNIQUE_NAME
は、プライマリ・データベースの一意の名前です。ORACLE_HOME
は、プライマリ・データベースのローカルOracleホームです。ORACLE SID
は、プライマリ・データベースのSIDです。
エントリは次のようになります(SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE SID)))
GLOBAL_DBNAME
、ORACLE_HOME
およびSID_NAME
のエントリは異なります)。SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com) (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
リスナーを再ロードし、そのステータスを確認します。lsnrctl reload lsnrctl status
tns
エントリを構成します。適切なREDO転送を確保するには、プライマリおよびスタンバイの両方のtnsnames.ora
ファイルに各データベースのエントリが必要です。IPアドレスは、サーバー名をIPアドレスに解決するためのDNSがデータベース間にないために使用されます。次の例を使用して、構成に関連する値を置換します。Oracle Real Application Clusters (Oracle RAC)構成ではスキャン・リスナー名を解決できないため、アドレス・リストを使用してすべてのノードを定義する必要があります。これらは後で追加されます。初期インスタンスでは、Oracle Recovery Manager (RMAN)が常に同じノードに接続していることを確認するために、tnsエントリに1つのIPアドレスのみをリストする必要があります。[oracle@~]$ cd $ORACLE_HOME/network/admin [oracle@~]$ vi tnsnames.ora
tnsnames.ora
ファイルのエントリは、次のようになります。DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))
スタンバイ・データベースの準備
次に、スタンバイ・データベースを準備します。
- Oracle Database for Azureツールで作成されたデータベースを手動で削除します。 スタンバイ・データベースを削除する前に、現在のdb_unique_nameを保存し、後で使用するウォレットの場所をメモします。次の問合せは、ウォレットの場所の詳細を示します。
- sqlplusコマンド・プロンプトで、次のように入力します。
select * from V$ENCRYPTION_WALLET;
- 次に、
rm_dbfiles.sql
スクリプトを準備して、データベース関連ファイルを削除します。srvctl config database -d db_unique_name
- 次のスクリプトを実行して、スタンバイとして構築するデータベースを停止し、データベース・ファイルを削除します。
vi rm_dbfiles.sql set heading off linesize 999 pagesize 0 feedback off trimspool on spool /home/oracle/demo/files.lst select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from v$logfile; spool off create pfile='/home/oracle/demo/ORACLE_UNQNAME.pfile' from spfile; exit
- 次に、システムDBAとしてsqlplusプロンプトに移動します。
sqlplus "/ as sysdba"
次のコマンドを実行します。@rm_dbfiles.sql
exit
- 次に、読取り、書込みおよび実行の権限を付与します(
db_unique_name
は影響を受けるデータベースの一意の名前)。chmod 777 files.lst
srvctl stop database -d db_unique_name
- 保存してスクリプトを実行します。
./files.lst
- sqlplusコマンド・プロンプトで、次のように入力します。
/tmp
で受信したパスワード・ファイルおよびウォレット・ファイルを、プライマリ・データベースからスタンバイ・データベースDBシステムのそれぞれの場所にコピーします。- プライマリから/tmpで受信したデータベース・パスワード・ファイルおよびウォレット・ファイルをスタンバイ・データベースDBシステムのそれぞれの場所にコピーします(orapwsidはSIDパスワードです)。
たとえば次のようにします。sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid
次のように出力されます。sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
-rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- パスワード・ファイルのmd5sum出力がプライマリとスタンバイで一致することを確認します(ここで、orapwsidはSIDパスワードです)。
プライマリ・データベースの出力は次のようになります(orapwsidはmd5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid
orapwdbuks
)。
スタンバイ・データベースの場合:b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- 既存のウォレット・ファイルを削除し、
/tmp
からTDEの場所にウォレット・ファイルをコピーします(db_unique_name
は影響を受けるデータベースの一意の名前)。[oracle@ ~]$ cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/
rm ewallet.p12 cwallet.sso
sudo cp /tmp/ewallet.p12 /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
sudo cp /tmp/cwallet.sso /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.ss
chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
sudo chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso
- プライマリから/tmpで受信したデータベース・パスワード・ファイルおよびウォレット・ファイルをスタンバイ・データベースDBシステムのそれぞれの場所にコピーします(orapwsidはSIDパスワードです)。
- 静的リスナーを構成します。
- OCIのスタンバイ・データベースで、
SID_LIST_LISTENER
ファイルを追加して、データベースの一意の名前、OCIのOracle Homeおよびプライマリ・データベースのOracleシステム識別子(SID)を含めます。lsnrctl status
vi listener.ora
- 次のエントリを
listener.ora
ファイルに追加します。ここでは:- DB_UNIQUE_NAMEは、プライマリ・データベースの名前です。
- ORACLE_HOMEは、プライマリ・データベースのローカルOracleホームです。
- ORACLE SIDは、プライマリ・データベースのSIDです。
たとえば、エントリは次のようになります。SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE_SID)))
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME= dbuks_r2j_ams. odsp083156.cvcn.oraclevcn.com) (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
- リスナーを再ロードし、ステータスを確認します。
lsnrctl reload
lsnrctl status
- OCIのスタンバイ・データベースで、
tns
エントリを構成します。cd $ORACLE_HOME/network/admin
vi tnsnames.ora
tnsnames.ora
ファイルのエントリは、次のようになります。DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))