Oracle-OCP学习笔记:SCN

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

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

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


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

查看所有标签

猜你喜欢:

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

Game Programming Patterns

Game Programming Patterns

Robert Nystrom / Genever Benning / 2014-11-2 / USD 39.95

The biggest challenge facing many game programmers is completing their game. Most game projects fizzle out, overwhelmed by the complexity of their own code. Game Programming Patterns tackles that exac......一起来看看 《Game Programming Patterns》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

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

在线压缩/解压 JS 代码