首页 > Oracle > Oracle db link创建简单详解
2014
09-22

Oracle db link创建简单详解

大家应该都对dblink不陌生了,基本上很多环境中,都能发现dblink的影子。以前总结了一些关于这方面的知识,现在发出来共享给需要的童鞋。

一、创建Database Link

1) 权限:  创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASELINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。

2) 创建:已经配置本地服务

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

3)创建:直接建立链接

host=数据库的ip地址,service_name=数据库的sid。其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。

4)创建全局dblink

    假如创建全局dblink,则必须使用systm或sys用户的权限,在database前加public。创建PUBLIC DATABASELINK,不用指定用户和密码 在工具pl/sql工具目录DatabaseLinks看不到此dblink,可以访问远程所有用户的数据

5)创建私有dblink

    再在各个用户下创建私有DATABASE LINK(同PUBLIC DATABASE LINK名称相同),指定用户和密码.这种情况下,只能访问此用户的数据

6)dblink类型

   db link 有3种类型,我这里只讨论其中两种,connected user和fixed user。connected user,简单来说,连接方数据库以connected的用户来连接远程数据库。fixed user,简单来说,连接方数据库以fixed(指定的)用户来连接远程数据库。创建db link语法,你对这两种类型就比较清楚了。

     创建connected user的db link语法:
             create database link TEST connect to scott identified by tiger using ‘EDW’ ;

     创建fixed user的db link语法:
             create database link TEST using ‘EDW’ ;

 

Ps: 在版本比较低的数据库中,使用dblink查询数据的时候,是不是有时会出现0.+造成查询失败,实际上需要注意的是,在有的版本中,我们需要及时显示的关闭dblink。以下提供两种方式,因为并不会在你建立的以后就自动的关闭和远程服务器建立的session,如果session太多,会0.+造成查询失败。

alter session close database link <dblink_name>;
dbms_session.close_database_link(<dblink_name>);

最后编辑:
作者:Jerry
一个积极向上的小青年,热衷于分享--Focus on DB,BI,ETL