Oracle 跨数据库操作之连接方式DBLINK
背景:
本人在工作时遇到一个问题,需要跨数据库查询表格数据,带着疑问得到启发创建‘DBLINK‘,于是就进行了百度,看了很多资料,踩坑,把结论发出来,帮助大家少踩坑,走近路;
技术分析:
首先,DBLINK操作并不难,只是在数据库A创建链接数据库B的TNS,数据库B不需要创建,创建成功后需要用table@dblink才能查询得到数据库B的表;
步骤分析:
1.查询权限
确认你的账号是否有创建DBLINK的权限
select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
只要看到你的账号有数据,就证明你有权限;
CREATE PUBLIC DATABASE LINK:有’PBULIC’你创建的DBLINK,这个数据库所有的用户都能共享;
CREATE DATABASE LINK:你创建的DBLINK,只有创建的账户可以使用;
并且是否创建PUBLIC 的DBLINK 在创建时可从是否有’PUBLIC’看出;
2.创建DBLINK
create public database link ATS50GD connect to DB_ATS identified by DB_ATS
using '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.154)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=ATS50GDDS)))'
这里需要特别注意,中间不能有空格或者回车,不然会出现很多个‘???’
3.确认创建DBLINK成功
select * from dba_db_links;
有数据,且HOST无异样即OK;
4.调用DBLINK
select * from table@ATS50GDDS;
以上是我成功的经验分享,若有需要补充或者疑问的,可以留言;