重做日志與歸檔日志有什么區別?


重做日志redo log file是LGWR進程從Oracle實例中的redo log buffer寫入的,是循環利用的。就是說一個redo log file(group) 寫滿后,才寫下一個。
歸檔日志archive log是當數據庫運行在歸檔模式下時,一個redo log file(group)寫滿后,由ARCn進程將重做日志的內容備份到歸檔日志文件下,然后這個redo log file(group)才能被下一次使用。

不管數據庫是否是歸檔模式,重做日志是肯定要寫的。而只有數據庫在歸檔模式下,重做日志才會備份,形成歸檔日志。

一般來說,歸檔日志結合全備份,用於數據庫出現問題后的恢復使用。

 

 

重做日志是循環使用的。比如說,有三個重做日志組A、B、C。那么,當A寫滿后,系統就調用ARCn進程,將A備份為歸檔日志,同時B已經開始使用了。
假設你只有兩個組A、B,如果某種情況下,A正在備份,未結束,還不能繼續使用,而B也寫滿了,這個時候,數據庫就會出現掛起的情況。所以一般情況下,重做日志最好是三個組或者再多一點,而且大小要適當。
實際上,一個重做日志組滿了后,就開始寫入歸檔日志。不是等ABC都寫滿了,再歸檔,這樣肯定就是出現掛起的情況了,Oracle不是這樣的,

 

 

 

歸檔日志和重做日志都是物理上的文件,只是存放的目錄不同,而且重做日志的文件名不變,而歸檔日志的文件名是備份時系統生成的。
重做日志備份為歸檔日志后,系統就會把重做日志的內容清空,但文件依然存在,准備下一次使用。

 

 

 

重做日志紀錄了你所有做過的dml語句,重做日志循環使用,寫滿一輪后就要覆蓋前面的。如果你是用熱備模式,當重做日志寫滿一個后就將內容寫入歸檔日志,以備將來恢復數據用。

只有數據庫運行在歸檔模式並且初始化參數ARCHIVE_LOG_START等於TRUE時,ARCn進程才能被啟動,進行自動歸檔。
如果數據庫運行在歸檔模式但ARCHIVE_LOG_START等於FALSE時,需要DBA手工歸檔。(這種方式可能會因為歸檔不及時導致數據庫被迫掛起,不實用!)
 

 

 

重做日志文件也叫聯機日志文件,一般數據庫有幾個日志文件(例如有三個,編號分別為1,2,3)先寫1,當1滿時再寫2,當2滿時再寫3,當3滿時1就歸 檔出來,產生一個文件寫到磁盤上,這個文件就叫歸檔日志文件.1歸檔出來后,新的聯機日志文件又寫到1中,將原來的覆蓋,(即聯機日志是循環使用的).一 般當產生一個檢查點或聯機日志寫滿一定程度時會產生一個歸檔日志文件.

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM