首页 > 数据库 > Oracle > PL/SQL:ORA-04063错误解决方法
开发公司根据业务的需要,在本地创建了大量的使用dblink方式去访问远程数据库的数据的SYNONYM(同义词),其实,本地业务用户通过dblink可以访问远程数据库的同义词,如:select * from a.table@dblink ,这样是可以访问的,但是,不幸的是,将同义词放在PROCEDURE里就不行,编译不过去,报错PL/SQL:ORA-04063.
metalink给出了答案:
[@more@]SELECT From a VIEW in a READ ONLY Database Using a DATABASE LINK Within A CURSOR LOOP Fails With ORA-06550 ORA-04063 PLS-00341 PLS-00364 [ID 358708.1] Applies to: Symptoms ORA-04052 error occurred when looking up remote object ' Oracle 9iR2(9.2.0.x) and higher ORA-06550: line The problem only occurs with dblink when SELECT from the VIEW using a cursor loop. The following code creates the view on the remote READ ONLY Database create or replace view x_view as select count(*) y from x; Executing on local database Oracle9iR2 (9.2.0.X or higher) declare |
end loop; returns following expected Output ERROR at line 3: each time issued a new version need to be created, which cause the problem. There is an Enhancement Request raised for this in Solution |
解释一下上面的文字:
由于ORACLE9.2.0.x版本的BUG 2033385,造成了此次报错.
解决方法是使用视图替代同义词.
我们根据metalink描述,给了开发人员建议,将procedure里面所有使用同义词访问远程数据库的,使用创建视图的形式(也带dblink)远程访问数据库,解决这个问题。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26870952/viewspace-1799253/ ,如需转载,请注明出处,否则将追究法律责任。