oracle中scn的分类

                         SCN

scn (system change number)

  oracle 内部逻辑时钟,用来反映数据库中所有变化(每一个数据块的变化都会引起scn的改变)

各种scn

1,          系统当前SCN

Sql>select current_scn from v$database;

Sql>select scn_to_timestamp(4788376) from dual;

Sql>select timestamp_to_scn(sysdate) from dual; (scn与自然时间的转换,若一个自然时间对应多个SCN,则转换时取最小scn)

2,Checkpoint SCN(注意只会随检查点的发生而被更新)

a.       Start scn(保存在数据文件中)

 当检查点发生或者实例关闭时,所有缓存数据需要全部写入到数据文件中,此时数据文件中的各个start scn更新到一致。Oracle启动时先检查是否需要media recovery,若数据文件中各个start scn不一致,出现某个start scn较小,则说明该文件较旧(被替换成老文件或为及时更新),此时需要手动进行redo 介质恢复

   Sql>select checkpoint_change# from v$datafile_header;

 

b.      Stop scn(保存在控制文件中,又称END SCN)

实例正常关闭时,oracle会在控制文件中记录下每个数据文件对应的stop scn(取最新的start scn为值) 用来判断上次实例是否正常关闭,若数据库启动时发现控制文件中stop scn 为空 则此次启动会自动进行实例恢复,系统打开会将stop scn清空

 

c.       Datafile scn(保存在控制文件中,11

用来与start scn对比,判断start scn是否是最新的(可能出现start scn都一致,但全不是最新的)oracle在更新每个数据文件的start scn之前会先更新控制文件中的datafile checkpoint scn,因此控制文件中的datafile checkpoint scn 总会保持最新

 

d.      System checkpoint scn(保存在控制文件中,一对多)

用来判断控制文件是否是最新的,与start scn进行对比,若system checkpoint scn较旧,则需对控制文件进行介质恢复

 异常1start scn不一致,(某个数据文件旧,介质恢复)

 异常2system scn=datafile scn控制文件旧,需介质恢复)

 异常3system scn=datafile scn>start scn (数据文件旧,需介质恢复)

 异常4:stop scn 为空(启动过程中) 需进行实例恢复

 

3,Redolog SCN(archive log)

a.Low scn(开始写一组日志时,会在该日志中记录当前SCN)

b.Last redo scn(日志文件被更新时,会记录当前scn反映日志更新进度)

c. Thread closed scn(未切换日志组时关闭数据库时,记录当前SCN)

d. nexto scn (切换日志组时,在当前日志文件中记录,并作为下一组日志文件的Low scn)

4,          Block scn

在数据块中记录块被修改的scn,用来保证一致性读(consistent read

在一项查询事务进行过程中(假设查询比较长),若在此过程中对数据块进行了修改(不管提交与否),都不会影响在数据修改之前发起的查询事务。即服务进程会去回滚段上读取block scn小于 发起查询时刻scn的数据内容。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28109623/viewspace-750258/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28109623/viewspace-750258/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值