创建数据库链路参考文档(转)
说明:创建数据库链路,可以实现两个不同的数据库之间的控制访问。以下用简单的例子说明一下创建数据库链路的步骤:
一.            实现功能
主要是实现两台不同机器的两个不同应用的数据交流。假设均使用Oracle数据库,A应用开放两个数据表,B应用开放两个视图。要实现A数据库可以访问B应用的两个视图的数据,B数据库可以访问A应用的两个数据表的数据。
二.            具体步骤
以下简要说明A的创建数据链路及相关的操作:
1.      A先使用账号ADMIN_A/ADMIN_A_PSW创建两个表,如:TABLE_A1 和 TABLE_A2。这两个表就是要开放给用户B的。
oracle建立数据库连接2.      A创建一个用户,如:guest_b/ guest_b_psw。这个用户就是要开放给用户B来访问开放的表的。
代码如下:
create user GUEST_B identified by guest_b_psw default tablespace TABLE_SPACE temporary tablespace PCS_TEMP;
grant connect to GUEST_B;
3.      A使用管理员账号为GUEST_B用户授权两个表,以下授以完全控制两个表的权限。
代码如下:
grant all on TABLE_A1 to guest_b;
grant all on TABLE_A2 to guest_b;
4.      A在NetManager中建立到B数据库服务器的NetServiceName,也可以修改在Oracle的安装目录下的文件\Oracle\network\a,在里面添加一个NetServiceName,如“TO_B”。
5.      创建数据链路名为“GOTO_B”,要使用第四步创建的NetServiceName: TO_B。这里假设了B同样创建了一个账号guest_a/guest_a提供给A使用。
CREATE PUBLIC DATABASE LINK " GOTO_B "
CONNECT TO "GUEST_A" IDENTIFIED BY "guest_a" 
USING ' TO_B ' ;
另提供一个范例,这个例子创建可以不用配置NetServiceName就可以直接创建:
-- Drop existing database link
drop database link TOCCIC;
-- Create database link
create database link TOCCIC
connect to ZTRY identified by ZTRY
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = fengwenwei)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ZTRY)
)
)';
6.      通过创建同义词来访问B的视图数据。注意:使用时要在视图或表前面加上B提供的视图的真正创建者的名称:ADMIN_B,如这里假设B使用账号ADMIN_B创建了两个视图VIEW_B1和VIEW_B2。另外,是通过使用刚才建立的链路GOTO_B来进行连接。这样,就可以在本地直接使用VIEW_B1和VIEW_B2来访问B的两个视图的数据。如果不创建同义词的话,可以使用方法ADMIN_B. VIEW_B1来进行访问。
create synonym VIEW_B1 for ADMIN_B. VIEW_B1@ GOTO_B;
create synonym VIEW_B2 for ADMIN_B. VIEW_B2@ GOTO_B;
7.      同样道理,B用户也执行上述类似操作,创建一个用户guest_a/ guest_a_psw,然后授权给两个视图,并建立链路。这样,A与B就可以实现数据互通
三.            小结
1.      在创建链路时,如果是使用生成链路代码测试连接不成功的话,请使用Enterprise Manager Console来创建。
2.      在注意两边的账号使用对应,不要搞混。
3.      注意:Oracle中的SERVICE_NAME可以对应多个SID。
4.      注意如果链路建立不成功,请检查Oracle中的参数配置是否正确,如:global_names需要设置为True。Oracle9i安装时默认为False。
冷冰鱼
关注 - 0
粉丝 - 0
关注博主0 0 0
(请您对文章做出评价)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。