linux oracle dblink,Oracle dblink配置

一. dBlink 简述

dblink(Database Link)数据库链接顾名思义就是数据库的链接,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

二. 创建dblink

创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的权限,以sys用户登录到本地数据库:

1 select * from user_sys_privs t

2 where t.privilege like upper('%link%');

查询结果集 :

24f4260971dcfeeddd0bf6fdd8ee8b8e.png

可以看出在数据库中dblink有三种权限:

1.CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了) ,

2.CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用),

3.DROP PUBLIC DATABASE LINK。(删除dblink)

在sys用户下,把CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASELINK权限授予给你的用户:

grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott;

然后以scott用户登录本地数据库

2.1 已经配置本地服务

1 create public database link link_name

2 connect to username identified by password

3 using 'connect_string';

注:link_name是连接名字,可以自定义;

username是登陆数据库的用户名;

password是登陆数据库的用户密码;

connect_string是数据库连接字符串。

数据库连接字符串是当前客户端数据库中TNSNAMES.ORA文件里定义的别名名称.可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.

2.2 直接建立链接

1 create database link link_name

2 connect to username identified by password

3 using ' (DESCRIPTION =

4    (ADDRESS_LIST =

5      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.13.178)(PORT = 1521))

6    )

7    (CONNECT_DATA =

8      (SERVICE_NAME = rzzqnew)

9    )

10  )';

注:host=数据库的ip地址;

service_name=数据库的ssid。

2.3 两种方法比较

其实两种方法配置dblink是差不多的,第二种方法比较不受本地服务的影响。

注意: 假如创建全局dblink,则必须使用systm或sys用户,在database前加public。

三. dblink常用命令

3.1 dblink查询

查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令:

1 SQL>select owner,object_name from dba_objects

2 where object_type='DATABASE LINK';

3 或者

4 select * from dba_db_links;

3.2  dblink删除

DROP PUBLIC DATABASE LINK link_name;

3.3  dblink使用

SELECT……FROM表名@数据库链接名;

查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。

四.  配置实例

4.1 机器准备

Machine 1:

Ip   : 10.10.13.178

Oracle: rzzqnew

Machine 2:

Ip   :10.10.13.35

ORACLE:headdb

4.2 创建db link

登陆headdb数据库,账号kingstar 密码kingstar

1 create  database  link  dblinktest

2 connect  to  kingstar  identified  by  kingstar

3 using  '  (DESCRIPTION =

4                (ADDRESS_LIST =

5                  (ADDRESS = (PROTOCOL = TCP)  (HOST = 10.10.13.178)

6                  (PORT = 1521))

7                )

8                (CONNECT_DATA =

9                  (SERVICE_NAME = rzzqnew)

10                )

11              ) ';

注意:1. 创建dblink时候,主要看本地的global_name 是否为true,如果本地的global_name =true,那么你创建的dblink必须和远端数据              库的global_name 一样,否则创建了dblink也不能查到数据;

2. 上面这段代码,如果打错,使用dblink时会报错。

这里我们创建的dblink  名字是dblinktest,与其不一样,所以可以做下面修改。

1 alter  system  set  global_names=false;

4.3 使用dblink

执行:

1  select * from dual@dblinktest;

结果如下:

6e12e3f1c1eb0061e3d21226763ae81c.png

通过这种方法即可实现在headdb数据库上使用rzzqnew数据库下的内容。

注:其实两种方法配置dblink是差不多的,第二种方法比较不受本地服务的影响;

假如创建全局dblink,则必须使用systm或sys用户,在database前加public。

0b1331709591d260c1c78e86d0c51c18.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值