ITPub博客

首页 > 数据库 > Oracle > Oracle Scn 定义

Oracle Scn 定义

原创 Oracle 作者:mlx_861201 时间:2013-11-25 22:57:48 0 删除 编辑
本帖最后由 mlx_861201 于 2013-3-16 13:31 编辑

Oracle Scn 定义

SCN: oracle system change number.表示oracle 系统改变号。

SCN是一个由之间转换过来的数字,可以通过下列语句转换SCN和具体时间。

SELECTDBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER,

SCN_TO_TIMESTAMP(DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER)FROM DUAL;

常见的SCN

SCN遍布数据库的每一个角落。下面列举几个常见和重要的SCN。

  

SCN名称

  

存在位置



获得方式



备注



系统检查点SCN



控制文件



视图/控制文件



一个数据库一个



文件检查点SCN



控制文件



视图/控制文件



一个文件一个



文件最终检查点SCN



控制文件



视图/控制文件


一个文件一个



文件头部检查点SCN



数据文件



视图/数据文件头



一个文件一个



RedoFile文件开始SCN



RedoFile



视图/RedoFile头



一个文件一个



RedoFile文件结束SCN



RedoFile



视图/RedoFile头



一个文件一个



RedoLog条目的SCN



RedoFile



视图/RedoFile条目



一个条目一个



1、系统检查点SCN(控制文件数据库条目)

可以通过查询视图获得系统检查点SCN值,该值保存在控制文件中,SELECT CHECKPOINT_CHANGE# FROM V$DATABASE; 表示的是LAST SCNCHECKPOINTED。

可以通过dump出控制文件进行查看:ALTERSESSION SET EVENTS 'IMMEDIATE TRACE NAME CONTROLF LEVEL 12'。

2、文件检查点SCN(控制文件数据文件条目)

         可以通过查询视图获得文件检查点SCN值,该值保存在控制文件中,SELECTNAME,CHECKPOINT_CHANGE# FROM V$DATAFILE;

可以通过dump出控制文件进行查看:ALTERSESSION SET EVENTS 'IMMEDIATE TRACE NAME CONTROLF LEVEL 12'。

3、文件最终检查点SCN(控制文件数据文件条目)

        可以通过查询视图获得文件最终检查点SCN值,该值保存在控制文件中,SELECTNAME,LAST_CHANGE# FROM V$DATAFILE;改值在数据库启动时设置为无穷大,该值在数据库正常关闭的情况下设置为关闭时的SCN,非正常关闭依旧为无穷大。

4、数据文件头部的检查点SCN(数据文件头)

         可以通过查询视图获得文件检查点SCN值,该值保存在数据文件头部,SELECT NAME,CHECKPOINT_CHANGE# FROM V$DATAFILE_HEADER。也可以通过dump数据文件头块进行查看。

5、RedoFile文件开始SCN

表示切换到该日志文件的时间点,可以通过查询视图获得文件RedoFile文件开始SCN,该值保存在数据文件头部,SELECT FIRST_CHANGE# FROM V$LOG; 也可以通过dump redoFile文件头块进行查看。当前redoFile的开始SCN就是上一个redoFile的的结束SCN。

6、RedoFile文件结束SCN

表示切换到下一个日志文件的时间点,可以通过查询视图获得文件RedoFile文件开始SCN,该值保存在数据文件头部,SELECT NEXT_CHANGE# FROM V$LOG; 也可以通过dump redoFile文件头块进行查看。当前redoFile的结束SCN就是下一个redoFile的的开始SCN。

7、RedoLog条目的SCN

         表示redo条目对应数据库被修改时间点的CSN。

各检查点之间关系

1、数据库正常关闭和启动时,控制文件的系统SCN、控制文件中的数据文件开始SCN和数据文件头部的开始SCN是相等的,文件的最终检查点SCN是无穷大。

2、正常关闭数据库,oracle会做下列操作。

         A、将所有的buffer cache写到磁盘上。

         B、用关闭的时间点SCN更新系统SCN、文件检查点SCN、文件最终检查点SCN、数据文件头部检查点SCN。此时4中SCN的值相同。

3、数据库非正常关闭(abort),数据库不做写buffercache操作和更新SCN操作。此时文件最终检查点依然为空,数据库需要进行实例恢复。数据库在open的过程中,从控制文件的检查点条目中的每个检查点队列中取得LRBA(检查点队列中第一个脏块的LRBA)和ON DISK RBA(对应REDO FILE的最后一条redolog 条目),然后从LRBA跑日志到ON DISK RBA。

4、数据库正常关闭,用一个备份的数据文件覆盖其中一个数据文件,此时数据文件头部的检查点SCN小于控制文件中的“文件检查点SCN”,此时就需要进行介质恢复。

操作对SCN号的影响

操作是否刷新SCN号码

  

SCN\操作

  

日志切换



全量检查点



正常关闭



增量检查点



刷新缓存


offline



系统检查点SCN



×/√



√



√



×



√




×

文件检查点SCN



×/√



√



√



×



√




×

文件最终检查点SCN



×



×



√



×



×



×


文件头部检查点SCN



×/√



√



√



×



√



√(表空间对应数据文件)


日志文件开始SCN



√



×



×



×



×



×


日志文件结束SCN



√



×



×



×



×



×

  

RedoLog条目SCN

  

×



×



×



×



×



×

注:1、曾量检查点会更新控制文件checkpoint 条目的LRBA值。不会改变SCN

      2、日志切换,假如切换之后将active类型的日志文件切换为inactive,则会更新系统检查点SCN、文件检查点SCN和文件头部检查点SCN。

      3、全量检查点会将buffercache全部写到内容,所以日志状态会发生变化,所以会改变系统检查点CSN。


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

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

注册时间:2013-01-31

  • 博文量
    11
  • 访问量
    72194