Database PLS-00352和PLS-00201通过DB链路
我有一个Oracle数据库Database PLS-00352和PLS-00201通过DB链路,database,oracle,plsql,dblink,Database,Oracle,Plsql,Dblink,我有一个Oracle数据库12c版本12.1.0.1.0-64位生产数据库。我试图调用Oracle Database 10g Express Edition 10.2.0.1.0版上的一个过程-通过公共数据库链接(设备_201)的产品数据库。当我尝试打电话时,我得到- 从命令中的第1行开始时出错- BEGIN proc_test@DEVICE_201; END; 错误报告- ORA-06550:第2行第1列:PLS-00352:无法访问另一个 数据库'DEVICE_20
12c版本12.1.0.1.0
-64位生产数据库。我试图调用Oracle Database 10g Express Edition 10.2.0.1.0版上的一个过程-通过公共数据库链接(设备_201)的产品数据库。当我尝试打电话时,我得到-
从命令中的第1行开始时出错-
BEGIN
proc_test@DEVICE_201;
END;
错误报告-
ORA-06550:第2行第1列:PLS-00352:无法访问另一个
数据库'DEVICE_201'
ORA-06550:第2行第1列:PLS-00201:标识符
“PROC_TEST@DEVICE_201"必须申报,
ORA-06550:第2行第1列:PL/SQL:语句被忽略
CREATE TABLE "TEST"("TEST" VARCHAR2(200 BYTE))
-------------------------------------------
create or replace PROCEDURE PROC_TEST AS
BEGIN
INSERT INTO TEST (TEST) VALUES (SYSDATE);
COMMIT;
END PROC_TEST;
这是我在本地数据库中的称呼:
BEGIN
proc_test@DEVICE_201;
END;
我们在其他位置使用了此配置,我在其中一个位置运行了此测试代码。我认为这归结为权限问题,但就我所见,此位置的权限与其他位置的权限相同 在12c和10g(10.2.0.1.0)之间使用db链路时,我遇到了相同的错误。然后发现这篇文章:。有一句话:“对于11.1(或更高版本)和10.2之间的数据库链接连接,10g端必须在10.2.0.2(或更高版本)才能在这些版本之间使用PLSQL。有关更多详细信息,请参阅注释:4511371.8。”
因此,我将10g升级到10.2.0.5.0,并能够通过dblink执行存储过程在10XE上调用存储过程时出现错误。这对其他10XE数据库有效吗?您是否能够从运行
select*fromdual@device_201;代码>没有问题?我正在仔细检查数据库版本问题。是的,我可以从dual@device_201; 没有issue@kevinsky我设置了另一个环境,从12c调用10xeproc。我也犯了同样的错误。我开始觉得这可能是一个bug。你有关于那个bug的更多信息吗。我的搜索没有发现错误。@user6656451我安装了一个10 XE作为Oracle 8i和Oracle 11g之间的桥梁。我发现我无法通过数据库链接从11调用10上存储的进程。这是几年前的事了,但我相信这是一个无法修补的bug,因为很抱歉评论太晚了:我有四个数据库DB-1、DB-2、DB3和DB-4。DB-4没有直接连接到DB-1,所以我使用DB链接和同义词的组合。在DB-3之前,一切正常,但在DB-4时则不然。我在DB-4得到PLS-00352。我所有的数据库都是Oracle 11gR2:11.2.0.4.0