Oracle的数据库链路(dbLink)是一种允许在两个不同的数据库实例之间进行通信和数据交换的功能。它可以让你在一个数据库中访问另一个数据库的对象和数据,就像它们属于同一个数据库一样。
创建一个link:
CREATE public DATABASE LINK link_scott
CONNECT TO scott IDENTIFIED BY "tiger"
USING '192.168.1.101/orcl';
代表创建一个公共的数据库链路,名称为link_scott,连接指向orcl实例下面的scott用户,tiger为scott用户的密码。192.168.1.101为orcl实例的地址。
创建完成后,可以通过下面语句查询scott用户的表emp:
SELECT * FROM emp @link_scott;
如果觉得这样写比较麻烦,可以创建一个同义词,简化查询语句:
create synonym emp for emp @link_scott;
同义词创建完成后,查询语句可以写为:
SELECT * FROM emp;
dblink使用场景,一般用于两个不同数据库之间,为了能访问其他数据库用户的数据。为另外一个数据库用户创建一个数据库链接。
如果是同一个数据库之间不同用户的数据库对象访问,则使用赋权的方式,例如同一个数据库中,test1用户想访问scott用户的表emp,则操作如下:
1.将scott用户中emp表的查询权限给test1用户(sys用户操作)
grant select on scott.emp to test1;
2.test1用户查询emp表(test1用户操作)
SELECT * FROM scott.emp;
如果要简化查询语句的写法,则可以创建同义词(sys用户操作,也可以赋权给test1,语法为GRANT CREATE SYNONYM TO TEST1;)
create synonym test1.emp for scott.emp;
然后再查询emp表
SELECT * FROM emp;
关于dblink参考链接:
https://blog.csdn.net/newbie158/article/details/131070398
https://www.lmlphp.com/user/57840/article/item/2209152/