Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Oracle11g DB Link ampersand替换-ORA-02019:未找到远程数据库的连接说明_Oracle11g_Ampersand - Fatal编程技术网

Oracle11g DB Link ampersand替换-ORA-02019:未找到远程数据库的连接说明

Oracle11g DB Link ampersand替换-ORA-02019:未找到远程数据库的连接说明,oracle11g,ampersand,Oracle11g,Ampersand,我有一个安装脚本,在这个脚本中,我试图基于远程数据库中的表创建多个视图。脚本将在多个数据库上执行,每个数据库都有自己的远程数据库。我的目标不是创建多个版本的脚本,而是在安装期间将remote db link作为提示的输入参数。但是,当我执行安装脚本时,第一个视图在ORA-02019中失败,而其余视图成功创建 样本测试版本: 安装.sql Set serveroutput on SET VERIFY OFF Alter Session Set current_schema = TEST; SE

我有一个安装脚本,在这个脚本中,我试图基于远程数据库中的表创建多个视图。脚本将在多个数据库上执行,每个数据库都有自己的远程数据库。我的目标不是创建多个版本的脚本,而是在安装期间将remote db link作为提示的输入参数。但是,当我执行安装脚本时,第一个视图在ORA-02019中失败,而其余视图成功创建

样本测试版本:

安装.sql

Set serveroutput on

SET VERIFY OFF
Alter Session Set current_schema =  TEST;
SET VERIFY ON

DEFINE DB_LINK = &&db_link

PROMP Install started ...

@./SCRIPTS/views.sql

PROMP Install ended

quit
--View1
Create or replace View tmp_cards as Select nvl((select count(*) from auths@&db_link where  cardid = t.id),0) cnt_auths,t.* From Cards@&db_link t ;

--View2
Create or replace View tmp_Auth as Select * From auths@&db_link;
@./SCRIPTS/views.sql

Set serveroutput on

SET VERIFY OFF
Alter Session Set current_schema =  TEST;
SET VERIFY ON

DEFINE DB_LINK = &&db_link

PROMP Install started ...

@./SCRIPTS/views.sql

PROMP Install ended

quit
--View1
Create or replace View tmp_cards as Select nvl((select count(*) from auths@&db_link where  cardid = t.id),0) cnt_auths,t.* From Cards@&db_link t ;

--View2
Create or replace View tmp_Auth as Select * From auths@&db_link;
安装日志

IMPLUSER@db01 SQL>@install.sql

Session altered.

Enter value for db_link: db02
Install started ...
old   1: Create or replace View tmp_cards as Select nvl((select count(*) from auths@&db_link where  cardid = t.id),0) cnt_auths,t.* From Cards@&db_link t
new   1: Create or replace View tmp_cards as Select nvl((select count(*) from auths@db02 where  cardid = t.id),0) cnt_auths,t.* From Cards@db02 t
Create or replace View tmp_cards as Select nvl((select count(*) from auths@db02 where  cardid = t.id),0) cnt_auths,t.* From Cards@db02 t
                                                                                                                                                            *
ERROR at line 1:
ORA-02019: connection description for remote database not found


old   1: Create or replace View tmp_Auth as Select * From auths@&db_link
new   1: Create or replace View tmp_Auth as Select * From auths@db02

View created.

Install ended
如果我在PL/SQL中通过命令窗口直接创建视图,那么第一个视图将成功创建

SQL> Create or replace View tmp_cards as Select nvl((select count(*) from auths@db02 where  I002_NUMBER = t.cardnumber),0) cnt_auths,t.* From Cards@db02 t;
View created

SQL> 

我错过了什么

无法通过SQL*Plus在11.2.0.4中复制。这就是所有涉及的代码吗?失败的create view语句和正常工作的create view语句之间没有发生任何其他情况?views.sql的示例版本与原始文件之间的唯一区别在于,我在视图之间有一些注释。我不认为这些是相关的。更新原始帖子以更准确地反映原始脚本。顺便说一句,对于您的第一个视图,我将使用左连接而不是子查询,但是您需要显式列出cards列-这比使用
*
要好。也许值得一试,看看它的行为是否相同?是的,好吧,这些评论并不重要,但在运行此程序时,我已经评论了非常重要的部分,
alter session
。这似乎是预期的行为,请参阅MOS文档ID 793693.1;但这并不能解释为什么随后的视图创建会起作用。另请参阅doc、2086082.1、bug 20606216和其他;而且查询没有看到远端存在什么。根据MOS中的“预期行为”注释,我很确定您的第二个
创建视图
也应该失败,尽管bug 5358967可能建议它现在仍然可以工作。从MOS来看,有很多类似的东西,包括11gR2。我认为对于查询连接两个远程表(第二个没有)的任何视图都是失败的;其中一个可以工作(即使独立查询不能!)。我认为您需要为此提出服务请求。不能通过SQL*Plus在11.2.0.4中复制。这就是所有涉及的代码吗?失败的create view语句和正常工作的create view语句之间没有发生任何其他情况?views.sql的示例版本与原始文件之间的唯一区别在于,我在视图之间有一些注释。我不认为这些是相关的。更新原始帖子以更准确地反映原始脚本。顺便说一句,对于您的第一个视图,我将使用左连接而不是子查询,但是您需要显式列出cards列-这比使用
*
要好。也许值得一试,看看它的行为是否相同?是的,好吧,这些评论并不重要,但在运行此程序时,我已经评论了非常重要的部分,
alter session
。这似乎是预期的行为,请参阅MOS文档ID 793693.1;但这并不能解释为什么随后的视图创建会起作用。另请参阅doc、2086082.1、bug 20606216和其他;而且查询没有看到远端存在什么。根据MOS中的“预期行为”注释,我很确定您的第二个
创建视图
也应该失败,尽管bug 5358967可能建议它现在仍然可以工作。从MOS来看,有很多类似的东西,包括11gR2。我认为对于查询连接两个远程表(第二个没有)的任何视图都是失败的;其中一个可以工作(即使独立查询不能!)。我认为您需要为此提出服务请求。