日期:2014-05-16  浏览次数:20526 次

Oracle redo日志相关(原创)

redo相关的视图
V$LOG??? Displays the redo log file information from the control file
V$LOGFILE??? Identifies redo log groups and members and member status
V$LOG_HISTORY??? Contains log history information
Oracle Redo日志切换步骤:

1、从控制文件中得到下一个可用的redo日志文件信息

2、记录当前redo日志文件的最后一个scn(high scn也称next scn),关闭当前redo日志。

3、增加SCN,再次修改控制文件,将下一个redo日志的状态标记为current,判断前一个日志中重做记录包含的脏数据内容是否已经全备写到磁盘中,如果没有则 在v$log 中的status标记为ACTIVE,如果有则标记为INACTIVE。如果处于归档模式,则唤醒ARCn进程进行归档,归档状态由v$log中的ARCHIVED字段体现。注意,在归档模式下,只有当该redo file归档完毕后,这个redo file才能被reuse

4、打开新的redo组中的成员,记录当前日志序列号和第一个日志块的scn(low scn),新一轮重做记录开始。

注意,由于日志切换的是增量检查点而非完全检查点,故DBWn没有立即将内存中的脏数据写如磁盘。

如果将log_checkpoints_to_alert参数设为true则可以将检查点启动和结束的时间记录的到跟踪文件中。下面是具体信息

Tue Dec? 6 13:01:03 2011
Incremental checkpoint up to RBA [0x19.34ac.0], current log tail at RBA [0x19.3a1a.0]
Tue Dec? 6 13:12:53 2011
alter tablespace TEMP tablespace group ''
Tue Dec? 6 13:12:53 2011
Completed: alter tablespace TEMP tablespace group ''
Tue Dec? 6 13:31:04 2011
Incremental checkpoint up to RBA [0x19.3c91.0], current log tail at RBA [0x19.3d4a.0]
Tue Dec? 6 14:01:09 2011
Incremental checkpoint up to RBA [0x19.3f2c.0], current log tail at RBA [0x19.4435.0]

clear logfile:清除指定的联机日志组的所有成员。在日志文件组里丢失或者损坏部分成员时,可以清除该日志文组,Oracle会自动创建丢失或损坏的成员。被清除的日志文件状态必须是inactive,如果是active或者current说明该文件中的重做记录对应的脏数据仍然在内存中,这些重做记录还不能被清楚。对应的命令如下

用CLEAR命令重建该日志文件
SQL>alterdatabaseclearlogfilegroup1;
如果是该日志组还没有归档,则需要用
SQL>alterdatabaseclearunarchivedlogfilegroup1;
关于redo file的大小可以参考v$instance_recovery中的optimal_logfile_size中的建议

?

参考至:《教你成为10g OCP》韩思捷著

??????????????? http://www.cnblogs.com/sopost/archive/2010/06/28/2190105.html

本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com