Oracle

運送沒有數據文件的備用日誌

  • February 23, 2017

在建構新的備用數據庫時,是否可以讓它開始從主數據庫傳送歸檔日誌,而備用數據庫上還沒有數據文件?

是的!我們能做到這一點。

可以從以下展示中觀察到。

我有兩台主機 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

引用自:https://dba.stackexchange.com/questions/165086