关于Oracle数据库dbLink的创建和使用详解
dbLink
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;
注意:
创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。
这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。
如果创建全局dblink,必须使用systm或sys用户,在database前加public。
oracle dblink解决后台却出现锁
创建是很简单,但是在使用中后台却出现锁,查看这个锁的方法可以去console中看到或者查询数据库。
其实这个锁倒不是最让人心烦的,而是每次使用 dblink查询的时候,均会与远程数据库创建一个连接,dblink应该不会自动释放这个连接,如果是大量使用dblink查询,会造成web 项目的连接数不够,导致系统无法正常运行。
到此这篇关于关于Oracle数据库dbLink的创建和使用详解的文章就介绍到这了,更多相关Oracle的dbLink内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
深入浅析Orcale的nvl函数和SQL Server的isnull函数
这篇文章主要介绍了Orcale的nvl函数和SQL Server的isnull函数的相关资料,需要的朋友可以参考下2017-10-10Oracle数据库如何将DATE类型字段格式转换为YYYY/MM/DD
在Oracle数据库中,尽管DATE类型本身并不携带任何特定的格式信息,但通过TO_CHAR函数我们可以方便地将DATE类型的数据转换为我们所需要的格式,下面给大家介绍Oracle数据库如何将DATE类型字段格式转换为YYYY/MM/DD样式,感兴趣的朋友跟随小编一起看看吧2024-04-04
最新评论