【问题标题】:PLS-00352 AND PLS-00201 Over DB LinkPLS-00352 和 PLS-00201 通过 DB 链接
【发布时间】:2017-01-22 12:51:29
【问题描述】:

我有一个 Oracle 数据库 12c Release 12.1.0.1.0 - 64 位生产数据库。我正在尝试在 Oracle Database 10g Express Edition Release 10.2.0.1.0 上调用一个过程 - 通过公共 dblink (DEVICE_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:语句被忽略

  1. 00000 - “第 %s 行,第 %s 列:\n%s”

*原因:通常是 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;

我们有这个配置在其他位置工作,我已经在其中一个地方运行了这个测试代码。我认为这归结为权限问题,但据我所知,此位置的权限与其他位置相同。

【问题讨论】:

  • 有一个关于在 10XE 上调用存储过程的错误。这适用于其他 10XE 数据库吗?
  • 你能顺利运行select * from dual@device_201;吗?
  • 我正在仔细检查数据库版本问题。是的,我可以运行 select * from dual@device_201;没有问题
  • @kevinsky 我设置了另一个环境,从 12c 调用 10XE proc。我犯了同样的错误。我开始认为这实际上可能是一个错误。你有关于那个错误的更多信息吗?我的搜索没有发现错误。
  • @user6656451 我安装了一个 10 XE 作为 Oracle 8i 和 Oracle 11g 之间的桥梁。我发现我无法通过数据库链接从 11 调用 10 上的存储过程。这是几年前的事了,但我相信这是一个不会修补的错误,因为它是 XE

标签: database oracle plsql dblink


【解决方案1】:

在 12c 和 10g(10.2.0.1.0) 之间使用 db 链接时,我遇到了同样的错误。然后找到这篇文章:https://82star.wordpress.com/2011/09/06/clientserver-interoperability-support-id-207303-1/。有一行:“对于 11.1(或更高版本)和 10.2 之间的数据库链接连接,10g 端必须位于 10.2.0.2(或更高版本),以便在这些版本之间使用 PLSQL。有关更多详细信息,请参见注释:4511371.8。” 于是我把10g升级到10.2.0.5.0,就可以通过dblink执行存储过程了

【讨论】:

  • 抱歉评论太晚了:我有四个数据库 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
猜你喜欢
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 2019-12-17
相关资源
最近更新 更多