SCN浅析

简介:

我们重点讨论几个SCN

控制文件中的SCN

1、系统检查点SCN

当一个检查点动作完成以后,Oracle就把系统检查点的SCN存储到控制文件中

image

2、数据文件检查点SCN

当一个检查点动作完成以后,Oracle就把每一个数据文件的SCN单独存放在控制文件中

image

1、为了显示,首先看一下DESC,确定每一个列的大小

2、设置linesize,保证一行中能够容纳所有的列

当然也要考虑实际的大小

同时还可以设置pagesize的大小

3、终止SCN

联机读写模式下面的所有的数据文件的终止SCN为空或者无限大

image

数据文件中的SCN

1、启动SCN

image

数据文件的检查点信息写入到每一个数据文件的头部

1、数据库正常运行期间,控制文件中的系统检查点SCN、控制文件中数据文件检查点信息、每个数据文件头部的数据文件检查点SCN,都是相同的

2、控制文件中每个数据文件的终止SCN都为NULL

数据库正常关闭,系统执行一个CHECKPOINT,将所有的数据文件的终止SCN(位于控制文件中)设置成数据文件头部的启动SCN

数据库安全关闭以后,四个SCN应该是相同的

数据库启动

1、数据文件头部的启动SCN与控制文件中数据文件检查点SCN比较

如果相同,继续

2、数据文件头部的启动SCN与控制文件中数据文件终止SCN比较

如果相同,那么表示正常关机,不需要恢复

3、数据库打开,控制文件中数据文件终止SCN被设置为NULL

数据库被打开,并且正常使用

 

熊熊物语:说白了吧,UNDO表空间就是一个历史滚滚长流,每一个SCN版本号可以理解成一个已经过去的朝代,如果你想玩穿越,就得有个具体的SCN版本号,才能穿越过去

那为什么SCN号不对应不行呢,很简单,比如一个康熙当政的时候,他媳妇儿是皇后,等他挂了,雍正继位,皇太后就是德妃娘娘了,那个皇后怎么办,不能再用前朝的SCN号了,就得改新的SCN号,叫皇太妃,对吧(哈哈,架空历史,假设假设)
















本文转自bear_cat51CTO博客,原文链接:http://blog.51cto.com/bearlovecat/785821 ,如需转载请自行联系原作者

相关文章
|
存储 SQL Oracle
|
Oracle 关系型数据库 SQL
[20180423]表空间闪回与snapshot standby
[20180423]flashback tablespace与snapshot standby.txt --//缺省建立表空间是打开flashback on,如果某个表空间flashback off,在dg启动snapshot standby时注意,可能"回不来", --//通过测试说明问题.
1236 0
|
Oracle 关系型数据库 数据库
|
数据库
[20161019]数据文件offline后恢复到那个scn
[20161019]数据文件offline后恢复到那个scn号.txt --前一天别人问的问题,如果数据文件offline时,online要恢复,一般恢复到scn是多少,是offline时的scn吗? --总不见得如果长时间offline,要应用许多归档日志吧,通过测试说明问题: 1.
808 0
|
SQL 监控 测试技术
大量redo生成的问题原因及改进
接着上次分享的关于数据库无法登录的原因http://blog.itpub.net/23718752/viewspace-1791089/ 其实最终还是因为在短期内生成了大量的redo,造成了频繁的日志切换,导致归档占用了大量的空间,最后无法登录,从这个层面来说,我们可以做一些工作来尽可能长时间的保留近期的归档,但是我们还可以换一个思路,那就是看看到底是什么操作生成了大量的redo,能不能试着减少redo的生成量。
873 0
|
Oracle 关系型数据库 测试技术
[0126]理解_corrupted_rollback_segments
[20150126]理解_corrupted_rollback_segments.txt --前几天遇到一个恢复问题,异常掉电导致读取redo文件错误,我还第一次解决这种问题,加入参数后 --_allow_resetlogs_corruption=true后,报undo读取有问题,按照网上的介绍,使用_corrupted_rollback_segments参数解决, --最后open resetlogs打开。
717 0
|
Oracle 关系型数据库 索引
smon_scn_time ORA-00600 ktspfupdst-1
处理流程如下: 查看数据库日志报错: ORA-00600: internal error code, arguments: [ktspfupdst-1], [], [], [], [], [], [], [], [], [], [], [] Incid...
1088 0
|
移动开发
[20140612]确定每天产生的redo大小
[20140612]确定每天产生的redo大小.txt column h0 format 999 column h1 format 999 column h2 format 999 column h3 format 999 column ...
718 0
|
Shell 数据库 数据库管理
关于SCN的总结测试
scn是数据库对自身变化的一个标记。通过一个序列号能够反映出数据库在那个时间点正在进行的操作,scn没有选用时间来作为基准单位,可能也是因为时间的不确定性,比如当前时间为2014年3月14号晚上八点整,如果修改了系统时间,改为晚上七点钟,name重启数据库以后,那个时间段的操作就都乱套了。
891 0