PLS-00352和PLS-00201通过DB Link

时间:2016-09-14 16:09:15

标签: database oracle plsql dblink

我有一个Oracle数据库12c Release 12.1.0.1.0 - 64位生产数据库。我尝试通过公共dblink(DEVICE_201)调用Oracle数据库10g快捷版10.2.0.1.0版上的过程 - 产品数据库。当我尝试通话时,我得到了 -

从命令行中的第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"
  2.        
     

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

这就是我从本地db调用它的方式:

BEGIN
proc_test@DEVICE_201;
END;

我们在其他位置使用此配置,并且我已在其中一个位置运行此测试代码。我认为这归结为权限问题,但据我所知,此位置的权限与其他人的权限相同。

1 个答案:

答案 0 :(得分:1)

在12c和10g(10.2.0.1.0)之间使用db link时,我遇到了同样的错误。然后找到了这篇文章: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

执行存储过程