今天,接着复习,学习是不应该落后的,今天要复习的是重做日志文件。
首先,是关于一副重做日志的图片,展示了日志文件的结构:
理解一下重做日志组,重做日志组是一个逻辑概念,要保证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:
嘿嘿,这章的内容就到这里了。