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能指点一下。