重做日志与归档日志有什么区别?

重做日志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中,将原来的覆盖,(即联机日志是循环使用的).一 般当产生一个检查点或联机日志写满一定程度时会产生一个归档日志文件.

 

 

 

 

 

 

posted on 2012-03-09 16:33  草原和大树  阅读(6895)  评论(1编辑  收藏  举报