欢迎您的到来!本空间用来记录日常工作心得和一些小经验.内容可能部分摘自您的辛苦创作,再次对您表示感谢.希望本空间能给您或者其他朋友一些帮助. PS:寻求福州ORACLE DBA工作,期待您的惠顾(kugooo@live.cn)

【转】如何获取SCN,SCN与TIME关系总结

上一篇 / 下一篇  2008-07-08 16:15:44 / 个人分类:ORACLE--备份恢复

闪回恢复时我们往往需要知道恢复到具体哪个SCN或者哪个时间点。这个成为闪回是否有效的关键一点。

  第一、如何获取SCN

   1、当前SCN以及如何获取

      a、 9I之前 :select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;

              x$ktuxe中查询出来的是当前结束事物最大SCN值,并不完全是系统当前SCN

       b、9I之后:select dbms_flashback.get_system_change_number from dual;

             dbms_flashback查询出来的是系统当前的SCN值,可能是当前末结束事务所产生的SCN

       备注:dbms_flashback查询的SCN >= X$KTUXE查询的SCN (这里隐含说明如果没新事务产生且所有事务都结束后两者的SCN是相等的)

 2、数据文件中的CHECKPOINT SCN

          数据文件中的CHECKPOINT SCN的数值来的比两种当前的SCN要小,因为CHECKPOINT SCN是指已经写入磁盘的事务

           查询数据文件上的CHECKPOINT SCN:

           select file#,name,checkpoint_change#,to_char(checkpoint_time,'yyyy-mm-dd hh24:mi :ss') ckp_time from v$datafile;

    第二、SCN与TIME的关系

      数据库闪回到某一点一般有两种方法:

       a、基于时间       b、基于SCN

       对于ORACLE而言基于时间的闪回操作比较不精确,往往可能闪回后发现自己需要的数据或者表没有出现。同时,ORACLE即使是基于时间的闪回其最终系统内部还是要转换成对应SCN来完成闪回操作,所以基于SCN的Flashback Query是最准确的。

       在此我们引出了这里讨论的主题:如何建立SCN和TIME的时间关系

      ORACLE提供了一张系统表SMON_SCN_TIME,该表保存了TIME与SCN对应关系。

       在9IR2当中该表是5分钟刷新一次,保存5天的数据,也就是保存1440条记录(5*24*(60/5)=1440)(这个也就是为何无论你UNDO RETENTION 设置多大,其FLASHBACK QUERY只能是5天的数据范围)。

       因此在9IR2版本中表的属性修改与flashback之间时间差必须至少要达到5分钟,不然要出现ORA--01466: unable to read data - table definition has changed的错误。

       在10G版本中这个时间差缩短到了6秒,即每6秒刷新一次该表。

       该表的形式如下:select * from sys.smon_scn_time; -----9i

      

THREADTIME_MPTIME_DPSCN_WRPSCN_BAS
112123719702008-6-2 9:59:3001654857
112123723752008-6-2 10:06:1501674992
112123726842008-6-2 10:11:2501675907
112123729912008-6-2 10:16:3201676649

        从上面列表可以发现时间和SCN号对应了起来,同时时间跨度约5分钟。

        通过时间范围来确定对应的SCN就很方便我们做FLASHBACK QUERY或者10G中的闪回。

        比如 select * from t_test as of scn1674992; 

      我们能很方便的查询到6月2日10:06:15的数据情况。

  备注:

   如果时间跨度是大于5天需要查询更加早的数据呢?这里ORACLE提供了另一个可以查询到SCN的工具就是LOGMINER。这里就这个工具不展开讨论。

http://space.itpub.net/127656/viewspace-332314


相关阅读:

TAG: scn

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-30  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 598
  • 日志数: 16
  • 文件数: 1
  • 建立时间: 2007-12-25
  • 更新时间: 2008-07-12

RSS订阅

Open Toolbar