oracle复习(四) 之重做日志文件

来源:互联网 发布:进出口数据统计 编辑:程序博客网 时间:2024/06/07 00:10

      今天,接着复习,学习是不应该落后的,今天要复习的是重做日志文件。

      首先,是关于一副重做日志的图片,展示了日志文件的结构:

                      

      理解一下重做日志组,重做日志组是一个逻辑概念,要保证Oracle数据库正常工作需要至少两个重做日志组。

      重做日志写进程(LGWR)在任意时刻只能写一组重做日志组,LGWR后台进程正在写的重做日志组称为当前重做日志组。LGWR将把完全相同的信息从重做日志缓冲区(redo log buffer)中复制到该组的每个重做日志文件中。它是以循环的方式写重做日志组的。当LGWR写满了一组重做日志时,它就开始写下一组重做日志。

      如果Oracle数据库运行在归档模式下时(Oracle数据库的默认模式为非归档方式),当LGWR的写操作从一个重做日志组切换到另一个重做日志组后,归档写进程(ARCH/ARCH0)就会将原来的重做日志文件中的信息复制到归档日志文件中。可以把归档日志文件看成时重做日志文件的备份。

      然后是日志切换和检查点:

      强制性产生重做日志切换的命令为:Alter System switch logfile.

      强制性产生检查点的命令为:alter system checkpoint.

      也可以通过设置FAST_START_MTTR_TARGET参数方式来强制产生强制点。

      那么,如何去获取重做日志信息呢,Oracle提供了两种数据字典,是v$log和v$logfile。

      v$log其中有一列为状态(status),下面说一下有的状态含义:

1、inactive:表示实例恢复已不再需要这组联机重做日志组了。

2、active:表示这组联机重做日志组是活动的担不是当前组,在实例回复时需要这组联机重做日志组。

3、current:表示这组联机重做日志组是当前组,并也隐含该联机重做日志组是活动的。

4、unused:表示Oracle服务器从来没写过这组联机重做日志组,这是重做日志组刚被添加到数据库中的状态。

      v$logfile中也有一列是status,其中的有的含义如下:

1、空白:表示该文件正在使用。

2、stale:表示该文件中的内容是不完全的。

3、invalid:表示该文件不可以被访问。

      接下来就该是操作了,真的发觉动手操作是多么重要的一件事,嘿嘿。

 

      首先,是操作如何添加和删除联机重做日志文件组:

             alter database [数据库名] add logfile [group 正整数] 文件名 [, [group 正整数] 文件名...]来添加重做日志文件组

             alter database [数据库名] drop logfile [group 正整数] 文件名 [, [group 正整数] 文件名...]来删除重做日志文件组

1、加入一组新的重做日志组,该组共有两个成员:

    

2、查看新的重做日志文件组是否添加:

    

3、查看一下两个日志文件的情况:

    

4、接下来就是删除刚刚创建的重做日志组4:

    

5、再次查看重做日志组信息:

     

6、再次查看重做日志文件信息:

    

 

      接下来,是操作添加和删除联机重做日志成员(文件)

          alter database [数据库名] add logfile member ['文件名' [reuse]][,'文件名' [reuse]]... to {group 正整数|('文件名'[,'文件名']...)} ]...来添加联机重做日志成员

          alter database [数据库名] drop logfile member '文件名'[,'文件名']...

1、给数据库中有的3个重做日志文件组分别添加一个重做日志文件:

    

2、查看重做日志文件组信息:

    

4、查看重做日志文件信息:

 

5、删除刚刚增加的redo03b.log:

    

      嘿嘿,这章的内容就到这里了。

原创粉丝点击