SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复Data Guard、Streams复制、RAC节点间的同步等各个功能中起着重要作用。

理解SCN的运作机制,可以帮助你更加深入地了解上述功能。在理解SCN之前,我们先看下oracle事务中的数据变化是如何写入数据文件的:

  1、事务开始;

  2、在buffer cache中找到需要的数据块,如果没有找到,则从数据文件中载入buffer cache中;

  3、事务修改buffer cache的数据块,该数据被标识为“脏数据”,并被写入log buffer中;

  4、事务提交,LGWR进程将log buffer中的“脏数据”写入redo log file中;

  5、当发生checkpoint,CKPT进程更新所有数据文件的文件头中的信息,DBWn进程则负责将Buffer Cache中的脏数据写入到数据文件中。

经过上述5个步骤,事务中的数据变化最终被写入到数据文件中。但是,一旦在上述中间环节时,数据库意外宕机了,在重新启动时如何知道哪些数据已经写入数据文件、

哪些没有写呢?SCN机制就能比较完善的解决上述问题。 正是它这种只会增加的特性确保了Oracle知道哪些应该被恢复、哪些应该被复制。总共有4中SCN:

  (1)系统检查点(System Checkpoint)SCN、

  (2)数据文件检查点(Datafile Checkpoint)SCN、

  (3)结束SCN(Stop SCN)、

  (4)开始SCN(Start SCN)。

其中前面3种SCN存在于控制文件中,最后一种则存在于数据文件的文件头中。在控制文件中,System Checkpoint SCN是针对整个数据库全局的,因而只存在一个,

而Datafile Checkpoint SCN和Stop SCN是针对每个数据文件的,因而一个数据文件就对应在控制文件中存在一份Datafile Checkpoint SCN和Stop SCN。

在数据库正常运行期间,Stop SCN是一个无穷大的数字。

 

下面,在简单介绍一下SCN如何在数据库恢复中起作用。数据库在正常关闭(shutdown immediate/normal)时,会先做一次checkpoint,将log file中的数据写

入数据文件中,将控制文件、数据文件中的SCN都更新为最新的SCN。数据库异常/意外关闭不会更新或者只更新部分Stop SCN。当数据库启动时,Oracle先检查

控制文件中的每个Datafile Checkpoint SCN和数据文件中的Start SCN是否相同,再检查每个Datafile Checkpoint SCN和Stop SCN是否相同。如果发现有不同,

就从Redo Log中找到丢失的SCN,重新写入数据文件中进行恢复。

最新文章

  1. rails数据库查询 N + 1 查询的解决办法
  2. mysql 导出csv
  3. css中图片等比例缩放
  4. 用Webshell直接杀入内网
  5. 安装VS2015可能出现的问题以及解决方法
  6. node-debug 三法三例之node debugger + node inspector
  7. Xcode修改项目名称教程
  8. C++内存泄露调试
  9. USACO6.4-Electric Fences:计算几何
  10. 使用固件库操作STM32F4时的必要配置(转)
  11. delphi edit编辑框使用
  12. Cocoapods 应用第二部分-私有库相关
  13. [LeetCode] Maximum Distance in Arrays 数组中的最大距离
  14. 20165223《网络对抗技术》Exp5 MSF基础应用
  15. spark优化参数调节和故障参数调节
  16. MUI学习03-滚动图(幻灯片)及菜单项(九宫格)
  17. 商务通服务器版LR_Data目录下相关配置文件
  18. 第30节:Java基础-内部类
  19. 【BZOJ2648】SJY摆棋子
  20. js keycode

热门文章

  1. mybatis由浅入深day02_5resultMap总结
  2. ios开发之--新手引导页的添加
  3. ios开发之--UICollectionView的使用
  4. redis客户端使用密码
  5. python 2.0 s12 day5 常用模块介绍
  6. oracle 与mysql 的当前时间比较
  7. Python做简单爬虫(urllib.request怎么抓取https以及伪装浏览器访问的方法)
  8. iOS打电话、发短信、发邮件功能开发
  9. Java——我的概念
  10. AndroidのBuild工具之Ant动手实践