关于dblink的使用

关于dblink的使用dblink DatabaseLink 数据库链接顾名思义就是数据库的链接 就像电话线一样 是一个通道 当我们要跨本地数据库 访问另外一个数据库表中的数据时 本地数据库中就必须要创建远程数据库的 dblink 通过 dblink 本地数据库可以像访问本地数据库一样访问远程数据库表中的数据 基本信息创建 dblink 语法 CREATE SHARED PUBLIC databaselink


前言

dblink(Database Link)数据库链接顾名思义就是数据库的链接 ,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

一、基本信息

  • 创建dblink语法
CREATE [SHARED] [PUBLIC] database link link_name   [CONNECT TO [user] [current_user] IDENTIFIED BY [password]    [AUTHENTICATED BY user IDENTIFIED BY password]    [USING 'connect_string'] 
  • 说明
  1. 权限:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私 有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。
  2. link : 当source端的参数(parameter)GLOBAL_NAMES=TRUE时,link名必须与远程数据库的全局数据库名global_name)相同;否则,可以任意命名。
  3. current_user使用该选项是为了创建global类型的dblink。在分布式体系中存在多个数据库的话。如果想要在每一个数据库中都可以使用同样的名字来访问数据库a,那在每个数据库中都要创建一个到数据库a的db_link,太麻烦了。所以有这个选项的话你只要创建一次。所有的数据库都可以使用这个db_link来访问了。要使用这个特性,必须有oracle nameserver或者ORACLE目录服务器。并且数据库a的参数global_names=true.具体我也没有创建过,没有这个环境。
  4. connectstring:连接字符串,tnsnames.ora中定义远程数据库的连接串,也可以在创建dblink的时候直接指定。
  5. username、password:远程数据库的用户名,口令。如果不指定,则使用当前的用户名和口令登录到远程数据库,当创建connected user类型的dblink时,需要如果采用数据字典验证,则需要两边数据库的用户名密码一致。

二、dblink的类型及拥有者

类型 Owner 描述
Private 创建dblink的user拥有该dblink 在本地数据库的特定的schema下建立的databaselink。只有建立该databaselink的schema的session能使用这个databaselink来访问远程的数据库。同时也只有Owner能删除它自己的privatedatabaselink。
Public Owner是PUBLIC. Public的databaselink是数据库级的,本地数据库中所有的拥有数据库访问权限的用户或pl/sql程序都能使用此databaselink来访问相应的远程数据库。
Global Owner是PUBLIC. Global的database link是网络级的,When an Oracle network uses a directory server, the directory server automatically create and manages global database links (as net service names) for every Oracle Database in the network. Users and PL/SQL subprograms in any database can use a global link to access objects in the corresponding remote database.Note: In earlier releases of Oracle Database, a global database link referred to a database link that was registered with an Oracle Names server. The use of an Oracle Names server has been deprecated. In this document, global database links refer to the use of net service names from the directory server.

三、dblink创建所需权限

Privilege Database Required For
CREATE DATABASE LINK Local Creation of a privase database link.
CREATE PUBLIC DATABASE LINK Local Creation of a public database link.
CREATE SESSION Remote Creation of any type of database link.

四、基本语法

创建dblink

  1. SYS CREATE DATABASE LINK NO
  2. SYS DROP PUBLIC DATABASE LINK NO
  3. SYS CREATE PUBLIC DATABASE LINK NO

可以看出在数据库中dblink有三种权限:

  1. CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了)
  2. CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用)
  3. DROP PUBLIC DATABASE LINK

在sys用户下,把CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASELINK权限授予给你的用户:

  • grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott;

然后以scott用户登录本地数据库

  1. 已经配置本地服务
    create public database link link_name connect to username identified by password using ‘connect_string’;

link_name是连接名字,可以自定义;

username是登陆数据库的用户名;

password是登陆数据库的用户密码;

connect_string是数据库连接字符串。

数据库连接字符串是当前客户端数据库中TNSNAMES.ORA文件里定义的别名名称.可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.

  1. 直接建立链接
    create database link link_name connect to username identified by password using ‘(DESCRIPTION = (ADDRESS_LIST = ) (CONNECT_DATA = (SERVICE_NAME = SSID) ) )’;

host=数据库的ip地址,service_name=数据库的ssid。

其实两种方法配置dblink是差不多的,个人感觉还是第二种方法比较好,这样不受本地服务的影响。

注意: 假如创建全局dblink,则必须使用systm或sys用户,在database前加public。

dblink查询

查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令:

dblink删除

DROP PUBLIC DATABASE LINK link_name;

dblink使用

五、实例

select * from dba_db_links //查看dblink链接信息 create public database link ORCLGX connect to dev identified by "" USING '192.168.101.117:1521/ORCLGX' //创建dblink链接 drop public database link ORCLGX //删除dblink链接 SELECT * from T_USER_ROLE@ORCLGX //查询语句 

资料来源:百度百科

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219836.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午9:47
下一篇 2026年3月17日 下午9:47


相关推荐

  • js获取url参数值的几种方法

    js获取url参数值的几种方法一 字符串分割分析法 functionrequ paras varurl location href varparaStrin url substring url indexOf 1 url length split amp varparaObj for i 0 j paraString i

    2025年8月1日
    7
  • UML工具到底哪个更好用

    UML工具到底哪个更好用经典如EnterpriseArchitect美丽如MagicDrawUML免费如StarUML容易上手visioRose商业PowerDesigner很早的UML建模工具用的广泛评价好,可以直接生成数据库脚本试试VS2010版,里面自带有UML开发工具EA文档生成RTF格式很好使,对UML的支持也比较好,正向/反向工程都还可以ROSE太大…

    2022年7月16日
    23
  • 两个Repeater嵌套使用「建议收藏」

    两个Repeater嵌套使用「建议收藏」在C#中有时存在着两个嵌套循环的存在,此时可以使用两个Repeater进行循环获取到。    例如:aspx页面中:                                                                                                          ‘alt=””>           

    2022年7月14日
    24
  • python中全局变量的定义及调用_python中定义全局变量

    python中全局变量的定义及调用_python中定义全局变量python 中怎么定义全局变量 python 中在哪些情况下必须使用 global 来声明全局变量 pythonclass 里面的全局变量问题 python 中的本地变量 localvariabl 和全局变量 gl 如题 python 中直接定义的变量就是本地变量 使用 global 定义的变量就是全局变量 比如 a 1b 1deffoo1 globalb 申明使用全局 ba 2 a 是

    2026年3月18日
    2
  • OpenClaw部署全教程[项目代码]

    OpenClaw部署全教程[项目代码]

    2026年3月13日
    2
  • pycharm2021.11.2激活码_在线激活「建议收藏」

    (pycharm2021.11.2激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~9K2BT69C4S-eyJsaWNlbnNlSWQiOi…

    2022年3月28日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号