新しいスタンバイデータベースを構築するときに、まだスタンバイにデータファイルがない状態で、プライマリからアーカイブログの送信を開始することはできますか?
はい!私たちはそれができる。
これは次のデモで確認できます。
2つのホストServer1(192.168.30.132)とServer2(192.168.30.142)があり、ORClデータベースはServer1にあります。
いくつかの手順を省略し、たとえばスタンバイREDOログを作成し、答えを短くするための構成を省略しました。
On Server1
アーカイブログを有効にする
SQL> alter database archivelog;
Database altered.
強制ロギングを有効にします。
SQL> alter database force logging;
Database altered.
スタンバイ制御ファイルを作成します。
SQL> alter database create standby controlfile as '/home/Oracle/Desktop/orcl_stby.ctl';
Database altered.
Server2へのSCPスタンバイ制御ファイル。
[Oracle@server1 Desktop]$ scp orcl_stby.ctl [email protected]:/u01/app/Oracle/fast_recovery_area/ORCL2/controlfile/
Server2へのSCPパスワードファイル。
[Oracle@server1 dbs]$ scp orapworcl [email protected]:/u01/app/Oracle/product/11.2.0/db_1/dbs/
ログアーカイブ構成およびログアーカイブ宛先パラメーターを設定します。
SQL>ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcl2)';
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orcl2 NOAFFIRM lgwr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl2';
サーバー2上
必要なディレクトリを作成します。
$Oracle_BASE/admin/db_unique_name/adump
fast_recovery_area/db_unique_name/controlfile
fast_recovery_area/db_unique_name/archivelog
次のパラメータを使用してinitSID.oraファイルを作成しますOR Server1にpfileを作成し、Server2にSCPを作成できます。
[Oracle@server2 dbs]$ vi initorcl2.ora
db_name= orcl
db_unique_name=orcl2
compatible=11.2.0.4
control_files='/u01/app/Oracle/fast_recovery_area/ORCL2/controlfile/orcl_stby.ctl
[Oracle@server2 dbs]$ sqlplus / as sysdba
SQL> startup nomount
SQL> create spfile from memory;
File created.
SQL> shut immediate
ORA-01507: database not mounted
Oracle instance shut down.
SQL> startup nomount
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
Oracle instance started.
Total System Global Area 217157632 bytes
Fixed Size 2251816 bytes
Variable Size 159384536 bytes
Database Buffers 50331648 bytes
Redo Buffers 5189632 bytes
SQL> alter database mount;
Database altered.
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcl2)';
System altered.
SQL> alter system set db_recovery_file_dest_size=500M;
System altered.
SQL> alter system set db_recovery_file_dest='/u01/app/Oracle/fast_recovery_area/';
System altered.
On Server1
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
サーバー2上
[Oracle@server2 archivelog]$ pwd
/u01/app/Oracle/fast_recovery_area/ORCL2/archivelog
[Oracle@server2 archivelog]$ ls
2017_02_22
[Oracle@server2 archivelog]$ cd 2017_02_22/
[Oracle@server2 2017_02_22]$ ls
o1_mf_1_36_dbtc52mg_.arc
[Oracle@server2 2017_02_22]$
プライマリのLGWR/ARCnプロセスとスタンバイのRFSプロセスが実行されている限り、スタンバイデータベースにデータファイルを配置せずにアーカイブログを転送できます。
サーバー2上
SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;
PROCESS STATUS THREAD# SEQUENCE# BLOCK# BLOCKS
--------- ----------- -------- ---------- ---------- ----------
RFS IDLE 0 0 0 0