Oracle 4类SCN详解

179 篇文章 18 订阅

一个SCN号就是一个oracle数据库中使用的逻辑的、内部的时间戳。这个SCN号可以表明一个事件在oracle数据库中发生的精确时间。
Oracle数据库中的SCN号分为四种,分别为:系统检查点SCN、数据文件SCN、结束SCN、数据文件头SCN。

可使用如下语句查看当前的4类SCN:

SELECT B.NAME,
       A.CHECKPOINT_CHANGE# DATABASE_SCN,
       B.CHECKPOINT_CHANGE# DATAFILE_SCN,
       C.CHECKPOINT_CHANGE# START_SCN,
       B.LAST_CHANGE#       SHUT_SCN
  FROM V$DATABASE A, V$DATAFILE B, V$DATAFILE_HEADER C
 WHERE B.FILE# = C.FILE#;

V$DATABASE → CHECKPOINT_CHANGE# ,系统检查点SCN。当一个检查点动作完成后,Oracle就把系统检查点的SCN存储到控制文件中。

V$DATAFILE →CHECKPOINT_CHANGE#,数据文件检查点SCN。当一个检查点动作完成后,Oracle就把每个数据文件的scn单独存放在控制文件中。

         →LAST_CHANGE#,终止SCN,每个数据文件的终止scn都存储在控制文件中。
V$DATAFILE_HEADER → CHECKPOINT_CHANGE#,启动SCN。Oracle把这个检查点的scn存储在每个数据文件的文件头中,这个值称为启动scn,因为它用于在数据库实例启动时,检查是否需要执行数据库恢复。
在这里插入图片描述
当检查点SCN,datafile SCN和start SCN都一致时,数据库不需要进行介质恢复。

至于终止SCN,如果数据库是abort方式关闭的,当你启动到mount 的时候,会发现 终止SCN 为 空。这是因为因为abort 后,系统非正常关闭。redo里还有赃块没有写入磁盘。于是数据库重新开启会根据这个终止SCN为空而判断出需要进行介质恢复。
只有正常关闭数据库时,所有的脏块写入磁盘后,终止SCN才会有值。
这时候在Oracle在启动地过程中会进行实例恢复:1.定位到最早的 active状态的redo日志文件(scn号和系统scn相等的那个)进行前滚恢复。
如果数据库是正常关闭的,那么进入mount 后 ,会看到 上次终止SCN的状态,open后 终止SCN会被置为空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值