PLS-00352 和 PLS-00201 超过 DB Link
PLS-00352 AND PLS-00201 Over DB Link
我有一个 Oracle 数据库 12c Release 12.1.0.1.0
- 64 位生产数据库。我正在尝试通过 public dblink (DEVICE_201) 在 Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product database 上调用过程。当我尝试打电话时,我得到 -
错误从第 1 行开始 - 命令 -
BEGIN
proc_test@DEVICE_201;
END;
错误报告 -
ORA-06550: line 2, column 1: PLS-00352: Unable to access another
database 'DEVICE_201'
ORA-06550: line 2, column 1: PLS-00201: identifier
'PROC_TEST@DEVICE_201' must be declared
ORA-06550: line 2, column 1: PL/SQL: Statement ignored
- 00000 - "line %s, column %s:\n%s"
*原因:通常是PL/SQL编译错误。
*行动:
以下是远程数据库上的 table 和过程定义:
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 link 时遇到同样的错误。然后找到这篇文章:https://82star.wordpress.com/2011/09/06/clientserver-interoperability-support-id-207303-1/。有一行:"For database link connections between 11.1 (or higher) and 10.2 the 10g end MUST be at 10.2.0.2 (or higher) in order to use PLSQL between those versions. See Note:4511371.8 for more details."
所以我将 10g 升级到 10.2.0.5.0 并且能够通过 dblink
执行存储过程
我有一个 Oracle 数据库 12c Release 12.1.0.1.0
- 64 位生产数据库。我正在尝试通过 public dblink (DEVICE_201) 在 Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product database 上调用过程。当我尝试打电话时,我得到 -
错误从第 1 行开始 - 命令 -
BEGIN
proc_test@DEVICE_201;
END;
错误报告 -
ORA-06550: line 2, column 1: PLS-00352: Unable to access another database 'DEVICE_201'
ORA-06550: line 2, column 1: PLS-00201: identifier 'PROC_TEST@DEVICE_201' must be declared
ORA-06550: line 2, column 1: PL/SQL: Statement ignored
- 00000 - "line %s, column %s:\n%s"
*原因:通常是PL/SQL编译错误。 *行动:
以下是远程数据库上的 table 和过程定义:
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 link 时遇到同样的错误。然后找到这篇文章:https://82star.wordpress.com/2011/09/06/clientserver-interoperability-support-id-207303-1/。有一行:"For database link connections between 11.1 (or higher) and 10.2 the 10g end MUST be at 10.2.0.2 (or higher) in order to use PLSQL between those versions. See Note:4511371.8 for more details." 所以我将 10g 升级到 10.2.0.5.0 并且能够通过 dblink
执行存储过程