谁帮我分析下这个sql

来源:百度知道 编辑:UC知道 时间:2024/07/02 10:52:30
select *
FROM
ICD.tbilllog03@LINKICD

from 表名这个是一个表。但是我在oracle所有表都找了个遍都找不到这个ICD.tbilllog03@LINKICD 这个表 。为什么呢?难道是@LINKICD 有问题?

这个是ORACLE的数据链接表达式。

ICD是构架或者用户名(每个用户都有一套构架,包含,表,视图等等)。
tbilllog03是表名,就是说是ICD这个用户下的一个表。
@LINKICD是链接表达式,@后面的LINKICD是数据链接名。

数据链接的建立方法是:

create public database link LINKICD <--这个就是链接名
connect to "xxx" <--这个是用来链接对方数据库的用户名
identified by "12345abcd" <--这个是链接密码
using 'LINKICD' <--这个是用来链接对方数据库的链接字符串(注意不是上面链接名,之所以写成一样的是因为我不知道你的链接TNS是多少),可以用TNS名,也可以用字符串直接描述,一般来说里面包含了对方的IP,端口,数据库SID。
注意:以上是一句SQL。

建立好以后就可以使用@符号,直接在本地库调用对方库的内容。

SELECT * FROM ICD.TBILLLOG03@LINKICD;
总的来说就是:返回LINKICD库里,ICD用户的TBILLLOG03表的所有列的所有行。

你可以:
SELECT * FROM ALL_TABLES@LINKICD WHERE OWNER = 'ICD';
来看看对方数据库里ICD这个用户下有没有这个表。

你也可以:
SELECT * FROM ALL_DB_LINKS;
看看自己数据库里面都有哪些数据链接,链接用户是什么,对方主机在哪儿。

oracle的表中是系统表明的啊!

@LINKICD已经表名,这是你DBLINK连接到另一个数据库了
并且tbilllog03已经对你授权
其实LINKICD就是你的一个用户
你在你本地的数据库里当然看不着这个表
查查有关DBLIN