11.2通過資料庫鏈呼叫10.2過程報錯
測試中無意發現了這個bug,在11.2資料庫通過資料庫鏈,執行10.2.0.1上的過程,結果出現ORA-06553: PLS-801: internal error [55916]的錯誤。
錯誤可以通過下面的例子重現:
-bash-3.2$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Sep 12 23:12:47 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 – Production
SQL> create user test identified by test default tablespace users;
User created.
SQL> show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names
string XE
SQL> grant connect, resource, dba to test;
Grant succeeded.
SQL> conn test/test
Connected.
SQL> create procedure p1 as
2
begin
3
null;
4
end;
5
/
Procedure created.
首先在10.2.0.1環境中建立一個儲存過程。
SQL> create database link xe connect to test identified by test using '192.168.0.20:1522/XE';
Database link created.
SQL> exec p1@xe
BEGIN p1@xe; END;
*
ERROR at line 1:
ORA-04052: error occurred when looking up remote object TEST.P1@XE
ORA-00604: error occurred at recursive SQL level 1
ORA-06544: PL/SQL: internal error, arguments: [55916], [], [], [], [], [], [],
[]
ORA-06553: PLS-801: internal error [55916]
ORA-02063: preceding 2 lines from XE
SQL> select * from dual@xe;
D
-
X
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
PL/SQL Release 11.2.0.2.0 - Production
CORE 11.2.0.2.0 Production
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 – Production
SQL> select * from v$version@xe;
BANNER
----------------------------------------------------------------
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
在11.2中呼叫這個儲存過程報錯,嘗試使用同義詞或動態SQL,都無法繞過這個錯誤:
SQL> create synonym s1 for p1@xe;
Synonym created.
SQL> exec s1
BEGIN s1; END;
*
ERROR at line 1:
ORA-04052: error occurred when looking up remote object TEST.P1@XE
ORA-00604: error occurred at recursive SQL level 1
ORA-06544: PL/SQL: internal error, arguments: [55916], [], [], [], [], [], [],
[]
ORA-06553: PLS-801: internal error [55916]
ORA-02063: preceding 2 lines from XE
SQL> begin
2
execute immediate 'begin p1@xe; end;';
3
end;
4
/
begin
*
ERROR at line 1:
ORA-04052: error occurred when looking up remote object TEST.P1@XE
ORA-00604: error occurred at recursive SQL level 2
ORA-06544: PL/SQL: internal error, arguments: [55916], [], [], [], [], [], [],
[]
ORA-06553: PLS-801: internal error [55916]
ORA-02063: preceding 2 lines from XE
ORA-06512: at line 2
在metalink文件Bug 4511371中描述了這個問題:ORA-6544 / ORA-4052 using PLSQL between 10g and 11g。根據文件描述,在10.2.0.1中通過資料庫鏈訪問11.2的過程也會出現同樣的錯誤,而解決方法除了升級到10.2.0.2及以上版本外,沒有其他的解決方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-707386/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過EFCore呼叫GBase8s資料庫儲存過程資料庫儲存過程
- 通過11.2監聽連線9.2資料庫報錯ORA-12537資料庫
- 儲存過程呼叫不同資料庫的資料儲存過程資料庫
- jdbc使用call呼叫儲存過程報錯JDBC儲存過程
- 通過資料庫鏈匯出遇到ORA-39126錯誤資料庫
- Sql Server 資料庫中呼叫dll檔案的過程SQLServer資料庫
- 通過資料庫鏈執行DML所需許可權資料庫
- 通過資料庫鏈執行TEXT操作的小bug資料庫
- 資料庫恢復過程資料庫
- 資料庫啟動過程資料庫
- 資料庫儲存過程資料庫儲存過程
- 關於儲存過程通過DBLINK 訪問只讀資料庫報錯 PL/SQL: ORA-04063:的說明儲存過程資料庫SQL
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- 通過SQL儲存過程刪除過期的資料庫Bak備份檔案SQL儲存過程資料庫
- job呼叫過程報錯 ORA-00942: table or view does not existView
- 資料庫安裝過程報錯:at.java.awt.X11GraphicsEnvironment解決之道資料庫Java
- sql server資料庫附加錯誤的解決過程SQLServer資料庫
- MySql資料庫——儲存過程MySql資料庫儲存過程
- 手動建立資料庫過程資料庫
- Oracle資料庫啟動過程Oracle資料庫
- DUL恢復資料庫過程資料庫
- standby 資料庫的建立過程資料庫
- 資料庫的連線過程資料庫
- 通過資料庫檔案還原資料庫資料庫
- 2.3 通過DBCA建立資料庫資料庫
- 通過duplicat恢復資料庫資料庫
- java程式通過swing呼叫javaFx更新 資料Java
- MySQL 5.6.26 通過frm & ibd 恢復資料過程MySql
- MySQL 建立儲存過程報錯MySql儲存過程
- 通過iframe呼叫天氣預報&jsonpJSON
- 【資料庫資料恢復】透過資料頁恢復Sql Server資料庫資料的過程資料庫資料恢復SQLServer
- 資料庫設計:儲存過程資料庫儲存過程
- Oracle XE的資料庫建立過程Oracle資料庫
- Standby資料庫簡單建立過程資料庫
- oracle資料庫的關閉過程Oracle資料庫
- 手工建立oracle資料庫的過程Oracle資料庫
- oracle資料庫停止方法及過程Oracle資料庫
- 通過oracle的指令碼研究其建庫過程Oracle指令碼