ORA-00600:内部错误代码,参数:[kpnxdcbk-2],[],[],[],[],[],[],[],[],[],[],[]

由于最近工作中常出现ORA-00600:内部错误代码,参数:[kpnxdcbk-2],[],[],[],[],[],[],[],[],[],[],[]这种异常!所以在这里讲一下我的处理方法。

笔者所遇见的这种异常是因为dblink导致的,如果读者没有使用dblink,就不用看了。

笔者认为dblink主要作用就是传数据,如果要将它使用的更广泛,就有可能出现ORA-00600:内部错误代码,参数:[kpnxdcbk-2],[],[],[],[],[],[],[],[],[],[],[]

由于数据库中涉及dblink的是存储过程,所以就笔者就先测试了一下,结果是在数据库工具pl/sql中是可以通过测试;后来有专门用java代码调用数据库存储过程,奇怪的是,用Java代码和plsql调用同一个存储过程,plsql没问题而java代码调用就报ORA-00600:内部错误代码,参数:[kpnxdcbk-2],[],[],[],[],[],[],[],[],[],[],[]

经多次尝试,发现将存储过程中:

v_sql:='select * from  '||v_tableName||' where id='''||v_sampleId||'''';

改为:v_sql:='select * from  '||v_tableName||' where id='''||v_sampleId||''''||'and 1=1';

问题就解决了,这是数据库的一个bug,得打补丁,笔者这里没打补丁,就钻个空子,简单的就行,再说升级数据库或者给数据库打补丁都不属于我管的,那是DBA的活,等以后有机会再试着那样解决吧!

上述解决问题的关键就是:试着将查询的sql语句后边跟一个肯定条件,如笔者加上“1=1”;

然而上边的处理方法有时也不能解决问题,比如在开发和测试环境下那样修改就没问题啦,但线上环境还是出错;那怎么办呢?别急,我们可以试试别的方法,我当时

是这样改的

v_sql:='select * from t_area_province ';

改为:v_sql:='select * from t_area_province order by id';

后边加上的是“order by id”,问题就解决了!

还有就是更换数据库驱动包,有同事将ojdbc6.jar,换为classes12.jar,在他本地可以,但我这边试过了,我这边结果还是解决不了,大家可以试试啊!

综上所述,dblink导致的[kpnxdcbk-2],[],[],[],[],[],[],[],[],[],[],[]异常在这里提到四种处理方法,查询sql后加“1=1”、加“order by id(其他字段也试试啊)”和换驱动包笔者试过了,数据库升级和给数据库打补丁没试过,朋友们若有机会可以试试啊!随后,笔者水平有限,若有错误的地方还望高手指点!

 

posted @ 2017-04-21 14:57  临飞  阅读(1800)  评论(0编辑  收藏  举报