- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SCN号详细说明
Oracle SCN相关问题学习与测试
目录
1、SCN的介绍
2、SCN的工作机制
3、SCN的增加
4、其他的SCN
5测试
6小结
7问题
1、SCN的介绍
Oracle中的SCN有下面几种:
1)系统检查点scn(v$database(checkpoint_change#))
当一个检查点动作完成之后,Oracle就把系统检查点的SCN存储到控制文件中
select checkpoint_change# from v$database;
2)数据文件检查点scn (v$datafile(checkpoint_change#))
当一个检查点动作完成之后,Oracle就把每个数据文件的scn单独存放在控制文件中
select name,checkpoint_change# from v$datafile;
3)数据文件终止scn (v$datafile(last_change#))
每个数据文件的终止scn都存储在控制文件中。在正常的数据库操作过程中,所有正处于联机读写模式下的数据文件的终止scn都为null,异常关闭后的Stop SCN,也为NULL.
select name,last_change# from v$datafile;
4)数据文件启动scn (v$datafile_header(checkpoint_change#)
Oracle把这个检查点的scn存储在每个数据文件的文件头中,这个值称为启动scn,因为它用于在数据库实例启动时,检查是否需要执行数据库恢复
select name,checkpoint_change# from v$datafile_header;
2、SCN的工作机制
1)在数据库打开并运行之后,控制文件中的系统检查点scn、控制文件中的数据文件检查点scn和每个数据文件头中的启动scn都是相同的
2 )控制文件中的每个数据文件的终止scn都为null
3) NORMAL或IMMEDIATE关闭数据库的过程中,系统会执行一个检查点动作,这时所有数据文件的终止scn都会设置成数据文件头中的那个启动scn的值。
4)在数据库重新启动的时,Oracle将执行两次检查
◆看数据文件头中的ckpt计数器(v$datafile_header.checkpoint_count)是否与对应控制文件中的ckpt计数器(v$datafile.)一致。若相等,进行第二次检查
◆比较文件头中的启动scn和对应控制文件中的终止scn进行比较,如果终止scn等于启动scn,则不需要对那个文件进行恢复
5)数据库打开之后,存储在控制文件中的数据文件终止scn的值再次被更改为null,这表示数据文件已经打开并能够正常使用了
注:当ABORT强制关闭数据库时不进行检查点处理,所以终止scn仍然为无穷大。在下次启动期间,发现启动scn和终止scn不同,需要进行线程恢复。
3、SCN的增加
1) SCN(System Change Number)只要数据库被修改,就会+1,而不是一定要进行checkpoint,例如DML的发生即使没有提交也会使SCN+1.(哪些情况下SCN会发生变化?)
注:SCN增加并不代表会在数据文件头中表现出来,而是需要等到checkpoint执行后才写入(当然可能已经增加了很多)
2)如果一个DML导致产生事务,则会产生一个SCN。这个意思是说如果一个事务包含多个dml,则只有第一个初始产生事务的dml产生scn,提交的时候又是一个scn,如果一个事务只有一个dml,那看起来就是dml产生一个scn,提交或者回滚产生一个scn。
3) Oracle10g内部的SCN会默认不管有没有动作,每隔3s自动增加一次。其他需要增加的情况则再加。
4)只有ckpt进程才会修改文件头中的checkpoint计数器和SCN,DBWR只会修改数据块,即ckpt通知dbwr写数据文件,写完之后ckpt更新控制文件和数据文件头。此时若DBWR发现数据块的log block还没有被写入日志文件,则在dbwr写块之前通知lgwr把log buffer中的日志写入log文件。
注:总结一下,日志切换必定触发ckpt,但ckpt不一定会触发lgwr,但是一定会触发dbwr
4、其他的SCN
1)日志文件头中包含了Low scn、Next scn,表示所给日志文件包含有从Low scn到Next scn的redo record. (如何查看? REDO SCN)
注:当系统运行时,日志文件的Ne
文档评论(0)