標籤:ar 使用 sp 檔案 資料 art log cti bs
重做日誌(redo log)是由LGWR來進行控制的。Oracle對於DML操作資料的時候,並不會馬上去修改資料區塊,而是產出redo記錄,並記錄到聯機的redo log裡,當redo Log用滿,或者啟動全域checkpoint,也或者alter system switch logfile; 這時都會切換redo log group,(如果redo log狀態為current,是當前redo log,如果是inactive就是已經有DBWN寫入資料區塊,Inactive還沒有寫入)redo log進行切換時,有一定的消耗,或者有時由於redo log過小而造成一定的錯誤,這時,我們都需要將redo log調整變大。
我們可以採取以下步驟來達到目的
1. 檢查logfile組狀態
SQL> select a.status, b.member, a.THREAD#, a.GROUP# from v$log a, v$logfile b where a.GROUP#=b.GROUP#;
STATUS MEMBER THREAD# GROUP#
—————- ————————————————————- ———- ———-
CURRENT /opt/oracle/oradata/ocrl/redo01.log 1 1
INACTIVE /opt/oracle/oradata/ocrl/redo02.log 1 2
INACTIVE /opt/oracle/oradata/ocrl/redo03.log 1 3
2. 將inactive的redo.log刪除,inactive的redo.log已經寫入資料區塊。
SQL> alter database drop logfile ‘/opt/oracle/oradata/ocrl/redo03.log’; 或者直接用
SQL> alter database drop logfile group 3;
3. 添加上面被drop掉的redo log group
SQL> alter database add logfile group 3 (’/opt/oracle/oradata/ocrl/redo03.log’) size 120M reuse;
4. 迴圈2,3把所有的inactive的redo log檔案都resize掉
5. 對於current和active的redo log檔案,需要先把redo log做到inactive狀態,在前言部分就已經提到了,current表示是當前正在記錄的redo log檔案,對待這樣的我們需要
SQL>alter system switch logfile; 切換記錄檔,不過由於redo log的重做日誌不會馬上觸發DBWR寫資料庫,所以這個redo log的狀態由current變成active狀態,我們看查看
SQL> select a.status, a.THREAD#, a.GROUP# from v$log a;
STATUS THREAD# GROUP#
—————- ———- ———-
CURRENT 1 1
INACTIVE 1 2
UNUSED 1 3
SQL>alter system switch logfile;
SQL> select a.status, a.THREAD#, a.GROUP# from v$log a;
STATUS THREAD# GROUP#
—————- ———- ———-
ACTIVE 1 1
CURRENT 1 2
UNUSED 1 3
(注意 group 3是我新加入的redo log group,還沒有被使用,狀態是UNUSED)
5. 對於active狀態的,表示這裡的髒資料還沒有寫入寫入資料庫,手工加個全域檢查點,督促CKPT馬上喚醒DBWR寫入髒資料
SQL>alter system checkpoint;
查看v$log
STATUS THREAD# GROUP#
—————- ———- ———-
INACTIVE 1 1
CURRENT 1 2
UNUSED 1 3
在使用2,3步把group 1也重建。
6. 依照4,5把所有active的redo log做掉
到此,所有的redo log都已經全面改變大小,任務完成。
這裡要注意兩點
1. 單純加redo log group單個檔案的大小沒有作用,同一個group裡,檔案大小都是一致的。
2. 如果是歸檔模式的話,確保已經自動歸檔,如果手動歸檔的話,需要在alter system switch logfile鎖死的時候,用alter system log current 來手動歸檔。或者通過alter system archive log start開啟自動歸檔。否則的話,當redo log group切換完整個groups的時候,會一直等待狀態.
[轉] 增大oracle重做日誌的大小