Redo active状态解析

当我们手动执行日志切换的时候:

SQL> alter system switch logfile;

系统已更改。


SQL> select group#,sequence#,status,archived from v$Log;

    GROUP#  SEQUENCE# STATUS           ARC
---------- ---------- ---------------- ---
         1         23 CURRENT          NO
         2         21 INACTIVE         YES
         3         22 ACTIVE           YES

我们看日志文件组3已经归档,但是状态为ACTIVE的。
某个日志文件为ACTIVE状态,其实是表示这个文件的检查点还没有作完。而检查点没有做完的根本原因是dbwr执行的dirty buffer写出还没有执行完成,也就是说ckpt进程会等待dbwr写出数据完成,等待的过程就是表示等待将current日志中修改过的数据块信息写入到数据文件的过程。因为这些信息其实是实例恢复的时候要用到的信息,如shutdown abort时,oracle会利用redo日志中的信息对数据库进行实例恢复。
同时有一点需要补充的是:
当检查点发生的时候,不仅仅dbwr进程会触发(记住有的检查点不是一定要触发dbwr的),lgwr也会跟着触发,他会把检查点发生时的SCN之前的存储在redo log buffer中的redo,写入到我们的redo log file中。那么all in all,检查点的发生,就是lgwr和dbwr写buffer到磁盘文件的过程。但是效率却截然不同。
回到正题,log switch的时候会触发检查点,因此lgwr进程会把log buffer中的redo log写入redo log file中,如果我们这个时候设置了log_checkpoints_to_alert=TRUE,则我们可以在alert_icmnlsdb.log日志中,看到如下信息:
-------------------------------------------------------------
Sat Dec 29 12:59:43 2007
Beginning log switch checkpoint up to RBA [0x18.2.10], SCN: 0x0000.0003b0f6
Thread 1 advanced to log sequence 24
  Current log# 2 seq# 24 mem# 0: D:\ORACLE\ORADATA\ICMNLSDB\REDO02.DBF
Sat Dec 29 12:59:43 2007
ARC0: Evaluating archive   log 1 thread 1 sequence 23
ARC0: Beginning to archive log 1 thread 1 sequence 23
Creating archive destination LOG_ARCHIVE_DEST_1: 'D:\ORACLE\ARCHIVED_DEST\ARC00023.001'
ARC0: Completed archiving  log 1 thread 1 sequence 23
---------------------------------------------------------------
注意信息中的SCN,这就是我们通过log switch触发checkpoint时的SCN,那么当checkpoint做完后,ckpt进程会把这个SCN更新到数据文件头上。但是这个checkpoint在这个时候确实是要等待dbwr将dirty buffer写完到数据文件后才算结束(dbwr要写到RBA(Beginning log switch checkpoint up to RBA [0x18.2.10]).因此如果日志切换到这个active的日志的时候,由于checkpoint要等待dbwr将RBA之前的所有dirty buffer写出,因此整个过程会等待。当然我们还要注意dbwr可能是执行多次写才能到RBA。这个和dbwr的写机制是有密切的关系。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12361284/viewspace-52651/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12361284/viewspace-52651/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值