Oracle SCN介绍

SCN号

    时间的作用:比较先后、比较顺序

    系统使用数字来比较先后顺序

    Oracle数据库里面很多地方需要用到时间,主要用来确认时间先后顺序,这些地方都是SCN号来标识

    1、redo日志中会记录scn号

    2、redo log文件头部会有开两个scn号码

        first change#、next change#

        日志文件的第一条redo log对应的scn号

        下一个日志文件第一条redo log对应的scn号

        对于corrent redo log(当前正在使用的redo log文件),next change#为null(无穷大)

    3、数据文件头部会记录SCN号

    4、控制文件中记录所有数据文件的SCN号

        关于控制文件中每一个数据文件的SCN号有两个

            文件 SCN号、终止SCN号

            终止SCN号就是文件关闭时的SCN号

            终止SCN号用来确定数据文件是否正常关闭,如果为null,就需要进行恢复

    5、系统SCN号

        代表系统当前最新时间的SCN

    6、数据块头部有SCN号,代表数据库的新旧程度

    7、提交的时候,会有SCN号,存储事务提交的顺序

SCN

    1、每一个数据库SCN号没有可比性,只能在自己内部比较

    2、SCN号只能递增

    3、SCN设计使用500年

    4、数据库互相之间访问的时候,特别是形成网状结构的时候,英文bug很容易导致SCN疯长,达到房顶

    5、只能重建数据库

    6、SCN号主要用来比较新旧,没有必要实时更新

系统SCN改变的两种情况

    1、redo log切换

    2、大量的脏页回写的时候

查看系统SCN号

select *from v$database;

查看数据文件头部SCN号

select CHECKPOINT_CHANGE# from v$datafile_header;

查看redo日志文件SCN号

select FIRST_CHANGE#,NEXT_CHANGE#  from v$log;

查看控制文件中记录的SCN号

select last_change#,checkpoint_change# from datafiles;



 
 

发布了4 篇原创文章 · 获赞 0 · 访问量 7

猜你喜欢

转载自blog.csdn.net/wysdhr/article/details/104927530
SCN
今日推荐