<十>连接远程的数据库(包括不同服务器)
数据库链接(Database Link)与分布式数据库功能紧密相连。数据库链接允许用户处理远程数据库而不用知道数据是在什么地方。当建立了一个数据库链接之后,提供对远程数据的登录信息。每当使用数据库链接时,在分布式网络上初始化一个对话(Session),以解决对远程数据库对象的引用。

(1)  先创建一个远程数据库的别名,用ORACLE8 NET EASY CONFIG,也在在文件TNSNAMES.ORA中加入以下格式内容:

别名.WORLD =

(DESCRIPTION =

    (ADDRESS = (PROTOCOL = NMP)(SERVER = 远程数据服务器名称)(PIPE = ORAPIPE))

(CONNECT_DATA = (SID = 远程数据库名称)))

(2)  创建一数据库链接

语法:

CREATE OR REPLACE [public] DATABASE LINK connect_name

CONNECT TO username IDENTIFIED BY password

USING ‘connect_string’;

       创建数据库链接时具体使用的语法取决于下面两个条件:

n         数据库链接的“公共”或“私有”状态;

n         使用缺省还是显式方式登录远程数据库。

 

如果建立的数据库链接是公共所用,则在创建时应指明关键字 PUBLIC;无此参数系统默认为私有;

可以为数据库链接指定用户和密码,如下:

create or replace database link db_link_1

connect to ‘scott’ identified by ‘tiger’

using ‘hq’

则在当前数据库创建了一个指向远程数据库”hq”的链接,连接时所用的用户名和密码为“tiger”;

如果不指定用户和密码,则在应用数据库链接,系统会使用当时的用户进行尝试连接,创建过程如下:

create or replace database link db_link_1

using ‘hq’

(3)远程数据库对象的引用

创建数据库链接以后,在当前数据库就可以访问远程数据库中具有访问权限的对象,引用的方法为将数据库链接名称添加到任何可以访问远程帐号的表或视图上。当将数据库链接名称加添加到表或视图名称上时,必须在数据库链接名称之前使用一个“@”,如:

SELECT * FROM worker@remote_connect;

(3)  使用同义词对远程对象进行访问

对于已创建了数据库链接的远程数据中对象,可以在本地数据库创建其同义词,达到在访问在逻辑上相当天本地数据库对象,使语法简洁,如下:

CREATE SYNONYM worker_syn

 FOR worker@remote_connect;

创建后,对于远程数据库remote_connect的worker表的访问就可以变成如下:

select * from worker_syn;