您的位置:首页 > 数据库 > Oracle

oracle创建dblink

2016-04-07 11:05 483 查看
当用户要在本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

下面讲介绍如何在本地数据库中创建dblink。

1.在sys用户下,把CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK权限授予给你的用户

grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott;

2.登录scott用户,创建dblink

语法:

create public database link dblink名字

connect to 远程数据库登录用户名 identified by 远程数据库登录密码

using ‘远程数据库的实例名’;

a.本地数据库tnsnames.ora文件中有配置要访问的远程数据库

如:aaa =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = aaa)

)

)

则远程数据库的实例名可以直接填aaa即可。

如下:

create public database link A

connect to fhl identified by fhl

using ‘aaa’;

b.如果本地数据库tnsnames.ora文件中没有配置要访问的远程数据库

则创建dblink时,可以直接将a中aaa = 后面的内容直接写在远程数据库的实例名的地方。

如下:

create public database link A

connect to fhl identified by fhl

using ‘(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = aaa)

)

)’;

3.就可以直接查询fhl数据库中的表了,但是必须在表名后面加上@A

SELECT * FROM 表名@A

如果觉得这样很麻烦,可以创建 【表名@A】 的同义词,即取别名

create or replace synonym a for 表名@A;

执行时发现出错ORA-01031:权限不足

再次用sys dba用户登录给scott用户赋予创建同义词的权限

grant CREATE SYNONYM to scott;

再次用scott登录执行创建同义词语句,成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: