Welcome 微信登录

首页 / 数据库 / MySQL / 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%"); 查询结果集 :  可以看出在数据库中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: rzzqnewMachine 2: Ip :10.10.13.35 ORACLE:headdb4.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; 结果如下:通过这种方法即可实现在headdb数据库上使用rzzqnew数据库下的内容。注:其实两种方法配置dblink是差不多的,第二种方法比较不受本地服务的影响;
  假如创建全局dblink,则必须使用systm或sys用户,在database前加public。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址