(一) 設置archive_lag_target參數
1. 一旦設置了archive_lag_target初始化參數,數據庫將會週期性的檢查實例的當前重作日誌。若是遇到下列狀況,實例將會切換日誌:sql
n 當前日誌n秒前建立,當前日誌的歸檔時間估計爲m秒,n+m的值超過archive_lag_target參數設置。數據庫
n 當前日誌包含重作記錄。session
2. 在RAC環境中,實例老是使其餘線程切換並歸檔他們的日誌(若是他們滯後的話)。這是特別有用的,當集羣中的一個實例比其餘實例更空閒。oracle
3. archive_lag_target初始化參數指定在主數據庫關閉或失效的事件中,備用數據庫能夠損失多少秒的重作數據(若是data guard環境沒有被配置爲no-data-loss模式)。它同時也指定了主數據庫的當前日誌能夠跨越的時間上限(秒)。由於歸檔時間是個估計數,因此這不是一個精準的日誌切換時間。性能
4. 如下語句設置日誌切換間隔爲30分鐘(典型配置).net
archive_lag_target=1800線程
5. 該參數的默認值爲零,表示禁用基於時間的日誌切換功能;日誌
6. 即便沒有備用數據庫也能夠設置archive_lag_target參數。例如:archive_lag_target能夠設置爲強制日誌切換和歸檔;orm
7. archive_lag_target是動態參數,應該使用alter system語句設置。blog
8. 在RAC環境中,每一個實例的archive_lag_target參數必須設置爲相同的值。
(二) 影響設置archive_lag_target的因素
1. 若是想設置archive_lag_target參數,應該考慮下列因素:
n 切換日誌(也歸檔)的負載;
n 正常日誌切換的頻率;
n 備用數據庫能夠承受的重作數據丟失是多少。
2. 若是天然的日誌切換已經比指定的切換間隔更頻繁,設置archive_lag_target可能並非很是有用。然而,重作日誌產生的速度不規則的狀況下,間隔能夠爲當前日誌的覆蓋時間範圍提供一個上限限制;
3. 若是archive_lag_target被設置爲很低的值,可能會影響性能。由於這樣會強制頻繁地切換日誌;
4. archive_lag_target應該設置成一個不會下降主數據庫性能的值。
在DataGuard環境中,爲了減小故障時數據損失,咱們能夠設置ARCHIVE_LAG_TARGET參數,強制進行日誌切換。
ARCHIVE_LAG_TARGET參數能夠設置一個時間,經過時間限制,指定數據庫強制進行Log Switch,進行歸檔。
這個參數的缺省值是0,即爲不啓用該參數。該參數合理的取值範圍在60 ~ 7200之間。
一般大於7200和小於1800不被推薦,低於30分鐘的切換時間可能致使性能問題。
如下是個人一個生產環境的設置效果。
設置以前:
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> col name for a60
SQL> select name,COMPLETION_TIME from v$archived_log where name is not null;
NAME COMPLETION_TIME
------------------------------------------------------------ -------------------
/data2/oradata/STAT/archive/1_5441_593258512.dbf 2006-11-20 10:49:57
/data2/oradata/STAT/archive/1_5442_593258512.dbf 2006-11-20 15:49:50
因爲數據庫並不繁忙,日誌好久纔會切換一次。
設置archive_lag_target參數:
SQL> show parameter archive_lag
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
SQL> alter system set archive_lag_target=1800;
System altered.
SQL> show parameter archive_lag
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 1800
此時能夠看到日誌切換時間發生改變:
[oracle@STAT ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.2.0 - Production on Mon Nov 20 21:31:31 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination /data2/oradata/STAT/archiveOldest online log sequence 5449Next log sequence to archive 5451Current log sequence 5451SQL> ![oracle@STAT ~]$ ll /data2/oradata/STAT/archivetotal 125776-rw-r----- 1 oracle oinstall 43030016 Nov 20 10:49 1_5441_593258512.dbf-rw-r----- 1 oracle oinstall 43122688 Nov 20 15:49 1_5442_593258512.dbf-rw-r----- 1 oracle oinstall 14172672 Nov 20 17:31 1_5443_593258512.dbf-rw-r----- 1 oracle oinstall 3620864 Nov 20 18:02 1_5444_593258512.dbf-rw-r----- 1 oracle oinstall 3511296 Nov 20 18:32 1_5445_593258512.dbf-rw-r----- 1 oracle oinstall 3626496 Nov 20 19:02 1_5446_593258512.dbf-rw-r----- 1 oracle oinstall 4903936 Nov 20 19:32 1_5447_593258512.dbf-rw-r----- 1 oracle oinstall 3521536 Nov 20 20:02 1_5448_593258512.dbf-rw-r----- 1 oracle oinstall 5144576 Nov 20 20:32 1_5449_593258512.dbf-rw-r----- 1 oracle oinstall 3916800 Nov 20 21:02 1_5450_593258512.dbf