12.04.06
奇怪的ORA-03106问题
这两天,开发的兄弟在某地和其他系统作接口,不可避免的使用了dblink.
我这边的环境为Oracle 8.1.7.4.0,对方为Oracle9.2.0.1.0,dblink建好以后,作dblink的查询,报错,ora-03106.
俺介入处理,首先俺作了一个select * from v$parameter@dblink,查询是成功的,那么说,整个dblink都是通的;
然后select * from table@dblink,报错,ora-03106,查了下手册,发现可能是由于字符集的问题引起,核对两边的字符集,并无异常.然后作查询,select col1 from table@dblink,这里的col1是不含中文内容的字段,查询成功;然后select col1,col2 fromtable@dblink,这里的col2含有中文内容,查询依然成功,但是如果增加另外一个字段进去,就报错.
严重怀疑是bug,因为整个dblink看起来正常,中文的转换也正常.metalink看看,发现确实会有一个bug,bug id为3982017,看描述如下:
ORA-3106 can occur during a fetch in the server combination: 8i(local_server) < --> 9i(remote1_server)< --> 8i(remote2_serve) This can occur when executing a PL/SQL block which selects a remote synonym (9i) which is created for remote table in 8i(remote2_server) by opening a cursor and fetching data.
从这个描述看,和我的问题比较符合,于是,建议现场升级到9207,可惜现场使用我的升级包,一直无法在服务器上升级成功,直接就是不能安装.
郁闷了,现场兄弟继续修改,原来作查询的table是一个同义词,不查询同义词,直接查询基表,就不存在这样的问题.
至此问题解决,不过还是不明白到底是不是这个bug的问题.有机会再测试下.