Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database PLS-00352和PLS-00201通过DB链路_Database_Oracle_Plsql_Dblink - Fatal编程技术网

Database PLS-00352和PLS-00201通过DB链路

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

我有一个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_201'

ORA-06550:第2行第1列:PLS-00201:标识符 “PROC_TEST@DEVICE_201"必须申报,

ORA-06550:第2行第1列:PL/SQL:语句被忽略

  • 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;
    

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

    在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