了解oracle中的SCN.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
了解oracle中的SCN

了解oracle中的SCN 从接触oracle到使用过程中,始终能看到SCN的身影,在oracle的备份恢复原理中更是如此。由此看来SCN的重要性不言而喻呀,对其有个综合的了解能够有对其功能有清晰地认识,在oracle中SCN的种类不一中,对SCN理解的时候常常犯晕,偶尔这样,偶尔那样。说白了就是把多种SCN混淆在一起了。 如果结合控制文件,数据文件,redo等文件的dump内容来了解那几种重要的SCN,将会对其有更深的认识。 直接入题: SCN:?System?Change?Number SCN是顺序递增的一个数字,在Oracle?中用来标识数据库的每一次改动,及其先后顺序。SCN的最大值是0xffff.ffffffff。 Oracle对SCN的管理 单节点的instance中,SCN值存在SGA区,由system?commit?number?latch保护。任何进程要得到当前的SCN值,都要先得到这个latch。 RAC/OPS环境中 Oracle通过排队机制(Enqueue)实现SCN在各并行节点之间的顺序增长。具体有两种方法: Lamport算法:又称面包房算法,先来先服务算法。跟很多银行采用的排队机制一样。客户到了银行,先领取一个服务号。一旦某个窗口出现空闲,拥有最小服务号的客户就可以去空闲窗口办理业务。 Commit广播算法:一有commit完成,最新的SCN就广播到所有节点中。 上述两种算法可以通过调整初始化参数max_commit_propagation_delay来切换。在多数系统?(除了Compaq?Tur64?Unix)中,该参数的默认值都是700厘秒(centisecond),采用Lamport算法。如果该值小于100厘秒,Oracle就采用广播算法,并且记录在alert.log文件中。 几种重要的SCN Commit?SCN 当用户提交commit命令后,系统将当前scn赋给该transaction。这些信息都反映在redo?buffer中,并马上更新到redo?log?文件里。 Offline?SCN 除了System?tablespace以外的任何表空间,当我们执行SQLalter?tablespace?…?offline?normal命令时,就会触发一个checkpoint,将内存中的dirty?buffer写入磁盘文件中。Checkpoint完成后,数据文件头会更新checkpoint?scn和offline?normal?scn值。其中数据库文件头的checkpoint?scn值可通过查询列x$kccfe.fecps得到。 如果执行SQLalter?tablespace?…offline命令时采用temporary或?immediate选项,而不用normal选项时,offline?normal?scn会被设成0。这样当数据库重启后通过resetlog方式打开时,该表空间就无法再改回在线状态。 Checkpoint?SCN 当数据库内存的脏数据块(dirty?blocks)写到各数据文件中时,就发生一次checkpoint。数据库的当前checkpoint?scn值存在x$kccdi.discn中。Checkpoint?scn在数据库恢复中起着至关重要的作用。无论你用何种办法恢复数据库,只有当各个数据库文件的checkpoint?scn都相同时,数据库才能打开。 虽然参数“_allow_resetlogs_corruption”可以在checkpoint?scn不一致时强制打开数据库,但是这样的数据库在open后必须马上作全库的export,然后重建数据库并import数据。 Resetlog?SCN 数据库不完全恢复时,在指定时间点后的scn都无法再应用到数据库中。Resetlog时的scn就被设成当前数据库scn,redo?log也会被重新设置。 Stop?SCN Stop?scn记录在数据文件头上。当数据库处在打开状态时,stop?scn被设成最大值0xffff.ffffffff。在数据库正常关闭过程中,stop?scn被设置成当前系统的最大scn值。在数据库打开过程中,Oracle会比较各文件的stop?scn和checkpoint?scn,如果值不一致,表明数据库先前没有正常关闭,需要做恢复。 High?and?Low?SCN Oracle的Redo?log会顺序纪录数据库的各个变化。一组redo?log文件写满后,会自动切换到下一组redo?log文件。则上一组redo?log的high?scn就是下一组redo?log的low?scn。 在视图v$log_history中,sequence#代表redo?log的序列号,first_change#表示当前redo?log的low

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档