1.oracle 为了防止scn的异常增长所以限制每一秒钟允许最多产生 256*256/4 个scn
2.oracle 内部使用了一个4G范围的数据来表示01/01/1988 00:00:00 ~ 08/18/2121 06:28:15 这段时间.它的算法简单,说来就是每个月都是用的31天来表示时间,每增加1秒,这个数值就增加1. 可以从redo file dump ,control file dump,datafile head dump 观察到这个值.
当前系统可能的最大scn 就是上面两个值的乘集. 可用下面的脚本获得系统当前scn可能的最大值:
select to_char(
(
(
(
(
(
(
to_char(sysdate,''YYYY'')-1988
)*12+
to_char(sysdate,''mm'')-1
)*31+to_char(sysdate,''dd'')-1
)*24+to_char(sysdate,''hh24'')
)*60+to_char(sysdate,''mi'')
)*60+to_char(sysdate,''ss'')
) * to_number(''ffff'',''XXXXXXXX'')/4,''XXXXXXXXXXXXXXXX'') scn_hex
from dual
/