ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> Oracle >> How to resolve ORA-19706 error when select from dblink

How to resolve ORA-19706 error when select from dblink(1/2)

来源:网络整理     时间:2015-12-04     关键词:

本篇文章主要介绍了"How to resolve ORA-19706 error when select from dblink",主要涉及到方面的内容,对于Oracle感兴趣的同学可以参考一下: 由于通过database link进行远程数据库的数据读取时,会自动同步当前库和远程库的SCN,老杨在文章中做过描述,并且提到:而对于实际环境中,SCN的增加可...

由于通过database link进行远程数据库的数据读取时,会自动同步当前库和远程库的SCN,老杨在文章中做过描述,并且提到:

而对于实际环境中,SCN的增加可能是几倍、几十倍甚至是上百倍,从而引发一些其他的bug。

下面就来看一个问题。该错误会在应用了2012年1月份CPU的Oracle数据库中出现,而在原始版本中,比如10.2.0.5.0之中不会出现此错误。

--通过dblink进行简单的查询报ORA-19706错误
SQL> SELECT sysdate FROM dual@AIX12;

SELECT sysdate FROM dual@AIX12

ORA-19706: invalid SCN

--登录远程库,检查SCN,很大的一个数字
SQL> SELECT current_scn FROM v$database; 

CURRENT_SCN
-----------
12763142641

--而当前库,由于新创建,所以SCN并不大,与远程库想比相差几个数量级
SQL> SELECT current_scn FROM v$database;

CURRENT_SCN
-----------
    5017684

看一下ORA-19706错误的解释。可以看到too large是产生该问题的原因之一。

$oerr ora 19706
19706, 00000, "invalid SCN"
// *Cause:  The input SCN is either not a positive integer or too large.
// *Action: Check the input SCN and make sure it is a valid SCN.

SCN是一个可以容纳很长时间的数字,为什么会出现too large的情况呢?这是由于SCN有headroom限制的原因,headroom是一个固定值,从1988年开始计算,以每秒16K的速度递增。当突然请求的SCN超过跟SCN headroom之间允许的差值时,则会出现ORA-19706错误。

详细的解释可以参看MOS Note – System Change Number (SCN), Headroom, Security and Patch Information [ID 1376995.1]。

解决方法:
1. 设置隐含参数_external_scn_rejection_threshold_hours,具体解释可以参看:
MOS Note – Installing, Executing and Interpreting output from the “scnhealthcheck.sql” script [ID 1393363.1]。

该参数在10.2.0.5中默认是744,设置为24通常可以解决问题(表示允许跟headroom之间的差距相差24小时)。

SQL> ALTER system SET "_external_scn_rejection_threshold_hours"=24 scope=spfile;

也就是如果远端数据库的SCN由于某些bug导致异常增长,那么这个SCN跟headroom之间的差距将会低于默认值744小时(31天),当本地数据库(打了2012年1月份CPU补丁后的)通过dblink查询远端数据,由于SCN同步机制,本地数据库尝试将SCN同步为跟远端一样大小,但是这个值超过了跟SCN headroom之间允许的差值,因此报错。

实际上具体设置的值应该根据上面MOS文档中scnhealthcheck.sql的结果,该SQL应该在远端数据库中运行(或者说在具有最大的SCN的数据库中运行),假设运行结果显示:

SCN Headroom: 14.55
上一篇db2常用命令大全 下一篇JDBC-Oracle

相关图片

相关文章