ORACLE Database LINK

本文详细介绍了数据库连接中的Databaselink概念,包括其用途、分类、远程数据库用户验证方法、连接方式、使用方法以及注意事项,并提供了创建、删除、查看相关信息的SQL语句,还讨论了JDBC操作时遇到的问题及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。
PublicOwner是PUBLICPublic的database link是数据库级的,本地数据库中所有的拥有数据库访问权限的用户或pl/sql程序都能使用此database link来访问相应的远程数据库。
GlobalOwner是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_string:TNS Name,可以不配置而采用下述方法创建
CREATE database link link_name
CONNECT TO user IDENTIFIED BY screct
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
2)删除
DROP [ PUBLIC] database link link_name 
3)查看相关信息
select * from USER_DB_LINKS;
4)使用
select * from tableName@dblinkName;
支持增删改查基本操作只要,可以通过创建同义词来简化 tableName@dblinkName
select * from synonymName;
关于JDBC操作
我在使用JDBC直接操作同义词时会出现分布事务不提交的情况, 后改为JDBC操作存储过程,存储过程操作同义词,使得JDBC简介操作同义词,但仍用JDBC管理事务后正常, 百思不得其解。
6.参考资料
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值