Oracle
運送沒有數據文件的備用日誌
在建構新的備用數據庫時,是否可以讓它開始從主數據庫傳送歸檔日誌,而備用數據庫上還沒有數據文件?
是的!我們能做到這一點。
可以從以下展示中觀察到。
我有兩台主機 Server1(192.168.30.132) 和 Server2(192.168.30.142),ORCl 數據庫在 Server1 上。
我跳過了一些步驟,例如創建備用重做日誌和配置以使答案簡短。
在伺服器 1 上
啟用歸檔日誌
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.
SCP 備用控製文件到 Server2。
[oracle@server1 Desktop]$ scp orcl_stby.ctl oracle@192.168.30.142:/u01/app/oracle/fast_recovery_area/ORCL2/controlfile/
SCP 密碼文件到 Server2。
[oracle@server1 dbs]$ scp orapworcl oracle@192.168.30.142:/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 文件,或者您可以在 Server1 和 SCP 上創建 pfile 到 Server2。
[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.
在伺服器 1 上
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