设为首页 加入收藏

TOP

系统改变号(SCN)的详解(二)
2015-07-24 12:13:52 来源: 作者: 【 】 浏览:525
Tags:系统 改变 SCN 详解
/jiagulun/undotbs01.dbf 1157173
/u01/app/oracle/oradata/jiagulun/users01.dbf 1157173
/u01/app/oracle/oradata/jiagulun/example01.dbf 1157173

会发现数据文件中、数据文件头的SCN没有变化,而日志中的SCN的值发生了变化。由于在控制文件中、数据文件头的SCN的主要目的是控制
数据文件的一致性

active表示日志文件中对应脏缓冲区还未写入数据库,不能被覆盖,也就说明需要进行实例恢复。
再做个试验:
1. alter system flush buffer_cache;//冲刷缓冲区数据
2. select name , checkpoint__change# from v$datafile;

/u01/app/oracle/oradata/jiagulun/system01.dbf 1157173
/u01/app/oracle/oradata/jiagulun/sysaux01.dbf 1157173
/u01/app/oracle/oradata/jiagulun/undotbs01.dbf 1157173
/u01/app/oracle/oradata/jiagulun/users01.dbf 1157173
/u01/app/oracle/oradata/jiagulun/example01.dbf 1157173

3. select * from v$log;
1 1 13 52428800 512 1 NO INACTIVE 1157154 22-12月-14 1157173 22-12月-14
2 1 14 52428800 512 1 NO CURRENT 1157173 22-12月-14 281474976710655
3 1 12 52428800 512 1 NO INACTIVE 1156305 22-12月-14 1157154 22-12月-14

上面的数据你会发现当把buffer cache中数据flush掉以后,控制文件、数据文件中的SCN都没有变化,只有日志文件中的状态变了
是由于原本缓冲区的脏数据被清空了,那么它所对应的日志可以变成可以覆盖的了,也就是inactive了
而且在文件头部、控制文件中的SCN的值是记录着日志文件中的ACTIVIE/CURRENT的SCN的值等于最老的redo log中的active的日志

其实控制文件中的SCN是用来定位哪个文件跑日志,而在控制文件中的LRBA是确定从哪里开始跑日志


注意:增量检查点并不会去更新数据文件头,以及控制文件中数据库SCN以及数据文件条目的SCN信息,而只是每3秒由CKPT进程去 更新控制文件中的low cache rba信息,也就是检查点的位置。
那么他们是在什么时候会进行更新呢?
结束SCN时在数据库正常关闭的时候进行更新
其他的SCN是在日志文件的状态从active变成inactive的时候才进行更新的,上面的测试可以证明

fast_start_mttr_target:这个参数是用来设置实例在恢复的时间,因为在个值将会影响DBWR的写数据库频率,
把恢复的时间缩短,说明脏数据少了,那是因为写的频率大。
\
vcmRlcj0="1" cellpadding="2" cellspacing="0" width="100%">
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇业务系统压力测试前,需要Oracled.. 下一篇16.二叉排序树

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: