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