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_number
thread
undo_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 sysdba
STARTUP 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_SITE2
DB_UNIQUE_NAME
パラメータを確認した後、SQL*Plus を終了します。EXIT;
Recovery Manager に接続して
duplicate
コマンドを実行し、アクティブ プライマリ データベースからスタンバイを複製します。rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATION
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;
正常に処理されると、次のようなメッセージが表示されます。
Finished Duplicate Db at ...
Recovery Manager を終了します。
EXIT;
スタンバイ データベースの作成を完了する
データベースの複製中に、ASM はスタンバイ データベース用に新しい制御ファイルを作成します。新しいスタンバイ インスタンスに接続して、新しい制御ファイル名を取得します。次の例は、
+DATA
ディスクグループと+RECO
ディスクグループに保存される 2 つの制御ファイルを示しています。sqlplus / as sysdba
SET 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 sysdba
CREATE 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 sysdba
SHUTDOWN 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 site2db2
srvctl
コマンドを使用して、スタンバイ データベースを起動します。srvctl start database -db DBDG_SITE2