一、db_link 的概述
db_link是定义一个数据库到另一个数据库的路径的对象。db_link允许你查询远程表及执行远程的程序。
二、查看db_link (必须在DBA权限下查看)
select owner,object_name from dba_objects where object_type='DATABASE LINK';
select * from dba_db_links;
三、给用户配置创建dblink的权限
--给用户配置创建公共DB link(整个数据库中所有的用户下都能够使用)和创建私有DB link(只有创建DB link的用户能够使用) 的权限
grant create public database link,create database link to scott(用户名);
四、创建DB link
创建DB link 的方式有两种:
1)创建 DB link 的第一种方式是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库
create (public)database link link_liu connect to HY_A0008282 identified by HY_A0008282 using 'AWS';
其中link_liu 是创建的dblink名字,AWS是远程数据库的实例名,HY_A0008282/HY_A0008282123 是登录到远程数据库的用户/密码
2)创建 dblink的第二种方式是在本地数据库tnsnames.ora文件中没有配置要远程访问的数据库
create public database link link_q connect to HY_A0008282 identified by HY_A0008282123 using ' (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = orcl******naws.com.cn)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)';
第二种方式是把tnsnames.ora中的配置信息直接放到了dblink语句后面
四、使用dblink
select * from dm_custbd_value_set@link_q;
select * from HY_A0008282.dm_custbd_value_set@link_q;
五、删除的blink
--注意:用户要有create public database link 或者 create database link的权限
drop public database link LINK_AWS;
六、dblink与global_name的关系
创建dblink时要看本地的global_name是否为true,如果该参数为true,那么dblink的名字一定要和被访问数据库实例名一致,否则会报错。