通過儲存過程執行通過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.
相關文章
- GaussDB SQL查詢語句執行過程解析SQL
- MySQL 查詢語句執行過程淺析MySql
- MySQL儲存過程語句及呼叫MySql儲存過程
- [求指導] 如何通過程式碼分析一個查詢語句的執行效率
- mysql執行sql語句過程MySql
- golang通過mysql語句實現分頁查詢GolangMySql
- MySQL系列之一條SQL查詢語句的執行過程MySql
- 深入解讀MySQL InnoDB儲存引擎Update語句執行過程MySql儲存引擎
- PostgreSQL的insert語句執行過程分析SQL
- 一條sql語句的執行過程SQL
- PostgreSQL獲取建表語句儲存過程SQL儲存過程
- EF中使用SQL語句或儲存過程SQL儲存過程
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- mysql中一條查詢語句的執行全過程是怎樣的?MySql
- [zebra原始碼]分片語句ShardPreparedStatement執行過程原始碼
- Oracle資料庫SQL語句執行過程Oracle資料庫SQL
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- 金倉資料庫KingbaseES儲存過程 RETURN語句資料庫儲存過程
- MySQL查詢語句過程和EXPLAIN語句的基本概念及其最佳化MySqlAI
- 如何查詢一個儲存過程是否在執行儲存過程
- Mysql儲存過程 變數,條件,迴圈語句用法MySql儲存過程變數
- MySQL探祕(二):SQL語句執行過程詳解MySql
- Mybatis原始碼分析(五)探究SQL語句的執行過程MyBatis原始碼SQL
- MySQL_通過binlog檢視原始SQL語句MySql
- 通過實體類生成 mysql 的建表語句MySql
- python中try語句的工作過程Python
- golang透過mysql語句實現分頁查詢GolangMySql
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- 一條查詢語句的執行流程
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- 分析執行計劃優化SQLSQL語句處理的過程(轉)優化SQL
- MySQL全文索引原始碼剖析之Insert語句執行過程MySql索引原始碼
- PostgreSQL 原始碼解讀(15)- Insert語句(執行過程跟蹤)SQL原始碼
- 利用dbms_profile定位儲存過程或者package裡低效率語句儲存過程Package
- [20191101]通過zsh計算sql語句的sql_id.txtSQL
- [20191011]通過bash計算sql語句的sql_id.txtSQL
- 分享一個查詢某個使用者過去一段時間內執行的SQL語句。SQL
- MySQL的簡單查詢語句MySql
- SQL 查詢語句的執行順序解析SQL