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']
说明:
- 权限:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私 有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。
- link : 当source端的参数(parameter)GLOBAL_NAMES=TRUE时,link名必须与远程数据库的全局数据库名global_name)相同;否则,可以任意命名。
- current_user使用该选项是为了创建global类型的dblink。在分布式体系中存在多个数据库的话。如果想要在每一个数据库中都可以使用同样的名字来访问数据库a,那在每个数据库中都要创建一个到数据库a的db_link,太麻烦了。所以有这个选项的话你只要创建一次。所有的数据库都可以使用这个db_link来访问了。要使用这个特性,必须有oracle nameserver或者ORACLE目录服务器。并且数据库a的参数global_names=true。
- connectstring:连接字符串,tnsnames.ora中定义远程数据库的连接串,也可以在创建dblink的时候直接指定。
- username、password:远程数据库的用户名,口令。如果不指定,则使用当前的用户名和口令登录到远程数据库,当创建connected user类型的dblink时,需要如果采用数据字典验证,则需要两边数据库的用户名密码一致。
dblink是一个指针,它定义了从数据库服务器到另一个数据库服务器的单向通信路径。链接指针实际上定义为数据字典表中的一个条目。要访问该链接,必须连接到包含数据字典项的本地数据库。
dblink是单向的,一个客户端连接到本地数据库可以使用链接存储在数据库访问信息在远程数据库B,但用户连接到数据库B不能使用同样的链接来访问数据在数据库A如果本地用户数据库B想访问数据库数据,然后他们必须定义一个链接存储在数据库的数据字典。
dblink允许本地用户访问远程数据库上的数据。要实现此连接,分布式系统中的每个数据库必须在网络域中具有唯一的全局数据库名。全局数据库名称唯一地标识分布式系统中的数据库服务器。
资料来源:
Oracle DBLINK 简单使用 https://www.cnblogs.com/wangyong/p/6354528.html
建立dblink(database link) https://blog.csdn.net/bisal/article/details/26730993
PostgreSQL: Documentation: 10: dblink https://www.postgresql.org/docs/10/contrib-dblink-function.html
Database Links https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm#ADMIN12084