database link

 
database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是database link是单向的连接。

关于创建和管理DBLINK:
本例远程数据库全局数据库名为pincdb,由于本地数据库的参数:global_names boolean  FALSE,故DBLINK命名为 topincdb是可行的。
1.已经配置本地服务

1.create database link topincdb

1.connect to asp62 identified by asp62

2.using 'PINCDB';

数据库连接字符串'PINCDB'是当前(客户端数据库中TNSNAMES.ORA文件里定义的别名名称.
2.直接建立链接(如果是给同一库里面的用户建立DATABASE LINK的话,就不能用上面的那种形式,用这种形式可以)
1.create database link topincdb

1.connect to scott identified by tiger

2.using '(DESCRIPTION =

1.    (ADDRESS_LIST =

2.      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.102)(PORT = 1521))

3.    )

4.    (CONNECT_DATA =

5.      (SERVICE_NAME = pincdb)

6.    ))';
HOST=数据库的IP地址,SERVICE_NAME=数据库的SID。
3.DBLINK查询

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

1.SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
4.DBLINK删除

1.DROP PUBLIC DATABASE LINK toBeJing
5.DBLINK使用
SELECT …… FROM表名@数据库链接名;

查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@DBLINK服务名”而已。 例:查询北京数据库中emp表数据   select * from emp@toBeJing;

6.使用同义词
CREATE SYNONYM同义词名FOR 表名;

CREATE SYNONYM同义词名FOR 表名@数据库链接名;

如:create synonym bj_scott_emp for emp@toBeJing;

于是就可以用bj_scott_emp来替代带@符号的分布式链接操作emp@toBeJing

7.用户类型
DBLINK有3种类型,Connected user、Fixed user和Current user。
Connected user,当创建database link的时候没用CONNECT TO username指定固定的user的时候,当前用户的登陆信息将会被用来验证登陆远程数据库,如果本地用户是SYSTEM的话那么登陆远程数据库的用户也是SYSTEM。
注意:Connected user不一定是建立database link的用户,任何一个可以使用该database link的用户都可以是Connected user。
Fixed user,在建立database link的时候如果指定了用户名/密码时,所有使用使用使用该database link的用户,不管是否是建立database link的用户,都将使用指定的用户去登陆远程的数据库。

 

创建connected  user的db link语法:
1.create database link topincdb connect to pin62 identified by pin62 using 'PINCDB' ;
创建fixed user的db link语法:
1.create database link topincdb using 'PINCDB';
8.创建全局dblink
使用systm或sys用户,在database前加public。
1.先创建PUBLIC DATABASE LINK,不用指定用户和密码


1.SQL>conn system/test

1.Connected

2.SQL>CREATE PUBLIC DATABASE LINK topincdb USING 'PINCDB';

3.Database link created.
2.再在各个用户下创建私有DATABASE LINK(同PUBLIC DATABASE LINK名称相同),指定用户和密码
1.SQL>conn pin62/pin62

1.Connected.

2.

3.SQL>CREATE DATABASE LINK topincdb CONNECT TO pin62 IDENTIFIED BY pin62;

4.Database link created.
实际上相当于:
CREATE DATABASE LINK topincdb USING 'PINCDB' CONNECT TO pin62 IDENTIFIED BY pin62;

注:如果创建全局dblink没有PUBLIC关键字,则创建私有DATABASE LINK后,应用DBLINK时,会提示找不到DATABASE LINK描述信息。

9.DBLINK 命名
DBLINK 的命名和global_names有关,global_name是数据库全局名称,global_name在你所管理的数据库中要保证唯一。数据库名称是db_name。数据库名称一般都取得比较短,我的习惯一般取长度4个字符,重名概率高。所以,oracle模仿域名搞出一个global_name,global_name=db_name+db_domain。
有了global_name,就可以实现数据库命名的全局唯一。例:ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM
数据库全局名称可以用以下命令查出
SELECT * FROM GLOBAL_NAME;
如果global_names=true,那么db link的命名要和远程数据库的global_name相同;
如果global_names=false,那么你可以随便命名db link。

 

本文参照:
Oracle Database Link基础Oracle 使用 DBLINK详解

1.说明:
2.1) 权限:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私 有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。
3.2)link : 当GLOBAL_NAME=TRUE时,link名必须与远程数据库的全局数据库名global_name)相同;否则,可以任意命名。
4.3)connectstring:连接字符串,tnsnames.ora中定义远程数据库的连接串。
5.4)username、password:远程数据库的用户名,口令。如果不指定,则使用当前的用户名和口令登录到远程数据库。

你可能感兴趣的:(database link)