在oracle中创建db link 已经确定创建成功了。在创建视图时为啥还会报不能找到db link呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在oracle中创建db link 已经确定创建成功了。在创建视图时为啥还会报不能找到db link呢?相关的知识,希望对你有一定的参考价值。

create or replace view iccard_zbdah as
select "PHYSICAL_CARD_NO","ZBDAH" from ic_card_zbdah@GDGAJJ_ELT
ORA-02019: connection description for remote database not found
dblink的名称: ic_card_zbdah
谢谢解答。

创建DBLINK的时候并不会检查提供的数据库连接信息是否有效,只是验证语法。所以请检查你提供的数据库连接信息是否有效追问

create database link IC_CARD_ZBDAH
connect to GDGAJJ_DBLINK identified by GDGAJJ_DBLINK
using 'ORCL';
这个有问题吗?

追答

恩。是有问题的。你提供的ORCL.是一个配置好的连接吧。但是这个地方是识别不出来的。不需要把ORCL的连接字符串都取出来。
create database link IC_CARD_ZBDAH
connect to GDGAJJ_DBLINK identified by GDGAJJ_DBLINK
using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = gostop-PC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)'

具体的orcl的配置信息你可以到\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
下找到。
祝你好运
)

追问

还是不行。按照你的做法。
create database link IC_CARD_ZBDAH
connect to GDGAJJ_DBLINK identified by GDGAJJ_DBLINK
using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)';

追答

// 创建DBLINK
if(list.contains("LINK_CURRATE.REGRESS.RDBMS.DEV.US.ORACLE.COM"))
sql = "create database link LINK_CURRATE.REGRESS.RDBMS.DEV.US.ORACLE.COM "
// + props.getProperty("com.yss.link.gz.zt.name")
+ " connect to "
+ dbBase.getUsername()
+ " identified by "
+ dbBase.getPassword()
+ " using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)"
+ " (HOST = " +DbBase.dMan.getZtIp()
// + props.getProperty("com.yss.link.gz.zt.ip")
+ " )(PORT = "+DbBase.dMan.getZtdk()
// + props.getProperty("com.yss.link.gz.zt.port")
+ " )))(CONNECT_DATA =(SERVICE_NAME ="+DbBase.dMan.getZtDbName()
// + props.getProperty("com.yss.link.zt.libraryname")
+ " )))'";

// if (!util.dblinkIfExists(props
// .getProperty("com.yss.link.gz.zt.name"), dbBaseGZ))
try
if(util.dblinkIfExists("LINK_CURRATE.REGRESS.RDBMS.DEV.US.ORACLE.COM", dbBaseGZ))
dbBaseGZ.executeSql("drop database link LINK_CURRATE.REGRESS.RDBMS.DEV.US.ORACLE.COM");
dbBaseGZ.executeSql(sql);
massge+="LINK_CURRATE.REGRESS.RDBMS.DEV.US.ORACLE.COM:更新成功;";
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();
massge+="LINK_CURRATE.REGRESS.RDBMS.DEV.US.ORACLE.COM:更新失败";
return massge+"\f\f\f"+"初始化后台估值库出错";

这是我系统里面的创建DBLINK的代码,看能否有用;
确保你提供的用户名和密码,可以登录被连接的数据库

参考技术A 直接执行语句试试
select "PHYSICAL_CARD_NO","ZBDAH" from ic_card_zbdah@GDGAJJ_ELT
要是可以了再建视图追问

不行,这是怎么回事呢!还是报ORA-02019: connection description for remote database not found 这个错误。

使用 DBMS_JOB 在 Oracle 中创建作业

【中文标题】使用 DBMS_JOB 在 Oracle 中创建作业【英文标题】:Creating a Job in Oracle using DBMS_JOB 【发布时间】:2012-05-10 16:29:15 【问题描述】:

我正在尝试创建一个将在每个圣诞节运行特定程序的工作。这是我已经走了多远:

declare
   jobno number;
begin
   dbms_job.submit( jobno,
                   'BEGIN GiveCoins; END;',
                    to_date('12/25', 'MM/DD'),
                    'sysdate + ?');
end;
/

但是我似乎无法找到一种简单的方法来将时间间隔更改为每年,并且通常对如何进行此操作感到很困惑,非常感谢任何帮助

【问题讨论】:

不能添加到ALL_JOBS表吗? @gdoron:如果您有 sysdba 角色,您也许可以这样做,但您不应该这样做。您永远不应该直接修改系统目录。 @Allan。谢谢你的提示。 (现在我明白为什么我很久以前尝试这样做时出错了...... 两天前)你如何删除工作? @Allan。不应该直接更改ALL_JOBS 的原因是什么?它会导致什么? @gdoron:您不要更改它,因为它是数据字典的一部分。引用 Oracle 的话,“更改或操作数据字典表中的数据可能会对数据库的操作产生永久性的不利影响。”最明显的后果是您几乎肯定会取消整个实例获得 Oracle 支持的资格。除此之外,我不知道会发生什么,也没有特别想知道的动力。 【参考方案1】:

你会想要类似的东西

declare
   jobno number;
begin
   dbms_job.submit( jobno,
                   'BEGIN GiveCoins; END;',
                    to_date('12/25/2012', 'MM/DD/YYYY'),
                    'add_months(trunc(sysdate),12)');
end;
/

这将在 2012 年圣诞节午夜第一次运行该作业,之后每 12 个月运行一次。

【讨论】:

以上是关于在oracle中创建db link 已经确定创建成功了。在创建视图时为啥还会报不能找到db link呢?的主要内容,如果未能解决你的问题,请参考以下文章

在pl/sql中创建的表空间超出了db_fills的最大值?怎么回事?

在 MS Access DB 中创建临时表

需要在 Oracle 11g DB 中创建财政年度条目

db link

db2中创建联合主键,发现一个字段可以为null,但是db2不让创建

创建ORACLE DB LINK