Oracle DB links

我们知道同一台数据库服务器中不同的schema查找某个表或其他对象,只要grant权限给相应的schema就行.但如果不同的数据库服务器之间怎么读取数据呢?

这就需要db link了.创建db link有两种方式.

1.已经配置本地服务的情况:

1.像创建其他数据库对象一样创建database link.

create database linklinknameTest connect touserArwen identified bypswArwenusing 'tnsnameArwen';

里面各个参数的意义:

linknameTest:db link的名字,和数据库表名一样,随便取一个就是.

userArwen:要连接的数据库用户名

pswArwen:要连接的数据库密码.

'tnsnameArwen' :在本地有个叫tnsnames.ora的文件.里面配置好的tns名字.tnsnames.ora里面的内容如下:

tnsnameArwen=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.30.40.50)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = arwen)
)
)

注意:里面的HOST只能用IP地址,不能用机器名.用机器名在其他情况连接数据库不会有问题,但不知道为啥在db link里有会问题.

2.创建好后使用:

比如要查找连接的数据库中的表emp.(注意:如果表中有BLOB这样比较长的字段使用db link查询时报错.不知道为啥啊)

select * from emp@linknameTestwhere empno=7788;

用法和一般查询类似.只要在表名后再@数据库连接名.

使用其他对象也一样,如视图,函数,存储过程.只要加个@后缀就行.

2.没配置本地服务的情况.

其实和第一种方法一样,只是把using后的tns名字换成tnsnames.ora文件里的内容就可以了.

create database link linknameTest connect to userArwen identified by pswArwenusing

'(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.30.40.50)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = arwen)
)
)';

补充:不管是哪种连接方法,如果想建立全局的link db.即创建好后所有的schema都能用.

必须要用system或sys用户登陆.然后像上面一样创建db link.只是要在database前加个public.

例如:create public database link linknameTestconnect touserArwen identified by pswArwen using 'tnsnameArwen';


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值