oracle 归档日志

来源:互联网 发布:ubuntu搭建案桌模拟器 编辑:程序博客网 时间:2024/06/06 02:28

   日志文件概述



Oracle 引入重做日志的原因是为了进行数据恢复。在数据库运行过程中,用户更改的数据会暂时存放在数据库高速缓存区,而为了提高写数据库的速度,不是一旦有数据变化,就把变化的数据写到数据文件中,因为频繁的读写磁盘文件使得数据库系统效率低下,所以,要等到数据库高速缓冲区中的数据达到一定量或者满足一定条件时,DBWR进程才会将变化了的数据提交到数据库,也就是BDWR将变化了的数据写到数据文件中。这种情况下,如果在DBWR把变化了的更改写到数据文件之前发生了宕机。那么数据库高速缓冲区的数据就会全部丢失,如果在数据库重新启动后无法恢复这部分这部分用户更改了的数据,显然是不合适的。

  而重做日志就是吧用户变化了的数据首先保存起来,其中LGWR进程负责把用户更改的数据先写到重做日志文件中。在数据库原理课程课程中,这种机制也加日志写优先。这样在数据库重启时,数据库系统会从重做日志中读取这些变化了的数据,将用户更改的数据提交到数据库中,写入数据文件。

   http://www.cnblogs.com/czjie/archive/2011/11/03/2235099.html


重做日志结构


http://www.cnblogs.com/kerrycode/archive/2012/08/09/2631035.html


为了提高磁盘效率,并为了防止重做日志文件的损坏,Oracle引入了一种重做日志结构,如上图

在该图中,重做日志文件结构有三个重做日志组组成,每个重做日志组中有两个重做日志成员,当然还可以有更多日志组,更多日志成员。数据库系统会先使用重做日志组1,但改组写满后,就切换到重做日志组2,再写满后,继续切换到日志组3,然后循环使用重做日志组1,Oracle已这样的循环方式使用重做日志组。

Oracle 规定每个数据库实例至少有两个重做日志组,每个重做日志组至少有一个重做日志文件。当重做日志组有多个日志成员时,每个日志成员的内容相同,Oracle会同步同一个重做日志组中的每个成员。在工作过程中,当一个重做日志组写满时,就自动切换到他可以找到的其他重做日志组,并为该日志组设置一个日志序列号。

http://blog.csdn.net/yujin2010good/article/details/7761341

如果没有启动归档日志,当一个循环结束时,再次使用先前的重做日志组时,会以覆盖的方式向该组的重做日志文件中写数据。在非归档模式下,在重新使用重做日志组之前,DBWR进程需要将所有数据写入到数据文件中,这有时也称为DBWR归档。

如果数据库处于归档模式下,当前正在使用的重做日志写满后,Oracle会关闭当前的日志文件,Arch进程把旧的重做日志文件中的数据移动到归档重做日志文件中。





0 0