当用户要在本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的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登录执行创建同义词语句,成功!
oracle创建dblink
最新推荐文章于 2022-10-11 17:02:16 发布