yoyolachel 发表于 2013-12-8 14:23:09

oracle11g 手工热备实验

在做手工热备实验时,结束表空间备份模式后,
将当前重做日志文件信息写入归档日志文件alter system archive log current;
再次查看当前数据文件检查点信息
select checkpoint_change#,file# from v$datafile;
发现
CHECKPOINT_CHANGE#        FILE#
------------------ ----------
           1025646          1
           1025646          2
           1025646          3
           1025827          4
           1025646          5
4号文件的检查点并没有提升。求解惑!!!

yoyolachel 发表于 2013-12-9 16:14:45

找到答案了。感谢百度

参考Maclean Liu的这篇文章:logfile switch causes incremental checkpoint?

注意里面的一段话:
/* logfile switch 日志文件切换引起的是一种slow慢的完全检查点,它不同于alter system checkpoint(ASC),
   ASC要求的脏块写出和控制文件及数据文件头更新时要立即完成的,也就是说当alter system checkpoint语句返回"System altered."
   后以上工作都已经完成了;而alter system switch logfile或者自然的日志切换引发的是一种慢的完全检查点,
   它在返回"System altered"时不要求写脏块等工作必须已经完成
*/

上面这段话的意思是说alter system switch logfile命令发出后,数据库不是立即要求写脏块的,既然没有立即写脏块,那控制文件及数据文件头也就没有更新了。所以你发出alter system switch logfile命令后,马上查询视图V$DATABASE和V$DATAFILE_HEADER,看到的信息可能跟之前的一模一样。这时,要么等几分钟再查询那两个视图,要么按照Maclean Liu文章中提到的操作。或许就可以看到不一样的CHECKPOINT_CHANGE#了。
页: [1]
查看完整版本: oracle11g 手工热备实验