synonymous oracle,oracle dblink
发布日期:2022-02-03 04:38:32 浏览次数:13 分类:技术文章

本文共 1246 字,大约阅读时间需要 4 分钟。

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 将会映射本地表了。

转载地址:https://blog.csdn.net/weixin_30596151/article/details/116385717 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:oracle11g数据库登录01017,windows oracle11g数据库使用sqlplus登录的时候出现ora-01017报错...
下一篇:oracle standby logfile,ORACLE 11gR2下ADG redo&standby log维护

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月13日 22时50分04秒