yangtingkun
===========================================================
通过数据库链访问当前库
===========================================================

一般情况下,不会有这种需求的产生,但是有时候可能确实会用到这种方式,比如在分布式系统中,访问所有对象都通过数据库链访问,从而屏蔽用户当前的位置。


如果直接建立和GLOBAL_NAME具有相同名称的数据库链会报错。

SQL> CONN YANGTK/YANGTK@DICSYS
已连接。
SQL> SELECT * FROM GLOBAL_NAME;

GLOBAL_NAME
----------------------------------------------------
DICSYS.YANGTINGKUN

SQL> SELECT * FROM DBA_DB_LINKS;

未选定行

SQL> CREATE DATABASE LINK DICSYS.YANGTINGKUN CONNECT TO YANGTK IDENTIFIED BY YANGTK USING 'DICSYS';
CREATE DATABASE LINK DICSYS.YANGTINGKUN CONNECT TO YANGTK IDENTIFIED BY YANGTK USING 'DICSYS'
*
ERROR 位于第 1 行:
ORA-02082: 回送数据库链接必须具有连结限定词

必须在数据库链后面添加连结限定词,如下:

SQL> CREATE DATABASE LINK DICSYS.YANGTINGKUN@DICSYS
2 CONNECT TO YANGTK IDENTIFIED BY YANGTK USING 'DICSYS';

数据库链接已创建。

SQL> SELECT COUNT(*) FROM EMP;

COUNT(*)
----------
12

SQL> SELECT COUNT(*) FROM EMP@DICSYS.YANGTINGKUN@DICSYS;

COUNT(*)
----------
12

在测试过程中,发现一个奇怪的现象,就是在表名的后面直接跟当前数据库的全局名也是可以的,即使系统中没有创建任何数据库链。

SQL> SELECT COUNT(*) FROM EMP@DICSYS.YANGTINGKUN;

COUNT(*)
----------
12

虽然从道理上很容易理解,但是这种写法我以前还真没有碰到过,在我的印象中,文档上似乎也没有相应的记载。

yangtingkun 发表于:2006.01.13 23:34 ::分类: ( ORACLE ) ::阅读:(63673次) :: 评论 (4)
[回复]

在测试过程中,发现一个奇怪的现象,就是在表名的后面直接跟当前数据库的全局名也是可以的,即使系统中没有创建任何数据库链。

SQL> SELECT COUNT(*) FROM EMP@DICSYS.YANGTINGKUN;

COUNT(*)
----------
12

--------------------------------------------------
我们这里一直就是这么使用啊

fsm 评论于: 2006.02.23 10:33
[回复]

你们一直这么用吗?
访问本地数据库也加数据库链名?

yangtingkun 评论于: 2006.02.23 13:39
re: 通过数据库链访问当前库 [回复]

在测试过程中,发现一个奇怪的现象,就是在表名的后面直接跟当前数据库的全局名也是可以的,即使系统中没有创建任何数据库链。

嘻嘻嘻,如果你不建那个数据库链, SELECT COUNT(*) FROM EMP@DICSYS.YANGTINGKUN;这个一样可以的,它用的是本来数据库就有的全局名,它和DICSYS.YANGTINGKUN@DICSYS是不一样的,后面这个是有用户身份认证的,你用后面这个的话,可以访问的就是那个用户的资源,不信你以用@DICSYS.YANGTINGKUN试试访问YANGTK这个用户的表,当然,你的当前身份不能是YANGTK,会提示你表或视图不存在;而你用@DICSYS.YANGTINGKUN@DICSYS的话就可以访问。

hongyi 评论于: 2006.10.20 14:42
re: 通过数据库链访问当前库 [回复]

其实道理很容易理解,Oracle允许把全局数据库名作为对象的后缀进行分析,我奇怪的时,CONCEPT文档并没有提到过这种情况

yangtingkun 评论于: 2006.10.20 16:00

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)

 authimage


切换风格
新闻聚合
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
最多评论文章...
博客统计...
Blog信息
网站链接...