j2ee 建设简单网站,高端大气的网站制作,最近热点新闻事件2023,太原高级seo主管SCN每秒增长的速度跟Oracle的版本有关#xff0c;在Oracle 11.2.0.2之前是每秒允许最大增长16384#xff0c;在Oracle 11.2.0.2之后是默认每秒允许增长32768#xff0c;这个值跟新增的隐含参数_max_reasonable_scn_rate有关#xff0c;如下所示#xff1a;
NAME …SCN每秒增长的速度跟Oracle的版本有关在Oracle 11.2.0.2之前是每秒允许最大增长16384在Oracle 11.2.0.2之后是默认每秒允许增长32768这个值跟新增的隐含参数_max_reasonable_scn_rate有关如下所示
NAME VALUE PDESC
------------------------------ --------------- --------------------------------------------------
_max_reasonable_scn_rate 32768 Max reasonable SCN rate
Oracle的CURRENT SCN值会通过DBLINK进行传播。比如B库的CURRENT SCN值高于A库当A库通过DBLINK查询B库的表时A库就会递增本库的CURRENT SCN值使其跟B库一样。也就是说多个库之间使用DBLINK交互数据时每个库各自的CURRENT SCN值会和这些库中最大的SCN值保持同步。如果存在Oracle Bug或者人为调整SCN值比如有时需要手工递增SCN值才能强制打开数据库可能导致某个库的CURRENT SCN值异常增长而此时要是再有其他数据库和这个库有DBLINK交互那么就会非常危险。所幸的是Oracle对于最大的SCN有个阀值不允许系统的CURRENT SCN超过这个阀值这个阀值的算法如下所示按照SCN每秒最多递增16384计算 select to_char(SYSDATE,YYYY/MM/DD HH24:MI:SS) DATE_TIME, (((( ((to_number(to_char(sysdate,YYYY))-1988)*12*31*24*60*60) ((to_number(to_char(sysdate,MM))-1)*31*24*60*60) (((to_number(to_char(sysdate,DD))-1))*24*60*60) (to_number(to_char(sysdate,HH24))*60*60) (to_number(to_char(sysdate,MI))*60) (to_number(to_char(sysdate,SS))) ) * (16*1024)) - dbms_flashback.get_system_change_number) / (16*1024*60*60*24) ) indicator from dual;
其中Headroom指的是数据库CURRENT SCN和最大SCN阀值之间的差值。2012年1月之后发布的CPU或PSU补丁增加了新的隐含参数_external_scn_rejection_threshold_hours用于表示这个差值以小时为单位。external_scn_rejection_threshold_hours为静态参数根据这个参数的字面意思再结合它的作用来看可以理解它就是“拒绝外部SCN”的阈值其对于数据库自身产生的SCN递增是没有影响的。安装完补丁之后在Oracle 11.2.0.2及以上版本中该参数默认值是24小时其他版本默认值是744小时。这也就意味着如果系统的CURRENT SCN和阀值SCN相差小于24小时数据库的CURRENT SCN值递增的时候则会容易出现ORA-19706错误。如下所示
SQL select 1 from dualdltest;
select 1 from dualdltest *
ERROR at line 1:
ORA-19706: invalid SCN
同时警告日志中也会出现如下警告
Fri Apr 27 11:50:41 2012
Rejected the attempt to advance SCN over limit by 21 hours worth to 0x0ba5.ee95b2e6, by distributed transaction remote end, remote DB: ORAQY10. Client info : DB logon user ZJUPAR1O, machine BSS_P560Q_5, program sqlplusBSS_P560Q_5 (TNS V1-V3), and OS user oracle
Fri Apr 27 11:51:09 2012
Rejected the attempt to advance SCN over limit by 21 hours worth to 0x0ba5.ee95b63e, by distributed transaction remote logon, remote DB: ORAQY10. Client info : DB logon user ZJUPAR1O, machine BSS_P560Q_5, program sqlplusBSS_P560Q_5 (TNS V1-V3), and OS user oracle
引入了_external_scn_rejection_threshold_hours参数之后由于Headroom变大如果不安装补丁Headroom默认为1小时在使用DBLINK的数据库环境中反而更容易出现ORA-19706错误。所以安装完补丁之后建议将其设置为1从而尽可能地避免出现ORA-19706错误但会使得系统的CURRENT SCN值更加接近SCN阀值。