如何針對物理DataGuard設定延時日誌應用?
為了設定延時Apply,需要在log_archive_dest_n 引數上使用“DELAY=",比如:DELAY=360(單位為分鐘),表示延時360分鐘(6小時)。比如:
SQL〉alter system set log_archive_dest_2='SERVICE=standby LGWR SYNC AFFIRM DELAY=360 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) COMPRESSION=ENABLE DB_UNIQUE_NAME=standby';
如果只指定了DELAY引數,但是沒有指定具體的值,預設是30分鐘。
需要注意的是,如果已經啟用了實時日誌應用(real-time apply ),DELAY這個引數會被忽略,因此不會啟用延時日誌應用,同時,在備庫的alert log中您可以看到類似下面的資訊:
WARNING: Managed Standby Recovery started with USING CURRENT LOGFILE
DELAY 360 minutes specified at primary ignored <<<<<<<<<
這種情況下,需要停止實時日誌應用,按照非實時模式啟動MRP,比如:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
請參考下面的具體的例子:
1. 檢視主庫的引數設定:
SQL> show parameter log_archive_dest_2
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string SERVICE=STANDBY LGWR SYNC AFFI
RM VALID_FOR=(ONLINE_LOGFILES,
PRIMARY_ROLE) DB_UNIQUE_NAME=S
TANDBY
2. 在主庫設定延時5分鐘:
SQL> alter system set log_archive_dest_2='SERVICE=STANDBY LGWR SYNC AFFIRM delay=5 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STANDBY';
3. 驗證是否延時:
主庫執行:
SQL> alter system switch logfile;
System altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
28
備庫:
Wed Jun 13 19:48:53 2012
Archived Log entry 14 added for thread 1 sequence 28 ID 0x4c9d8928 dest 1:
ARCb: Archive log thread 1 sequence 28 available in 5 minute(s)
Wed Jun 13 19:48:54 2012
Media Recovery Delayed for 5 minute(s) (thread 1 sequence 28) <<<<<<<<延時生效
Wed Jun 13 19:53:54 2012
Media Recovery Log /home/Oracle/arch1/standby/1_28_757620395.arc<<<<<5分鐘後才應用這個歸檔
Media Recovery Waiting for thread 1 sequence 29 (in transit)
更多的資訊,請參考官方文件:
http://docs.oracle.com/cd/E11882_01/server.112/e25608/log_apply.htm
Oracle® Data Guard Concepts and Administration
11g Release 2 (11.2)
Part Number E25608-03