通過儲存過程執行通過DBLINK的查詢語句失敗-單個語句成功--ORA-00604
客戶遇到個問題,描述如下:--環境是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.
相關文章
- 通過SQL語句提取儲存過程中的內容SQL儲存過程
- 通過flashback_transaction_query查詢最近執行過的所有DDL語句
- MySQL 查詢語句執行過程淺析MySql
- GaussDB SQL查詢語句執行過程解析SQL
- 在.NET中用儲存過程執行SQL語句儲存過程SQL
- C++通過occi執行select語句、儲存過程、函式,取cursor值示例C++儲存過程函式
- 15個常用sql語句 分支 迴圈 子查詢 儲存過程 事務 常用函式 sql語句執行過程(轉載備用)SQL儲存過程函式
- 通過dblink獲取遠端DDL語句
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- MySQL儲存過程語句及呼叫MySql儲存過程
- [求指導] 如何通過程式碼分析一個查詢語句的執行效率
- Oracle 儲存過程中的DDL語句Oracle儲存過程
- ORACLE 查詢語句處理過程(Oracle
- mysql執行sql語句過程MySql
- golang通過mysql語句實現分頁查詢GolangMySql
- CoreData執行過程的sql語句SQL
- 剖析SQL語句的執行過程SQL
- Oracle SQL 語句的執行過程OracleSQL
- 小覷資料庫(SqlServer)查詢語句執行過程資料庫SQLServer
- MySQL系列之一條SQL查詢語句的執行過程MySql
- MySQL SQL語句查詢執行過程的四個階段介紹MySql
- 查詢Oracle正在執行和執行過的SQL語句OracleSQL
- oracle 儲存過程以及plsql語句塊Oracle儲存過程SQL
- 深入解讀MySQL InnoDB儲存引擎Update語句執行過程MySql儲存引擎
- 通過sql語句分析足彩SQL
- SQL語句執行過程詳解SQL
- sql語句執行過程小結SQL
- 一條sql語句的執行過程SQL
- 淺談SQL語句的執行過程SQL
- 理解oracle執行sql語句的過程OracleSQL
- PostgreSQL獲取建表語句儲存過程SQL儲存過程
- EF中使用SQL語句或儲存過程SQL儲存過程
- Entity Framework Code First執行SQL語句、檢視及儲存過程FrameworkSQL儲存過程
- php通過陣列存取mysql查詢語句的返回值PHP陣列MySql
- 10_SQL語句執行過程剖析SQL
- 通過日誌檢視mysql正在執行的SQL語句MySql
- PostgreSQL的insert語句執行過程分析SQL
- 儲存過程 與 SQL Server語句大比拼儲存過程SQLServer