ITPub博客

首页 > 数据库 > Oracle > Oracle SCN及其作用

Oracle SCN及其作用

原创 Oracle 作者:2008081036 时间:2017-11-02 22:14:52 0 删除 编辑

一、SCN的概念
A system change number (SCN) is alogical, internal timestamp used by Oracle Database. SCNs order events thatoccur within the database, which is necessary to satisfy the ACID properties ofa transaction. Oracle Database uses SCNs to mark the SCN before which allchanges are known to be on disk so that recovery avoids applying unnecessaryredo. The database also uses SCNs to mark the point at which no redo exists fora set of data so that recovery can stop.




1、系统检查点SCN (System Checkpoint SCN):记录于控制文件中,针对于数据库全局,故只存在一个。

    当检查点进程启动时(ckpt),Oracle就把系统检查点的SCN存储到控制文件中。该SCN是全局范围的,当发生文件级别的SCN时,例如将表空间置于只读状态,则不会更新系统检查点SCN。

2、文件检查点SCN (Datafile Checkpoint SCN):记录于控制文件中,每个数据文件对应在控制文件中各自存在一个Datafile Checkpoint SCN。

    当ckpt进程启动时,包括全局范围的(比如日志切换)以及文件级别的检查点(将表空间置为只读、begin backup或将某个数据文件设置为offline等),这时会在控制文件中记录的SCN。

3、结束SCN (Stop SCN):记录于控制文件中,每个数据文件对应在控制文件中各自存在一个Stop SCN。
    在数据库正常运行期间,Stop SCN(通过视图v$datafile的字段last_change#可以查询)是一个无穷大的数字或者NULL。当数据库正常关闭时,Stop SCN会设置为Start SCN。

4、数据文件头SCN (Start SCN):记录于每个数据文件的文件头中,每个数据文件拥有各自的Start SCN。
    
    当发生系统及文件级别的检查点后,不仅将这时的SCN号记录在控制文件中,同样也记录在数据文件头中。

二、oracle启动时SCN的作用

    当数据库启动时,会对各个SCN号进行比较,然后判断是否需要介质恢复或实例恢复:

if Datafile_Checkpoint_SCN == Start_SCN:
    不需要media recover
elif Datafile_Checkpoint_SCN > Start_SCN:
    数据文件介质故障,需要media recover
elif Datafile_Checkpoint_SCN < Start_SCN:
    控制文件介质故障,需要media recover

if Stop_SCN is null:
    需要instance media
else:
    不需要instance media

    另外,当执行begin backup时实例崩溃:控制文件中的数据文件检查点SCN号和数据文件头部检查点SCN号相同,但是每个可读写的在线数据文件之间检查点SCN号不同,那么也需要介质恢复。例如,当发出beginbackup命令后就会出现这种情况,需要通过endbackup命令才可以打开数据库。

参考:http://www.itpub.net/thread-1601493-1-1.html 【听海日志】之SCNOracle

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

请登录后发表评论 登录
全部评论

注册时间:2014-05-05

  • 博文量
    26
  • 访问量
    88523