Data Guard のスタンバイ データベースを作成する
プライマリ データベースを Data Guard 用に準備すると、スタンバイ サイトに複製できるようになります。以下のガイドでは、アクティブな複製を使用して、データベースの一貫性のあるコピーを作成しています。
このガイド全体を通して、次の例を使用します。
| データベースの一意の名前 | サーバーのホスト名 | RAC インスタンス名 | 役割 |
|---|---|---|---|
| DBDG_SITE1 | site1db1、site1db2 | DBDG_SITE11、DBDG_SITE12 | プライマリ |
| DBDG_SITE2 | site2db1、site2db2 | DBDG_SITE21、DBDG_SITE22 | スタンバイ |
このガイドの Oracle を実行する Bare Metal Solution サーバーには、次の環境変数が構成されています。
| 環境変数名 | 値 |
|---|---|
| ORACLE_BASE | /apps/oracle/oracle_base |
| ORACLE_HOME | /apps/oracle/19.0.0/db_home1 |
設定によっては、環境変数のパスの変更が必要になる場合があります。
スタンバイ データベースを設定する
データベース接続を構成する
スタンバイの場所にある各 Bare Metal Solution サーバーにログインし、$ORACLE_HOME/network/admin/tsnames.ora ファイルを変更して、ネットサービスの構成を更新します。
DBDG_SITE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE2) (UR=A)
)
)
DBDG_SITE1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE1)
)
)
一時リスナーを構成する
他のデータベース接続に使用されるリスナーの再起動を避けるため、データベースの重複は一時的なリスナーを使用して行われます。この例ではポート 1523 を使用していますが、クラスタ間の通信用に開いている任意のポートを使用できます。この一時リスナーは、データベースを複製した後に削除します。
スタンバイの場所にあり、データベースの複製プロセスで使用する最初の Bare Metal Solution サーバーにログインします。
$ORACLE_HOME/network/admin/listener.oraファイルを変更して、ネットサービスの構成を更新します。LISTENER_DBDG_SITE2 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = site1db1)(PORT = 1523)) ) ) SID_LIST_LISTENER_DBDG_SITE2 = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = DBDG_SITE2_DGMGRL) (ORACLE_HOME = ORACLE_HOME) (SID_NAME = DBDG_SITE21) ) ) ADR_BASE_LISTENER = /apps/oracle/oracle_base一時リスナーを起動します。
lsnrctl start LISTENER_DBDG_SITE2
スタンバイ データベースを準備する
各データベース インスタンスには、監査ログを格納するディレクトリが必要です。スタンバイ データベースの場所にある各 Bare Metal Solution サーバーに、監査ファイル用のディレクトリを作成します。
mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump前にスタンバイ データベース サーバーにコピーした
$ORACLE_HOME/dbs/initDBDG_SITE21.oraファイルを変更します。db_unique_nameを新しいスタンバイ データベース名に設定します。- インスタンス固有のパラメータを変更して、スタンバイ データベースのインスタンス名を反映します。以下に例を示します。
instance_numberthreadundo_tablespace
audit_file_destパラメータを設定して、前の手順で作成したディレクトリを使用します。- 各場所の ASM ディスクグループが異なる名前を使用している場合は、新しいファイルの場所に合わせて
db_file_name_convertパラメータとlog_file_name_convertパラメータを変更します。 control_filesパラメータをコメントアウトします。
次の例に、このガイドの例を使用して変更したデータベース パラメータ ファイルを示します。パラメータ ファイルに、データベース設定に固有の追加パラメータが含まれていることに注意してください。スタンバイの変更が必要なパラメータのみが示されています。
*.db_unique_name='DBDG_SITE2' DBDG_SITE21.instance_number=1 DBDG_SITE22.instance_number=2 DBDG_SITE21.thread=1 DBDG_SITE22.thread=2 DBDG_SITE21.undo_tablespace='UNDOTBS1' DBDG_SITE22.undo_tablespace='UNDOTBS2' *.audit_file_dest='/apps/oracle/oracle_base/admin/DBDG_SITE2/adump' #*.control_files='+DATA/DBDG_SITE1/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE1/CONTROLFILE/current.257.1091317089'/etc/oratabファイルで、oraenvコマンドがスタンバイ データベースの環境変数を設定できるようにエントリを追加します。DBDG_SITE21:ORACLE_HOME:N
スタンバイ データベースを作成する
スタンバイ データベースに接続できるように
ORACLE_SID環境変数を設定します。source oraenv <<< "DBDG_SITE21"レスポンス
The Oracle base has been set to /apps/oracle/oracle_baseが返されます。プライマリ データベースを複製する前に、1 つのノードでスタンバイ インスタンスを手動で開始する必要があります。スタンバイの場所にある最初の Bare Metal Solution サーバーにログインします。SQL*Plus を起動して
pfileを使用し、nomount modeのスタンバイ データベースを起動します。sqlplus / as sysdbaSTARTUP NOMOUNT PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';成功すると、次のようなレスポンスが返されます。
ORACLE instance started. Total System Global Area 1.2885E+10 bytes Fixed Size 15988824 bytes Variable Size 1845493760 bytes Database Buffers 1.1006E+10 bytes Redo Buffers 17563648 bytesインスタンスを起動したら、SQL*Plus を終了します。
EXIT;スタンバイ データベース サービスへの接続を確認します。プライマリ データベースの場所にある各 Bare Metal Solution サーバーから、SQL*Plus を使用してスタンバイ インスタンスに接続してみます。インスタンスに正常に接続できるように、SYS リモート ログインのパスワードを手動で入力します。
sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba成功すると、標準の SQL*Plus プロンプトが表示され、インスタンス パラメータを確認できます。
SHOW PARAMETER DB_UNIQUE_NAME;次のようなレスポンスが返されます。
NAME TYPE VALUE ---------------- ----------- ------------------------------ db_unique_name string DBDG_SITE2DB_UNIQUE_NAMEパラメータを確認した後、SQL*Plus を終了します。EXIT;Recovery Manager に接続して
duplicateコマンドを実行し、アクティブ プライマリ データベースからスタンバイを複製します。rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATIONDUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;正常に処理されると、次のようなメッセージが表示されます。
Finished Duplicate Db at ...Recovery Manager を終了します。
EXIT;
スタンバイ データベースの作成を完了する
データベースの複製中に、ASM はスタンバイ データベース用に新しい制御ファイルを作成します。新しいスタンバイ インスタンスに接続して、新しい制御ファイル名を取得します。次の例は、
+DATAディスクグループと+RECOディスクグループに保存される 2 つの制御ファイルを示しています。sqlplus / as sysdbaSET LINESIZE 140 COLUMN NAME FORMAT a15 COLUMN VALUE FORMAT a125 SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='control_files';制御ファイルの名前が [Value] フィールドに表示されます。
NAME VALUE --------------- ---------------------------------------------------------------------------------------------------- control_files +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089前の手順の制御ファイル名を記録し、
$ORACLE_HOME/dbs/initDBDG_SITE21.oraのcontrol_filesパラメータのエントリを新しい値に置き換えます。制御ファイルが複数ある場合は、それぞれをカンマで区切って一重引用符で囲みます。*.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'SQL*Plus でスタンバイ データベースに接続し、変更した
pfileから新しいspfileを作成します。sqlplus / as sysdbaCREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';asmcmdコマンドを使用して、パスワード ファイルを ASM ディスクグループにコピーします。asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2スタンバイ データベース インスタンスをシャットダウンし、一時的な
pfileファイルとパスワード ファイルを削除します。sqplus / as sysdbaSHUTDOWN IMMEDIATE; EXIT;rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.oraスタンバイ データベースの場所にある最初の Bare Metal Solution サーバーで、データベースの重複に使用される一時リスナーを停止します。
lsnrctl stop LISTENER_DBDG_SITE2スタンバイ データベースの場所にある最初の Bare Metal Solution サーバーで、
$ORACLE_HOME/network/admin/listener.oraファイルの一時エントリを削除します。srvctlコマンドを使用して、新しいスタンバイ データベースとインスタンスをクラスタ レジストリに追加します。srvctl add database \ -db DBDG_SITE2 \ -oraclehome /apps/oracle/19.0.0/db_home1 \ -spfile +DATA/DBDG_SITE2/spfileDBDG_SITE2 \ -pwfile +DATA/DBDG_SITE2/orapwDBDG_SITE2 \ -role PHYSICAL_STANDBY \ -startoption MOUNT srvctl add instance \ -db DBDG_SITE2 \ -instance DBDG_SITE21 \ -node site2db1 srvctl add instance \ -db DBDG_SITE2 \ -instance DBDG_SITE22 \ -node site2db2srvctlコマンドを使用して、スタンバイ データベースを起動します。srvctl start database -db DBDG_SITE2