- 相關(guān)推薦
Oracle重做日志文件管理技巧
重做日志文件是Oracle數據庫中一種非常重要的日志文件,也是其一個(gè)很有特色的功能。重做日志文件會(huì )紀錄對于數據庫的任何操作,如利用DML語(yǔ)句或者DDL語(yǔ)句對數據進(jìn)行更改,或者數據庫管理員對數據庫結構進(jìn)行更改,都會(huì )在重做日志中進(jìn)行記錄。

可見(jiàn),當數據被意外的刪除或者修改,我們可以利用重新日志文件進(jìn)行恢復; 當出現例程失敗或者介質(zhì)失敗的情況下,也可以利用日志文件實(shí)現例程恢復或者介質(zhì)恢復。所以說(shuō),我們若能夠管理好重做日志文件的話(huà),對于保障數據庫數據的安全是非常重要的。
下面筆者談?wù)劰芾砗肙racle 數據庫日志文件的幾點(diǎn)經(jīng)驗技巧,或許,能夠給大家在重做日志文件的管理中帶來(lái)一些啟示。
一、 合理確定重做日志文件的存放位置
我們知道,當數據庫內部數據丟失或者被意外更改的情況下,數據庫管理員可以利用重做日志文件實(shí)現數據庫數據的恢復工作。當數據庫出現意外事故,如硬盤(pán)物理?yè)p壞、數據丟失時(shí)怎么辦?
我們第一個(gè)就會(huì )想到利用數據庫重做日志對數據進(jìn)行恢復?墒钱敂祿䦷熘刈鋈罩靖鷶祿䦷鞌祿募旁谕粋(gè)硬盤(pán)的話(huà),很明顯,當硬盤(pán)損壞的時(shí)候,數據文件將跟日志文件共赴黃泉。此時(shí),連天皇老子都救不了我們。
所以,此時(shí),我們就有必要把重做日志文件跟數據庫數據文件放在兩個(gè)不同的硬盤(pán)上面。此時(shí),任何一個(gè)硬盤(pán)若發(fā)生損壞,我們都可以憑借另外一塊硬盤(pán)的數據,來(lái)挽回損失。如存放數據文件的硬盤(pán)損壞時(shí),我們就可以利用存放在另外一塊硬盤(pán)上的數據重做日志文件進(jìn)行修復,挽回損失。
雞蛋不能放在同一個(gè)籃子里,故重做日志文件與數據文件也不要放在同一塊硬盤(pán)上。那時(shí)非常危險一個(gè)動(dòng)作。
其實(shí),這個(gè)重做日志文件就跟數據庫的備份文件類(lèi)似。我們在對數據庫進(jìn)行備份的時(shí)候,都知道需要進(jìn)行異地備份?上У氖,很多數據庫管理員,在進(jìn)行Oracle 數據庫管理的時(shí)候,沒(méi)有注意到這一點(diǎn),結果當出現問(wèn)題的時(shí)候,就來(lái)不及了。故,對于數據重做日志文件,保存時(shí),要跟數據庫備份文件一樣,進(jìn)行異地保存。
二、 合理設置數據庫的歸檔模式
因為數據重做日志會(huì )紀錄數據庫所有的修改動(dòng)作,所以,當數據庫頻繁修改時(shí),如那些ERP系統需要頻繁對數據庫進(jìn)行修改操作,此時(shí),數據庫的重做日志文件就會(huì )很龐大。為了便于日志文件的管理,Oracle 數據庫默認情況下,在安裝的時(shí)候,會(huì )有三個(gè)重做日志文件。當第一個(gè)重做日志文件達到一定容量時(shí),就會(huì )停止寫(xiě)入,而會(huì )轉向第二個(gè)日志文件; 第二個(gè)也滿(mǎn)時(shí),就會(huì )轉向第三個(gè)。當第三個(gè)滿(mǎn)時(shí),就會(huì )往第一個(gè)日志文件中寫(xiě)入。在往這原來(lái)的紀錄中寫(xiě)入重做日志文件的時(shí)候,是否需要對原有的紀錄進(jìn)行備份呢?根據用戶(hù)需求的不同,就存在這兩種處理模式。一種是不需要數據庫進(jìn)行自動(dòng)備份,這種模式就叫做非歸檔模式; 而當重做日志改寫(xiě)原有的重做日志文件以前,數據庫會(huì )自動(dòng)對原有的日志文件進(jìn)行備份的話(huà),這種操作模式就叫做歸檔模式。
現在擺在數據庫管理員面前有兩個(gè)選擇。選擇歸檔模式或者非歸檔模式呢?
這要根據企業(yè)對于數據完整性的要求不同而采取不同的操作模式。筆者的建議是,采用歸檔模式。因為現在硬盤(pán)非常的便宜,故我們可以花比較少的代價(jià),換取比較齊全的數據庫重做日志文件,個(gè)人認為這對于企業(yè)來(lái)說(shuō),是很值得的。、
筆者現在的做法是,重做日志文件至少保存一年。也就是說(shuō),當一年過(guò)后,就可以重寫(xiě)原來(lái)的日志文件。這主要是跟企業(yè)所處的行業(yè)以及對于數據的安全性程度不同而有所區別。如銀行就不同,他們可能要求重新日志保留十年甚至更長(cháng)的時(shí)間。要知道,對于他們來(lái)說(shuō),任何一條記錄可能都涉及到很大的資金。
三、 合理選擇日志切換的方法
日志切換是指停止向某個(gè)重做日志文件組寫(xiě)入而向另一個(gè)聯(lián)機的重做日志文件組寫(xiě)入的那一剎那,我們稱(chēng)為日志切換。一般來(lái)說(shuō),這個(gè)日志切換主要有三種處理方式。通常情況下,使到重做日志文件組容量滿(mǎn)的時(shí)候,會(huì )發(fā)生日志切換動(dòng)作。另外,我們還可以以時(shí)間的方式指定日志切換的方式,如我們可以以一個(gè)星期或者一個(gè)月作為切換的單位。第三,有時(shí)候我們可能出于數據庫維護的需要,如當發(fā)現存放數據重做日志的硬盤(pán)容量快用光時(shí),我們需要換一塊硬盤(pán),此時(shí),就需要在當前時(shí)刻,進(jìn)行日志的切換動(dòng)作,這我們一般稱(chēng)之為強行日志切換。
歸檔就是在重做日志文件被覆蓋時(shí),將重做日志文件通過(guò)復制操作系統文件的方式,保存到其他指定的位置。一般情況下,只有在處于歸檔日志模式下的數據庫中,才會(huì )對重做日志文件進(jìn)行歸檔動(dòng)作。
日志切換的模式選擇,一般對于數據的安全性沒(méi)有很大關(guān)系,但是,對于我們進(jìn)行數據重做日志的管理,卻會(huì )產(chǎn)生很大影響。合理部署重做日志文件的切換方法,對于我們數據庫管理員來(lái)說(shuō),具有非常的現實(shí)意義。我們設置的好,可以大大節省我們數據庫的管理工作,提高數據庫的自動(dòng)化管理效率。
如筆者現在對于數據重做日志是如此管理的。
根據筆者對于數據庫變動(dòng)的觀(guān)察,筆者在新建立數據庫的時(shí)候,設置了六個(gè)數據庫重做日志文件。然后筆者采用基于時(shí)間的方是進(jìn)行數據日志的切換動(dòng)作。每?jì)蓚(gè)月進(jìn)行切換一次。為什么要選擇這個(gè)時(shí)間呢?一方面是出于這個(gè)重做日志文件大小的考慮,另一方面,也是出于日后查詢(xún)與管理的需要。如此的話(huà),一年六個(gè)數據重做日志文件,就非常的清楚。
但是,基于時(shí)間的策略來(lái)對重做日志文件進(jìn)行切換的話(huà),有一個(gè)不好的地方,就是對于重做日志文件的大小很難控制。如可能在應用系統前期部署階段,如ERP系統前期數據倒入階段,因為涉及到很多的數據更改動(dòng)作,所以,這個(gè)數據重做日志文件就會(huì )非常的大。而到后來(lái)項目上線(xiàn),業(yè)務(wù)趨于正常的時(shí)候,數據重做日志文件大小又會(huì )迅速的回落。這就會(huì )導致數據重做日志文件大小差異太大,而數據重做日志的多路復用或者歸檔帶來(lái)一定的麻煩。筆者的做法是,當ERP系統前期數據更新完畢,項目上線(xiàn)時(shí),先對數據庫進(jìn)行強制數據重做日志切換。對于這個(gè)重做日志進(jìn)行獨立的管理。如此的話(huà),后續的重做日志容量大小就會(huì )差不多,易于我們管理。
四、 來(lái)自官方的建議
下面兩條是來(lái)自Oracle數據庫官方的對于重做日志管理的建議。由于筆者所涉及到的數據庫還沒(méi)有復雜到這種程度,所以對于這兩個(gè)建議還沒(méi)有直觀(guān)的印象。各位讀者若覺(jué)得有必要的話(huà),也可以參考一下。
一是如果采用了歸檔模式的話(huà),應該將重做日志成員放置到不同的硬盤(pán)中去。以消除LGWR和ARCH后臺進(jìn)程對重做日志成員的爭奪。也就是說(shuō),如有憂(yōu)多組多路復用重做日志成員,則可以將每個(gè)成員都放置在不同的硬盤(pán)上,并且將其歸檔重做日志文件也放在另外的硬盤(pán)上。這個(gè)筆者還沒(méi)有測試過(guò),到底其可以提高多少數據庫的性能。這么處理的目的,筆者想,大概為了減少填寫(xiě)成員與讀取成員、歸檔成員之間的沖突。具體效果如何,就待大家去測試了。
二是不應該將數據日志文件存放在非;钴S的數據或索性表空間的硬盤(pán)上。這會(huì )降低數據庫正常讀取的效率。這個(gè)從理論上是可以理解的,但是在實(shí)際應用中,會(huì )取得多大的成效,因為筆者沒(méi)有親身感受過(guò),也就不得而知了。
【Oracle重做日志文件管理技巧】相關(guān)文章:
Oracle認證考試技巧03-19
Oracle學(xué)習的技巧心得03-21
Oracle 數據庫查詢(xún)小技巧03-21
Oracle認證:ORACLE綁定變量BINDPEEKING03-08
監理管理文件的作用12-26