1.简介
Database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是database link是单向的连接。
2.分类
类型 | Owner | 描述 |
Private(默认) | 创建database link的user拥有该database link | 在本地数据库的特定的schema下建立的database link。只有建立该database link的schema的session能使用这个database link来访问远程的数据库。同时也只有Owner能删除它自己的private database link。 |
Public | Owner是PUBLIC | Public的database link是数据库级的,本地数据库中所有的拥有数据库访问权限的用户或pl/sql程序都能使用此database link来访问相应的远程数据库。 |
Global | Owner是PUBLIC | 网络中的数据库中的用户均可使用该database link. 因为当Oracle 使用目录服务器的时候,它会在该目录下的所有数据库里都创建这个 global database link,并且统一控制。因此所有在目录下的数据库里的用户均可使用。 |
3.远程数据库用户验证方法
用户类型 | 描述 |
Connected user(默认) | 当创建database link的时候没用用CONNECT TO username指定固定的user的时候当前用户的登陆信息将会被用来验证登陆远程数据库,如果本地用户是SYSTEM的话那么登陆远程数据库的用户也是SYSTEM。 注意:Connected user不一定是建立database link的用户,任何一个可以使用该database link的用户都可以是Connected user。 |
Fixed user | 在建立database link的时候如果指定了用户名/密码时,所有使用使用使用该database link的用户,不管是否是建立database link的用户,都将使用指定的用户去登陆远程的数据库。 |
Current user | 需要用户连接到本地数据库的时候是全局用户的身份连接的。这样这个全局用户就可以使用指定帐户的上下文,而无需存储密码信息到link中。 |
4.连接方式
取值 | 说明 |
不指定 | 默认值建立一个dedicated的连接,每一个使用database link的本地session都会对应有一个远程数据库的session。 |
SHARED | 创建一个共享的数据库连接,同时要指定database link_authentication。 使用shared方式的database link是数据库会限制到远程数据库的连接的数量,这样以避免过多的连接对远程数据库造成太大的压力。在使用shared database link的时候,到database link的连接会在连接以后与本地连接断开,为防止未授权的session使用此链接而要求在创建shared database link的时候必须要指定database link_authentication。 |
5.使用
1)创建
基本语法
CREATE [SHARED] [PUBLIC] database link link_name
[CONNECT TO user IDENTIFIED BY password]
[AUTHENTICATED BY user IDENTIFIED BY password]
[USING 'connect_string'];
[CONNECT TO user IDENTIFIED BY password]
[AUTHENTICATED BY user IDENTIFIED BY password]
[USING 'connect_string'];
connect_string:TNS Name,可以不配置而采用下述方法创建
CREATE databaselink link_name
CONNECTTO userIDENTIFIED BYscrect
USING'(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sales.company.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sales)
)
)';
CONNECTTO userIDENTIFIED BYscrect
USING'(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sales.company.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sales)
)
)';
当前数据库的domainName不为空的话,创建后的dbLinkName将自动加上domainName后缀,变为dbLinkName.domainName,但使用时可不加domainName后缀,Oracle会自动加上。
查看domainName
select * from GLOBAL_NAME;
返回结果为
DB_NAME.DOMAIN_NAME
DROP [PUBLIC] databaselink link_name
3)查看相关信息
select * from USER_DB_LINKS;
4)使用
select * from tableName@dblinkName;
支持增删改查基本操作只要,可以通过创建同义词来简化tableName@dblinkName为
select * from synonymName;
关于JDBC操作
我在使用JDBC直接操作同义词时会出现分布事务不提交的情况,后改为JDBC操作存储过程,存储过程操作同义词,使得JDBC简介操作同义词,但仍用JDBC管理事务后正常,百思不得其解。
6.参考资料
相关推荐
主要介绍了Oracle DATABASE LINK(DBLINK)创建与删除方法,需要的朋友可以参考下
Database Link详细讲解oracle分布式.文档详细,精简,供大家学习!
Oracle数据库如何创建DATABASE LINK
oracle调用存储过程方法,包括带返回参数和列表参数; oracle创建databaselink的方法和语法,以及对应举例说明。
databaselink是oracle数据库连接另一个数据库(可以是非oracle数据库)用的连接
oracle create database link
Oracle创建Database link方法
Oracle数据库如何创建Database Link呢?本文我们主要就介绍一下这部分内容,Oracle数据库创建Database Link有两种方式,一种是通过菜单,一种是通过SQL
本文档是在开发oracle过程中总结出来的,希望对想了解oracle db link的人有帮助
在创建database link的时候,Oracle再数据字典中保存相关的database link的信息,在使用database link的时候,Oracle通过Oracle Net用用户预先定义好的连接信息访问相应的远程数据库以完成相应的工作。 建立database...
目前通过Oracle11g连接SAP的HANA数据库Oracle11g的透明网关插件gateways中没有该选项,只能通过ODBC创建dblink连接HANA数据库,文档中包含有如何创建本地数据源ODBC,如何创建并配置相关ora文件,如何创建dblink等...
oracle 12c for windows 安装向导
create database link link_zhangli connect to zhangli identified by zhangli using' (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = ...
主要介绍了通过PLSQL Developer创建Database link,DBMS_Job,Procedure,实现Oracle跨库传输数据,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
1.3.8 数据库链(Database Link) 20 第2章 管理ORACLE数据库 21 2.1 基本概念 21 2.1.1 数据字典 21 2.1.2 事务管理 23 2.1.3 数据库管理员(DBA) 24 2.1.4 ORACLE的四种状态 25 2.2 SQL*Plus方式的ORACLE数据库启动...
databaselink是定义一个数据库到另一个数据库的路径的对象,databaselink允许 你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意 的是databaselink是单向的连接。
Oracle Core: Essential Internals for DBAs and Developers by Jonathan Lewis provides just the essential information about Oracle Database internals that every database administrator needs for ...
oracle不同数据库间导入导出表的方法有两种方法, 最后利用pl/sql里面的database link 方法。 自己也是菜鸟,也是经高人指点后,才用的该方法