一、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個歸檔位置的的歸檔日志的内容完全一緻,但檔案名不同。