1. 查询已有dblink
select owner,object_name from dba_objects where object_type='DATABASE LINK';
select * from dba_db_links;
2. 创建dblink
前提: 创建dblink的用户有对应的数据库权限,create public database link 或者create database link
如果没有这个权限,可以使用如下语句授权:
grant create public database link,create database link to myAccount;
创建:
create public database link link_name connect to db_user identified by user_passwd using '(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=ora12c))
)';
如果在create之后不加public,则创建的dblink就不是公共的,就只有创建者可以使用了.
如何确定数据库的servicename?
show parameter[s] service_names;
或
select name,value from v$parameter where name='service_names';
3. 创建和使用dblink示例:
A的servicename为liusdb1;B的servicename为liusdb2.
B上有一个可以查询所有表的用户:liusx
A上创建一个dblink lius_link,用liusx用户作为桥梁:
create public database link lius_link connect to liusx identified by lius_password using '(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.111)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=liusdb2))
)';
使用:
select * from v$parameter@lius_link;
4.删除dblink
和创建相似,用户有createpublic database link 或者create database link 权限.
drop public database link dblinkname;
参考:https://blog.csdn.net/qq_30553235/article/details/78688352