ITPUB论坛 » Oracle专题深入讨论 » oracle怎样确定检查点对应的rba
新一届的微软MVP评选已经开始,欢迎各位推荐!
2007-9-8 10:41 zwszwszzz
oracle怎样确定检查点对应的rba

看了一些文章和论坛上dx的讨论,对checkpoint有了一些了解,但是不清楚检查点发生时,怎样确定检查点的rba,

常规检查点:
    发生时分三步:
·        1,在checkpoint队列中中找一个 rba,此为checkpoint rba
         2,dbrw把所有小于此rba的 buffer写入 file
        3.,ckpt将此rba和sn等更新数据文件,控制文件,log文件等
     恢复时,这个checkpoint rba之前的block不用处理。但是如果小于这个rba的 block 事务没有没完成的,不知道该怎么处理,如果写了,那么在恢复的时候,oracle会怎么处理这些block吗,还有这个checkpointer rba是怎么确定的不清楚。难道是是当前checkpoint point中最大的已经写入磁盘的rba吗?

增量检查点:
    第一个问题:
       两种理解不知道那个对:
      1。ckpt在checkpoint queue中每3秒找一个 rba,然后dkpt写到这里。这个 rba变为 low rba,然后ckpt将其写入控制文件。如果这种理解对,那么这个 rba怎么确定。
      2 。dkpt在写,ckpt每3秒看一下当前的low rba,然后写入控制文件。
     
       第二个问题:  
      恢复的时候从low rba到 on disk rba,low rba以前的不用管,但是如果 low rba之前的block没有commit的,但是他已经写入了datafile,该怎么管。

    写的很多,可能有很多不对的地方,希望dx能指点一下。

2008-7-6 14:55 pulf
第二个问题:low rba之前的肯定已经写入到数据文件中去了,所以所恢复的时候从low rba开始,但是这样的情况除了恢复的时候前滚外,一般系统起来后还会前滚未提交的事务。

页: [1]


Powered by ITPUB论坛