標籤:檔案資訊 doc sql指令碼 member time 檔案 檔案中 select 線上
一、Oracle日誌分類
分三大類: Alert log files--警報日誌,Trace files--追蹤記錄檔(使用者和進程)和
redo log 重做日誌(記錄資料庫的更改)。
本文主要關注Oracle的重做日誌。
重做日誌分為線上重做日誌和歸檔重做日誌。
online Redo log files--線上重做日誌,又稱聯機重做日誌,指Oracle以SQL指令碼的形式即時記錄資料庫的資料更新,換句話說,即時儲存已執行的SQL指令碼到線上記錄檔中(按特定的格式)。
Archive Redo log files--歸檔重做日誌,簡稱歸檔日誌,指當條件滿足時,Oracle將線上重做日誌以檔案形式儲存到硬碟(持久化)。
重做日誌的簡單原理:在資料更新操作commit前,將更改的SQL指令碼寫入重做日誌。主要用於資料庫的增量備份和增量恢複。
重做日誌直接對應於硬碟的重做記錄檔(有線上和歸檔二種),重做記錄檔以組(Group)的形式組織,一個重做日誌組包含一個或者多個記錄檔。
二、關於線上重做日誌(online redo log)
線上重做日誌的原理:
對於線上重做日誌,Oracle 11g預設對於每個資料庫執行個體,建立3個線上日誌組,每組一個記錄檔,檔案名稱為REDO01.LOG,REDO02.LOG和REDO03.LOG。(使用者可以通過視圖操作添加/修改/刪除日誌組和記錄檔來自訂線上重做日誌)
每組內的記錄檔的內容完全相同,且儲存在不同的位置,用於磁碟日誌鏡像,以做多次備份提高安全性。預設情況這3組通常只有一組處於活動狀態,不斷地同步寫入已操作的指令碼,當記錄檔寫滿時(達到指定的空間配額),如果當前資料庫處于歸檔模式,則將線上日誌歸檔到硬碟,成為歸檔日誌;若當前資料庫處於非歸檔模式,則不進行歸檔操作,而當前線上日誌的內容會被下一次重新寫入覆蓋而無法儲存。因此,通常資料庫在運行時,是處于歸檔模式下的,以儲存資料更新的日誌。
當前歸檔日誌組寫滿後,Oracle會切換到下一日誌組,繼續寫入,就這樣迴圈切換;當處于歸檔模式下,切換至原已寫滿的日誌組,若該日誌組歸檔完畢則覆蓋寫入,若沒有則只能使用日誌緩衝區,等待歸檔完畢之後才能覆蓋寫入。當然,處於非歸檔模式下是直接覆蓋寫入的。(關於資料庫歸檔模式的設定,我會在另外的博文中講到)。
Oracle提供了2個視圖用於維護線上重做日誌:V$LOG 和 V$LOGFILE,我們可以通過這兩個視圖查看和修改線上日誌。
關於V$LOG視圖的詳細屬性欄位可Oracle 11g的官方文檔:http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/dynviews_2029.htm
關於V$LOGFILE視圖的詳細屬性欄位可Oracle 11g的官方文檔:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/dynviews_2031.htm
官方文檔還是最給力的呀,不要忽視!!
通過v$logfile視圖查詢線上記錄檔資訊:
SQL> SELECT * FROM v$logfile ORDER BY group#;
GROUP# TATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
1 ONLINE E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG NO
2 ONLINE E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG NO
3 ONLINE E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG NO
通過v$log視圖查詢線上日誌的總體資訊:
SQL> SELECT * FROM v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
1 1 49 52428800 1 NO CURRENT 1466615 07-1月 -11
2 1 47 52428800 1 YES INACTIVE 1434125 06-1月 -11
3 1 48 52428800 1 YES INACTIVE 1460403 07-1月 -11
當然,還可以通過ALTER DATABASE ADD 、delete等命令增加/修改/刪除線上日誌或日誌組,具體操作可查看http://blog.csdn.net/robinson_0612/archive/2010/07/20/5749556.aspx
三、關于歸檔重做日誌(Archive redo log)
其實,所謂的歸檔,就是指將線上日誌進行歸檔、持久化到成固定的檔案到硬碟,便於以後的恢複和查詢。
當然,前提條件是資料庫要處于歸檔模式。
Oracle 11g 預設是為歸檔日誌設定2個歸檔位置,這2個歸檔位置的的歸檔日誌的內容完全一致,但檔案名稱不同。
Oracle-歸檔日誌詳解(運行模式、分類)