我们都知道SCN跳变的主要有两个原因:
1.oracle本身的bug导致
2.dblink传播
对于dblink传播一直有个疑惑,是怎么传播的呢?是只要有连接就会发生跳变,还是需要完成事务才会发生跳变?是源端往目标端传播,还是双向传播?
对此专门做了一个测试
实验结果可以得出:
1.只要使用到dblink,哪怕只是一个普通的查询操作,都会导致scn的跳变
2.跳变无关源端还是目标端。只要有一方的scn较高,就会使另一方的scn发生跳变
3.关于参数_external_scn_logging_threshold_seconds,该参数的单位为秒,设置的最小值是600,即10分钟。如果将该隐含参数设置为600,则如果跳变的时间超过10分钟,则会在日志中报一条类似下面的信息:
Advanced SCN by 3720 minutes worth to 0x03ef.10223022, by XXXXX.?
Client info : DB logon user TC, machine mmm, program sqlplus@mmm (TNS V1-V3), and OS user uuu
注意,这里跳变的时间是600秒(即10分钟)。按照Oracle给的scn增长速度最大16k,即每秒钟最大增长16384,则只有出现一次跳变超过600*16384=9830400时,alert日志中才会记录。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23850820/viewspace-2122844/,如需转载,请注明出处,否则将追究法律责任。