1. 程式人生 > >ORACLE重做日誌檔案基礎知識

ORACLE重做日誌檔案基礎知識

注:對重做日誌檔案的操作都需要以sys或者system使用者登陸
1、引入重做日誌的目的

為了資料庫的恢復

2、什麼是重做日誌組

重做日誌組是邏輯上的概念,由重做日誌檔案組成的。要保證oracle資料庫正常工作,至少需要2個重做日誌組,多數oracle版本預設3個重做日誌組

3、什麼是重做日誌成員
重做日誌組中的每個重做日誌檔案叫做重做日誌成員。oracle預設每個重做日誌組只有一個成員,但是oracle建議每個重做日誌組至少有2個成員,且最好放在不同物理磁碟上,以防止重做日誌成員檔案的物理錯誤,許多資料庫的每個重做日誌做有3個成員。

4、重做日誌怎樣工作
重做日誌寫程序(LGWR)在任意時刻只能寫一組重做日誌組,LGWR後臺程序正在寫的重做日誌組叫做當前重做日誌組。
LGWR將完全相同的資訊從重做日誌緩衝區複製到改組的每個重做日誌檔案中。LGWR是以迴圈的方式寫重做日誌組的,當寫滿一個重做日誌組時,就會開始寫下一組重做日誌,這稱為日誌切換,當寫滿最後一組時,LGWR又開始寫第一組重做日誌。
如果資料庫執行在歸檔模式下(oracle預設為非歸檔模式),當LGWR的寫操作從一個重做日誌組切換到下一個重做日誌組後,歸檔寫程序(ARCH/ARCH0)就會將原來的重做日誌檔案中的資訊複製到歸檔日誌檔案中。oracle伺服器保證在歸檔寫程序沒有將重做日誌檔案中的資訊複製到歸檔日誌檔案中之前,LGWR程序不能再寫這組重做日誌。

5、如何控制重做日誌的切換和檢查點的產生

(1)alter system switch logfile;--強制產生重做日誌切換
(2)alter system checkpoint;--強制產生檢查點

還可以通過設定fast_start_mttr_target引數來強制產生檢查點,引數值的單位是秒,該引數的含義是:例項恢復時間不會超過多少秒

6、怎樣使用資料字典v$log和v$logfile

(1)select * from v$log;--獲取資料庫中有多少個重做日誌組,每組有多少個成員、成員大小和狀態等資訊
    select group#,sequence#,members,bytes,status,archived from  v$log;
重做日誌組各狀態的含義:
inactive:表示例項恢復已不再需要這組聯機重做日誌組了
active:表示這組聯機重做日誌組是活動的,在例項恢復時需要這組聯機重做日誌組,如這組重做日誌組正在歸檔
current:表示這組聯機重做日誌組為當前組,也隱含該聯機重做日誌組是活動的
unused:表示orcle從來沒有寫過這組聯機重做日誌組,這是重做日誌組剛新增到資料庫中的狀態

(2)select * from v$logfile;--獲取資料庫中每個重做日誌組中每個成員所在目錄、檔名及他們的狀態等資訊
    col member for a45;--格式化輸出
    select * from group#,status,type,member from v$logfile;
重做日誌成員各狀態含義
空白:表示該檔案正在被使用
stale:表示該檔案的內容是不完全的
invalid:表示該檔案不可以被訪問
delted:表示該檔案已不再有用了

7、怎樣新增和刪除一組聯機重做日誌
(1)alter database add logfile group 3('F:\DISK3\REDO04A.LOG','F:\DISK3\REDO04B.LOG','F:\DISK3\REDO04C.LOG') 
size 15M;--指定要新增的重做日誌組
(2)alter database add logfile ('F:\DISK3\REDO04A.LOG','F:\DISK3\REDO04B.LOG','F:\DISK3\REDO04C.LOG') 
size 15M;--由系統自動在最大組號上加1來產生新的組號
(3)alter database drop logfile group 3;--刪除重做日誌組
當前的(current)和活動的(active)重做日誌組是不能被刪除的,方法有2個:
a、若要刪除先切換重做日誌組,然後刪除
b、先關閉資料庫,再開啟資料庫,之後就可以輕鬆刪除這些成員了
但是重做日誌所對應的作業系統檔案不會被刪除,需要找到這些檔案用作業系統命令或工具將他們從作業系統中徹底刪除

8、怎樣新增和刪除聯機重做日誌成員
(1)alter database add logfile member
'F:\DISK3\REDO01D.LOG' to group 1,
'F:\DISK3\REDO02D.LOG' to group 2,
'F:\DISK3\REDO03D.LOG' to group 3;--向三組重做日誌組分別增加一個重做日誌成員,大小與原成員大小相同
(2)alter database drop logfile member 'F:\DISK3\REDO01D.LOG';--刪除重做日誌成員
9、怎樣清除聯機重做日誌檔案
(1)alter database clear logfile group 組號;--初始化重做日誌檔案
(2)alter database clear unarchived logfile group 組號;--清除重做日誌檔案並且避免對重做日誌進行歸檔
10、什麼情況下需要清除聯機重做日誌檔案
在無法使用將重做日誌組或成員刪掉再重建的方式來維護或修復重做日誌的情況下,如:
(1)資料庫中只有兩個重做日誌組
(2)崩潰的重做日誌組為當前組
這種情況下,如果資料庫時開啟的,由於一個聯機重做日誌檔案的崩潰使得歸檔活動不能繼續進行,最終會導致資料庫的掛起,這時候就需要清除聯機重做日誌檔案

11、清除聯機重做日誌檔案的副作用是什麼
有安全隱患,因為當oracle執行了清除重做日誌檔案的命令後,oracle資料庫以前的備份都將變為無用,所以接下來應該儘快做一個全備份,清除聯機重做日誌檔案的命令應該作為最後的選擇來執行。

12、怎樣利用OFM(ORACLE檔案管理)來管理聯機重做日誌檔案
alter system set DB_CREATE_ONLINE_LOG_DEST_1='J:\DISK3';
alter system set DB_CREATE_ONLINE_LOG_DEST_2='J:\DISK6';
alter system set DB_CREATE_ONLINE_LOG_DEST_3='J:\DISK9';
oracle自動管理檔案的方法是通過設定DB_CREATE_ONLINE_LOG_DEST_N來設定預設的重做日誌檔案和控制檔案的位置,N最多為5,最多可以定義5個目錄,檔名都由orcle伺服器自動生成,大小都為100M。
alter database add logfile;--會生成一組重做日誌組,有3個成員,大小均為100M,檔名由oracle伺服器自動生成
alter database drop group 3;--刪除一組重做日誌組
13、OMF管理重做日誌檔案和手工管理之間的差別
(1)新增重做日誌檔案:手工方式新增重做日誌檔案需要自己定義檔名和檔案位置以及重做日誌組中成員的個數,OMF方式會自動將重做日誌檔案放在預設的位置,自動定義檔案個數、大小以及檔名稱

(2)刪除重做日誌檔案:手工方式刪除重做日誌檔案,不能刪除對應的作業系統檔案;OMF方式刪除重做日誌檔案會同時刪除對應的作業系統檔案

14、怎樣實現聯機重做日誌的合理配置
(1)每個聯機重做日誌組應當至少有2個成員,多數為3個成員
(2)多數oracle版本預設為3個重做日誌組,應當再1-2個重做日誌組,以方便資料庫的維護和管理
(3)重做日誌的配置應當是一個逐步調整的過程,報警檔案(所有重做日誌的問題都會記錄在報警檔案中)和LGWR的追蹤檔案為獲取合理配置聯機重做日誌的重要資訊來源。在資料庫中日誌檔案是被頻繁操作的檔案,計算機操作的檔案越大,系統效率就越低,為了確保系統的效率,日誌檔案應當儘量小,但如果聯機重做日誌檔案的切換過於頻繁,則應當增加重做日誌檔案的大小;如果檢查點不能及時完成或某個聯機重做日誌組不能被及時歸檔而導致LGWR頻繁等待,則應當新增重做日誌組的個數。
(4)同一個資料庫中的每個聯機重做日誌組中的成員個數可以不一樣,但是不建議不一樣,應該相同
(5)同一個資料庫中的不同聯機重做日誌組中的成員大小可以不一樣,但是不建議,每個聯機重做日誌組中的成員大小應當一樣,以便於維護。