Oracle-OCP学习笔记:SCN

栏目: 数据库 · Oracle · 发布时间: 5年前

内容简介:比较先后、比较新旧

1 、SCN的意义?system change number

SCN

转换后就是时间,通过SCN可以比较两个SCN的大小 ,也就是时间的先后。

SCN 的作用:

比较先后、比较新旧

所有的SCN号,作用是为了保证数据的一致性和新旧程度;

SCN 号与时间对应转换关系:

Oracle-OCP学习笔记:SCN

Select dbms_flashback.get_system_change_number,SCN_TO_TIMESTAMP(dbms_flashback.get_system_change_number)from dual;

Oracle-OCP学习笔记:SCN

2 、常见的SCN     2.1 控制文件的三个SCN
系统SCN (在控制文件中的SCN号)

selectcheckpoint_change# from v$database; 只有一个SCN号

文件SCN(在控制文件中的SCN号),针对每个文件都有一个SCN号

select name,checkpoint_change# from v$datafile;

结束SCN(在控制文件中的SCN号),因为数据库文件已打开,没有关闭,所有数据为空或无穷大

selectname,last_change# from v$datafile; 针对每个文件都有一个SCN号

开始SCN(在DBF数据文件中的SCN号)

select name,checkpoint_change# from v$datafile_header;

如果数据库正常关闭,以上4个SCN号值一样

以上控制文件的SCN号对应的是日志文件为CURRENT状态文件的first_change的SCN号

检查点信息

增量检查点并不会去更新数据文件头,以及控制文件中数据库SCN以及数据文件条目的SCN信息,而只是每3秒由CKPT进程去更新控制文件中的low cache rba(LRBA)信息,也就是检查点的位置。

2.2 数据文件头部     开始SCN(在DBF数据文件中)针对多个文件都有一个SCN号

select name,checkpoint_change# from v$datafile_header;

数据块头部ITL事务槽(在后面章节详述)
日志change vector中
跑日志、空跑日志

跑日志:会将数据块的变新。

日志有SCN号,数据块也有SCN号,所以旧的日志不可能对新的数据块产生做用。这叫做空跑日志

回滚段事务表中(在后面章节详述)

  2.3 日志文件头部
每个redo log日志条目都有一个SCN,

每一个redo log文件有两个SCN,一个叫first SCN,一个next SCN   

first 、next --查看历史日志first_change#,next_change#

selectrecid,sequence#,first_change#,next_change# from v$log_history whererownum<6;

Oracle-OCP学习笔记:SCN

select * from v$log;

日志文件status:

ACTIVE: 表示这个日志文件中的日志对应的buffer cache脏缓冲区的数据还没有写回到数据文件中,也表示这个日志文件不能被覆盖,

INACTIVE: 脏缓冲区的数据已完全写入到磁盘中了,也表示这个文件可以被覆盖了。

CURRENT: 当前使用的日志文件

select * from v$archived_log;

alter system switch logfile;

alter system flush buffer_cache;

first_change# 表示这个日志文件的第一条日志SCN号

next_change# 表示下一个日志文件第一条日志的SCN号

正常情况下,控制文件的系统SCN文件SCN 与数据文件头部的SCN应该是一样的。

数据库正常关闭,buffer cache 

更新系统SCN,文件SCN,终止SCN。数据文件头部的SCN。

非正常关闭,终止SCN为空,其他都一样,非正常关闭需要进行实例恢复。需要redo log,不需要归档log。

3 、实例恢复     

只是需要redo log:active、current

实例恢复判断依据:启动数据库时,检测到控制文件的终止SCN为空就需要做实例恢复

演示SCN变化

如果发生了实例崩溃,只需要在日志文件中找到检查点位置(low cache rba),从此处开始应用所有的重做日志文件,就完成了前滚操作。实例崩溃后,再次启动数据库,oracle会到控制文件中读取low cache rba,这就是检查点位置。从此处开始应用重做日志,应用到on disk rba的位置。on disk rba是磁盘中重做日志文件的最后一条重做记录的rba。

恢复涉及到的专业名词:

跑日志

跑日志跑多了没关系,不会重复应用2次,只会发生空跑,没事。

提升SCN,比如一个数据文件是旧的,就需要应用归档日志、重做日志使其SCN提升到跟系统SCN一致。

每个日志条目里面都有SCN。

每个日志文件 头部有两个SCN,first和next SCN。

控制文件中的3个SCN:

数据文件头部的SCN:

4 、fast_start_mttr_target

Sql>show parameter fast_start_mttr_target;

配置:

Alter system set fast_start_mttr_target=600

fast_start_mttr_target 参数,

默认是0,表示oracle自动调节 单位是秒。

如果是20秒,实例恢复的时候,需要前滚日志,oracle会尽量控制在20秒以内。会加大DBWn写的频率。

如果时间过短,DBWn写的频率过大,I/O会很繁忙,可能会出问题。

Oracle-OCP学习笔记:SCN


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

MATLAB高效编程技巧与应用

MATLAB高效编程技巧与应用

吴鹏 / 北京航空航天大学 / 2010-6 / 39.00元

《MATLAB高效编程技巧与应用:25个案例分析》是作者八年MATLAB使用经验的总结,精心设计的所有案例均来自于国内各大MATLAB技术论坛网友的切身需求,其中不少案例涉及的内容和求解方法在国内现已出版的MATLAB书籍中鲜有介绍。 《MATLAB高效编程技巧与应用:25个案例分析》首先针对MATLAB新版本特有的一些编程思想、高效的编程方法、新技术进行了较为详细的讨论,在此基础上,以大量......一起来看看 《MATLAB高效编程技巧与应用》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具