oracle日誌操作模式(歸檔模式和非歸檔模式的利與弊)

來源:互聯網
上載者:User

筆者今天就談談自己對這兩種操作模式的理解,並且給出一些可行的建議,跟大家一起來提高Oracle資料庫的安全性。

一、非歸檔模式的利與弊。

  非歸檔模式是指不保留重做曆史的日誌操作模式,只能夠用於保護常式失敗,而不能夠保護介質損壞。如果資料庫採用的是日誌操作模式的話,則進行日誌切換時,新的日誌會直接覆蓋原有記錄檔的內容,不會保留原有記錄檔中的資料。
  這麼說聽起來可能比較難理解。筆者舉一個簡單的例子,就會清楚許多。如現在Oracle資料庫中有四個日誌組,記錄序號分別為11、 12、13、14。當資料庫事務變化寫滿第一個日誌組檔案(序號為11)時,Oracle資料庫就會自動切換到第二個日誌組檔案(序號為12)中。依次類推。當第三個日誌組檔案(序號為13)寫滿時,就會切換到第四個日誌組(序號為14)。當第四個日誌組(序號為14)滿時,其就會切換到第一個日誌組(序號為15)。這裡,序號雖然與剛才第一個記錄檔組不同,但是日誌組仍然是同一個。此時,由於資料庫的操作模式選擇為非歸檔模式,所以第一組記錄檔(序號為11)中的內容並沒有歸檔。新的記錄檔的內容將直接覆蓋第一個日誌組檔案中的內容。若第一個日誌組檔案(序號為15)滿時,切換到第二個記錄檔組時,新的內容又會在第二個記錄檔組沒有歸檔的情況下,直接覆蓋記錄檔12中的原有資料。

  通過以上的分析,我們可以歸納出非歸檔動作記錄模式的一些特點。

  一是當檢查點完成之後,後台進程可以覆蓋原有重做日誌的內容。也就是說,在日誌切換時,後來的記錄檔內容可以在以前的記錄檔內容沒有歸檔的情況下,覆蓋原有記錄檔的內容。如此的話,當出現資料檔案損壞時,資料庫管理員只能夠恢複到過去的完全被分點。如資料庫有四個日誌組。如果在日誌組序號為16的時候資料庫管理員進行了完全備份。而在日誌組序號為28的時候資料檔案出現了損壞。此時,由於中間的記錄檔內容被覆蓋掉了。所以,此時資料庫管理員只能夠恢複到完全備份的那個點,而不能夠恢複資料庫檔案損壞時的點的資料(即序號為28)的資料。如果在序號為18的時候出現了資料檔案損壞的事故,則可以先對資料庫進行還原(還原點為序號為16時的資料),然後再利用重做記錄檔(序號為17、18),即可以把資料恢複到故障發生時的資料。故雖然不用對重做記錄檔進行歸檔,節省磁碟空間。但是,卻給後續資料庫的恢複帶來的麻煩,降低了資料庫的安全性。為此,如何取捨,還是需要資料庫管理員根據自己企業的情況,作出選擇。

  二是執行Database Backup時,必須要備份所有資料檔案和控制檔案。根據上面筆者所講述的,因為重做日誌會被後來的所覆蓋,所以,基本上資料庫管理員不能夠通過重做記錄檔來恢複資料庫的資料,或者說,通過重做記錄檔不能夠恢複全部的資料。為此,在執行Database Backup時,就必須備份所有的資料檔案和控制檔案。同時,還必須使用SHUTDOWNNORMAL等命令關閉資料庫。
  
二、歸檔記錄模式。

  歸檔記錄模式與非歸檔記錄模式相對應,是指保留重做日誌曆史的日誌操作模式。這種日誌操作模式不僅可用於保護常式失敗,還可以用於保護介質損壞的情況。如果資料庫管理員把日誌設定為歸檔記錄模式,則當後台進程在進行日誌切換時,後台進程會自動將重做日誌的內容複寫到歸檔日誌中。歸檔日誌就是非活動重做日誌的備份。

  如現在Oracle資料庫中有四個日誌組,記錄序號分別為11、12、13、14。當資料庫事務變化寫滿第一個日誌組檔案(序號為11) 時,後台進程就會切換到第二個日誌組中(序號為12)。不過在這個切換之前,資料庫有一個進程,會負責將第一個日誌組中的檔案內容複寫到歸檔日誌中去。依次類推。這就是歸檔記錄模式與非歸檔記錄模式最本質的區別。不過這個區別卻給資料庫安全性帶來了很大的變化。

  如當記錄序號為28時出現了資料檔案的錯誤或者伺服器硬碟損壞的事故時,因為記錄檔中記錄了從Database Backup以來所有的資料變化情況。而且這些記錄檔與Database Backup檔案儲存體在其他媒體中,那麼資料庫管理員就可以通過這些資料,把資料庫恢複到介質損壞時(即記錄檔序號為28)的資料。從保護資料庫資料的角度講,這是一個接近於比較理想的狀態了。

  若把非歸檔模式與歸檔模式進行對比的話,可以發現歸檔模式有如下的特點。
一是當出現介質損壞(如硬碟損壞或者意外刪除資料檔案)或者出現常式失敗(如伺服器突然斷電)時,資料庫管理員可以憑藉歸檔記錄檔來防止遺失資料。而非歸檔模式則往往只能夠應對常式失敗的情況。所以,其應用範圍要比非歸檔模式大的多。

  二是資料備份的限制條件。正如上面所說的,如果資料庫處於非歸檔模式,則對資料庫進行備份時,要先用SHUTDOWNNORMAL等命令關閉資料庫。而處于歸檔模式的時候,則當資料庫處於Open狀態時,資料庫管理員仍然可以備份資料庫,而且不會影響資料庫的正常使用。除了Database Backup兩者有本質上的差異之外,在資料庫恢複上也有很大的差別。若資料庫採用歸檔記錄模式,不僅可以執行完全恢複,而且在歸檔記錄檔的協助下,還可以將資料庫恢複到特定的點。從而當資料庫出現意外故障時,最大限度的保護資料的安全性。
  不過若採取歸檔模式的話,則必須要犧牲一定的磁碟空間。

三、如何選擇合適的日誌操作模式?

  非歸檔模式只適用於常式失敗時恢複資料,不能夠用來保護介質損壞。即當資料庫的資料檔案意外損壞時,非歸檔模式沒有應對之策。歸檔模式不僅可以用來保護常式失敗,而且還可以在介質失敗的時候,最大程度的恢複資料庫的原有資料。此時,資料庫管理員可以利用Database Backup檔案、歸檔記錄檔、重做記錄檔等把資料庫中的資料恢複到故障發生的那一時點。

  既然歸檔操作模式與非歸檔操作模式各有各的特點,那麼在什麼時候採用歸檔記錄模式為好,什麼時候又該採用非歸檔模式呢?這個問題的答案,是公說公有理,婆說婆有理。恐怕爭論個幾年也沒有一個固定的答案。對此,筆者就提一下自己的意見。這也不是標準答案,只是供大家參考。

  首先要看資料庫中資料變化的頻繁程度。當資料庫中資料變化比較少的時候,則最好採用非歸檔模式。相反,如果資料庫中的資料變化比較頻繁,如一些業務作業系統,則最好能夠採用歸檔模式。

  其次,要看企業對資料丟失的態度。如果企業對於資料安全要求比較高,如銀行,不允許丟失任何資料,則最好能夠採用歸檔記錄模式。在資料庫意外故障的時候,其可以協助資料庫管理員在最大程度上恢複資料。同理,當企業可以允許部分損壞資料的時候,則可以採用非歸檔模式,以節省切換日誌組時的對記錄檔備份的額外開銷與磁碟空間。

  再者,要看看資料庫是否需要全天候運行。因為在非歸檔模式下,必須利用SHUTDOWNNORMAL等命令關閉資料庫,才能過對資料庫進行備份。這跟資料庫全天候啟動並執行要求是不符合的。而歸檔模式下,即使資料庫出於OPEN狀態,也可以對其進行備份,也不會影響資料庫的正常運行。為此,若果資料庫需要全天候啟動並執行話,則最好採用歸檔模式。雖然資料庫為此要付出一些額外的開銷,筆者認為也是值得的。畢竟硬體投資有價,資料無價。

  資料庫管理員要根據企業的實際情況,選擇合適的日誌操作模式。從而讓重做日誌與歸檔日誌真正成為Oracle資料庫的保護傘。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.