1. Fri Jun 29 20:18:10 2012  
  2. Started recovery at 
  3.  Thread 1: logseq 526723, block 735397, scn 0.0  
  4. Fri Jun 29 20:18:10 2012  
  5. Recovery of Online Redo Log: Thread 1 Group 1 Seq 526723 Reading mem 0  
  6.   Mem# 0 errs 0: /dev/vgocrm05/rredo01  
  7. Fri Jun 29 20:18:22 2012  
  8. Recovery of Online Redo Log: Thread 1 Group 2 Seq 526724 Reading mem 0  
  9.   Mem# 0 errs 0: /dev/vgocrm04/rredo02  
  10. Fri Jun 29 20:18:36 2012  
  11. Completed redo application  
  12. Fri Jun 29 20:18:37 2012  
  13. Ended recovery at 
  14.  Thread 1: logseq 526724, block 383606, scn 2853.3698983521  
  15.  126266 data blocks read, 126255 data blocks written, 672206 redo blocks read 
  16. Fri Jun 29 20:18:50 2012  
  17. Crash recovery completed successfully  
  18. Fri Jun 29 20:18:50 2012  
  19. Thread 1 advanced to log sequence 526725  
  20. Thread 1 opened at log sequence 526725  
  21.   Current log# 4 seq# 526725 mem# 0: /dev/vgocrm02/rredo_03  
  22. Successful open of redo thread 1  
  23. Fri Jun 29 20:18:50 2012  
  24. SMON: enabling cache recovery  
  25. Fri Jun 29 20:18:51 2012 

今日对于日志中的scn表示很困惑,scn 2853.3698983521这东西到底代表什么?

先说怎么算的

2853代表wrap(16位)
3698983521代表base(32位)

十进制转换二进制
2853=101100100101
3698983521=11011100011110100000001001100001

然后把两个合起来 wrap.base
10110010010111011100011110100000001001100001

二进制转换十进制

10110010010111011100011110100000001001100001=12257240679009

12257240679009这个号就是系统的scn啦~

这是算出来的,我们也可以通过视图查看

在alter日志中我们可以定位log sequence号526725

在视图v$log_history中查看

 

 
  1. SQL> select recid,sequence#,first_change#,next_change# from v$log_history where sequence#=526725;  
  2.  
  3.      RECID  SEQUENCE#           FIRST_CHANGE#      NEXT_CHANGE#  
  4. ---------- ---------- ----------------------- -----------------  
  5.     526725     526725          12257240679010    12257383088787  
  6.  

frist_change#中的值比算出来的小1,这里有一个问题不知是不是切换一次日志就加一。如果是的话那么完成Ended recovery的时间点只需要SCN-1即可

不过我得仔细研究一下什么叫wrap和base了