通过存储过程执行通过DBLINK的查询语句失败-单个语句成功--ORA-00604
来源:互联网 发布:iphone6软件无法联网 编辑:程序博客网 时间:2024/05/16 00:36
客户遇到个问题,描述如下:--环境是ORACLE 9.2.0.8
(语句及场景非真实了,网上找的,情况是一致的)创建了一个DB_LINK连接另一个Oracle数据库。 select * from tablename@dblinkname;
单句执行没问题,但是把这句SQL写到存储过程内:
create or replace procedure prc_test
is
begin
insert into test
select * from tablename@dblinkname;
commit;
end;
就发生如下错误,存储过程编译不通过:
Compilation errors for PROCEDURE prc_test
Error: PL/SQL: ORA-04052: 在查找远程对象 tablename@dblinkname 时出错
ORA-00604: 递归 SQL 层 1 出现错误
ORA-03106: 致命的双工通信协议错误
ORA-02063: 紧接着line(源于XXX(被连接的数据库服务名))
Line: 4
Text: insert into test
Error: PL/SQL: SQL Statement ignored
Line: 4
Text: insert into test
#########################################################
以下metalink上解决问题方法,打上对应的补丁即可
--这里我未打补丁,只是找出原因向客户说明而已。
Subject: Errors ORA-00604 And ORA-03106 During Procedure Compilation
Doc ID: 577347.1 Type: PROBLEM
Modified Date : 26-MAY-2008 Status: MODERATED
Applies to:
PL/SQL - Version: 9.2.0.4 to 9.2.0.8
This problem can occur on any platform.
This note applies only if the underlying Oracle Client is below 9.2.0.8 Patch 4
Symptoms
While trying to run pl/sql code involving queries which access remote objects, you may endup getting below errors:
PL/SQL: ORA-04052: error occurred when looking up remote object <object name>
ORA-00604: error occurred at recursive SQL level 1
ORA-03106: fatal two-task communication proto error
ORA-02063: preceding line from AFQ
When the same query is run outside pl/sql block it runs perfectly.
Cause
You are most probably hitting the Bug 5866805.
Bug 5866805 duplicate of Bug 5576340 which is itself a duplicate of Bug 5671074.
Solution
The Bug 5671074 IS fixed IN 9.2 .0 .8 Patch 4 OR above.
0 0
- 通过存储过程执行通过DBLINK的查询语句失败-单个语句成功--ORA-00604
- 如何通过dblink truncate远程数据库上的表+调用远程存储过程,提示ORA 02064 .
- 通过查询分析器对比SQL语句的执行效率
- 通过存储过程获得表的创建语句
- 通过SQL语句查询
- C++通过occi执行select语句、存储过程、函数,取cursor值示例
- 单个语句快于存储过程的原因分析
- MySQL查询语句执行的过程
- MySQL查询语句执行的过程
- 通过脚本执行sql语句
- 通过脚本执行sql语句
- 通过sql文件执行语句
- 通过SQL语句提取存储过程中的内容
- 通过linux的进程ID查询该进程正在执行的SQL语句
- 通过语句查询sqlserver2005版本
- 解决ORA-02021: 不允许对远程数据库进行 DDL 操作下面通过DBLINK调用远程过程来执行这样的操作。
- SQL语句和存储过程 查询语句的流程控制
- SQL语句和存储过程查询语句的流程控制
- 《Java解惑》系列——02字符谜题——谜题20、21的感想
- java常用类之SimpleCalendar类
- 公交线路查询
- HDU-2492-Ping pong(树状数组)
- Redis 1
- 通过存储过程执行通过DBLINK的查询语句失败-单个语句成功--ORA-00604
- 如何利用开发者账号重签ipa文件,并部署到IOS设备做测试
- MyEclipse创建ssh工程
- 关于用特殊号打印字的代码,我不是吃饱了撑着的。。。
- hdu 2276 Kiki & Little Kiki 2(矩阵优化递推)
- 九宫格
- 我的第一个andriod应用
- nyoj 61 传纸条
- java常用类之Calendar类