[Oracle] SCN与数据恢复的关系

Oracle内部主要存在以下四种SCN
1.系统检查点(system checkpoint)SCN
每当一个检查点完成时,Oracle就把该检查点对应的SCN记录到控制文件中,可以用以下语句查看当前数据库 的检查点SCN:
select CHECKPOINT_CHANGE# from v$database;

CHECKPOINT_CHANGE#
------------------
6627441168
2.数据文件头SCN(数据文件的启动SCN)
该SCN记录在每个数据文件头中,正常情况下,该SCN应该和记录在控制文件中的检查点SCN一致,可以用以下语句查看数据文件头的SCN:
select FILE#,CHECKPOINT_CHANGE# from v$datafile_header;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 6627448310
2 6627448310
3 6627448310
4 6627448310
5 6627448310
3.数据文件的检查点SCN和终止SCN
这两个SCN不是记录在数据文件中,而是记录在控制文件中,可以通过以下语句查看:
select CHECKPOINT_CHANGE#,LAST_CHANGE# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
6627448310
6627448310
6627448310
6627448310

6627448310

那么Oracle是如何根据这些不同的SCN来判断某个数据文件是否需要恢复以及恢复类型呢?可以用下面的伪代码描述:

if (数据文件检查点SCN <数据文件头SCN)
  then "控制文件来自备份,需要进行不完全恢复,恢复之后得用resetlog方式打开”
else if (数据文件检查点SCN > 数据文件头SCN)
  then "数据文件来自备份,需要log进行完全或不完全恢复"
else if (数据文件检查点SCN = 数据文件头SCN) 
   then "数据库能正常open,还需要判断是否需要实例恢复"
   if (数据文件终止SCN = 数据文件检查点SCN)
       then "数据库打开时不需要实例恢复“
   else if (数据文件终止SCN = NULL)
       then "数据库需要实例恢复"


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值