关于Oracle数据库dbLink的创建和使用详解

 更新时间:2023年08月03日 10:52:45   作者:梁萌  
这篇文章主要介绍了关于Oracle数据库dbLink的创建和使用详解,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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle rac模式下undo表空间爆满的解决方案

    Oracle rac模式下undo表空间爆满的解决方案

    Oracle数据库中的Undo表空间是用于存储事务回滚信息的特殊表空间,它记录了数据库中执行的所有未提交事务的历史信息,以便在需要时进行回滚或恢复操作,在本文中,我们将深入探讨Oracle rac模式下undo表空间爆满的解决方案,需要的朋友可以参考下
    2024-09-09
  • Oracle VM VirtualBox 虚拟机硬盘扩容

    Oracle VM VirtualBox 虚拟机硬盘扩容

    这篇文章主要介绍了Oracle VM VirtualBox 虚拟机硬盘扩容,VirtualBox中使用Ubuntu虚拟机中,出现了虚拟硬盘不够用的情况,我们可以采取下文方式进行扩容,需要的朋友可以参考一下
    2022-03-03
  • oracle中where 子句和having子句中的区别介绍

    oracle中where 子句和having子句中的区别介绍

    这篇文章主要介绍了在oracle中where 子句和having子句中的区别,本文通过sql语句给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • oracle多表简单查询实例代码

    oracle多表简单查询实例代码

    当查询的数据并不是来源一个表时,需要使用多表链接操作完成查询,下面这篇文章主要给大家介绍了关于oracle多表简单查询的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Oracle递归树形结构查询功能

    Oracle递归树形结构查询功能

    oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的。这篇文章给大家介绍了Oracle递归树形结构查询功能,需要的朋友参考下
    2019-09-09
  • 详解Sqlsugar调用Oracle的存储过程

    详解Sqlsugar调用Oracle的存储过程

    作者在使用Sqlsugar调用Oracle存储过程时遇到问题,通过添加NuGet包和Oracle驱动,解决了连接问题,并创建了一个测试存储过程来验证,关键点在于游标参数必须为空字符,而不是object或null,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • Oracle中 关于数据库存储过程和存储函数的使用

    Oracle中 关于数据库存储过程和存储函数的使用

    本篇文章,小编将为大家介绍,在Oracle中 关于数据库存储过程和存储函数的使用,有需要的朋友可以参考一下
    2013-04-04
  • 在Oracle实例关闭时如何修改spfile的参数详解

    在Oracle实例关闭时如何修改spfile的参数详解

    这篇文章主要给大家介绍了关于在Oracle实例关闭时如何修改spfile参数的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-07-07
  • Oracle集群 diagwait的问题记录

    Oracle集群 diagwait的问题记录

    这篇文章主要给大家介绍了关于Oracle集群diagwait的问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Oracle 生成未来三天的整点时间(步骤详解)

    Oracle 生成未来三天的整点时间(步骤详解)

    这篇文章主要介绍了Oracle 生成未来三天的整点时间,本文通过实例代码分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论