oracle dblink

本文介绍了DBLink的概念及其在不同数据库服务器间的应用。包括如何创建DBLink、使用公共和私有DBLink的区别,以及在SSH框架中遇到的问题及解决方案。
DBLink:主要是针对两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。
 
场景:数据库服务器分别为25和33,其中33为远程服务器,即我当前登录25,需要操作33的数据库。
 
----创建dblink
create public database link remote
connect to test identified by test
using 'remote33'
dblink 的名称为remote
test为登录33的用户名和密码
remote33为在25机器上tnsnames.ora中配置的到33上的网络服务名,如下:
 
remote33 =
(DESCRIPTION =
(ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.33)(PORT = 1521))
)
(CONNECT_DATA =
  (SERVICE_NAME = orcl)
)
)
所以首先要到目标数据库服务器25上配置tnsnames.ora

----还可以使用缺省登录方式创建,即不指定远程数据库的用户名和密码:
create public database link remote
using 'remote33'
在不指定用户名和口令的情况下,ORACLE使用当前的用户名和口令登录到远程数据库。假如我们通过pl/sql developer以test用户登录执行上述命令,然后再以 bjaic 用户登录到25上,执行 select * from table@remote,则会报错:
ORA-00924:表或视图不存在;
ORA-02063:紧接着line(起自remote)
此时所要访问的表 table 不在数据库链接中指定的远程帐户bjaic下,但该帐户有访问该表的权限,那么我们在表名前要加上该表的用户名test。即:select * from test. table @remote;
 
----public & private
public 对所有的数据库用户开放访问权。private  只对建立它的用户授权。公用数据库链接更为有用,因为它使你不必为每一个潜在用户创建单独的链接。即使是public,用户名仍旧固定,所有使用这个 dblink 的用户都作为用户 test 连接到远程数据库。

----如果 ssh  框架开发过程中要用到另一个 oracle 数据库中的表,但是 hibernate 不能直接对 dblink 中的表进行映射导致无法使用 hibernate 创建 pojo 类,解决的办法是在本地数据库创建 dblink 数据库表的 synonymous,再利用 hibernate对此synonymous 进行映射就可以建立映射关系了,需要注意的是创建的 synonymous 不要跟本地表同名这样 hibernate 将会映射本地表了。
 

 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值