Oracle 的scn号和checkpoint_change#这两个的关系

学海无涯-回头是岸 2018-02-04 10:35:24
我看ckpt进程解释的是 在Oracle发生检查点事件的时候,会触发ckpt进程,然后把检查点号写到相应的数据文件头中。
把scn、检查点号、redo序列号等写到控制文件中。
但是实例恢复的时候,他用于检测的是控制文件和数据头文件的scn号。
检查点和scn有关系吗?。
...全文
480 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu志坚 2018-02-05
  • 打赏
  • 举报
回复
引用 5 楼 baidu_36457652 的回复:
[quote=引用 3 楼 liuzhijian2008x 的回复:] 因为你没明白检查点就是一个scn。 实例恢复的时候也是用的检查点这个scn。 数据库启动从 mount到open的时候,会去比对控制文件中记录的检查点scn 与所有数据库文件头记录的检查点scn及last 结束scn ,如果一致就不需要recover,如果不一致就需要recover。
就是说实例恢复用的是检查点吗? 主要很多地方就 直接提到的是scn我以为是scn是(system change number) ,因为ckpt进程的解释是 要把scn、检查点号、redo序列号等写到控制文件中。[/quote] 是的。
  • 打赏
  • 举报
回复
引用 3 楼 liuzhijian2008x 的回复:
因为你没明白检查点就是一个scn。 实例恢复的时候也是用的检查点这个scn。 数据库启动从 mount到open的时候,会去比对控制文件中记录的检查点scn 与所有数据库文件头记录的检查点scn及last 结束scn ,如果一致就不需要recover,如果不一致就需要recover。
就是说实例恢复用的是检查点吗? 主要很多地方就 直接提到的是scn我以为是scn是(system change number) ,因为ckpt进程的解释是 要把scn、检查点号、redo序列号等写到控制文件中。
liu志坚 2018-02-05
  • 打赏
  • 举报
回复
因为你没明白检查点就是一个scn。 实例恢复的时候也是用的检查点这个scn。 数据库启动从 mount到open的时候,会去比对控制文件中记录的检查点scn 与所有数据库文件头记录的检查点scn及last 结束scn ,如果一致就不需要recover,如果不一致就需要recover。
liu志坚 2018-02-05
  • 打赏
  • 举报
回复
http://czmmiao.iteye.com/blog/1010267 这个文章讲得比较清楚。
  • 打赏
  • 举报
回复
引用 1 楼 liuzhijian2008x 的回复:
scn是(system change number),是可以代表任何一个原子事务的时间点。数据库恢复也是根据scn来恢复的(基于时间的恢复其实也是基于某个scn,只是后台把时间转换为scn了) 检查点其实就是一个scn,记录的是数据库一致状态的一个scn,以便于确定数据文件是否一致,是否需要recover。 你查看下这两个scn就更直观了。 select checkpoint_change# from v$database; //检查点scn select dbms_flashback.get_system_change_number from dual; //当前scn
你说这个我i知道,但是我就是没想明白。难道说检查点 就是scn吗?但是数据库里面是不等的而且,ckpt写数据头文件里面记录的是检查点。但是实例恢复用的又是scn我有点懵
liu志坚 2018-02-05
  • 打赏
  • 举报
回复
scn是(system change number),是可以代表任何一个原子事务的时间点。数据库恢复也是根据scn来恢复的(基于时间的恢复其实也是基于某个scn,只是后台把时间转换为scn了) 检查点其实就是一个scn,记录的是数据库一致状态的一个scn,以便于确定数据文件是否一致,是否需要recover。 你查看下这两个scn就更直观了。 select checkpoint_change# from v$database; //检查点scn select dbms_flashback.get_system_change_number from dual; //当前scn

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧