ORACLE dblink 的建立
1.在tnsnames.ora增加对备份数据库的指向,取名***(增加完毕后,用sqlplus进行验证)tnsping ***
2.登录本地数据库
3.CREATE DATABASE LINK *** CONNECT TO “目标用户名” IDENTIFIED BY “目标用户密码” USING '标识串';
4.desc custcount@***进行确认database link创建是否成功
复制表结构:create table 111 as select * from 111@' 标识串'
---------------------------
软件环境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安装路径为:C:ORANT
3、服务器A、服务器B,均装有NT 4.0中文版
实现方法:
1. 假设A地址192.1.1.1,B地址192.1.1.2
2. A、B上配置好TCP/IP,互相Ping通。
3. 配置init.ora文件,若global_name = true的话,database link 的名字必须同远程机的实例名相同,
为简便起见,请将global_name 设为 false。
4. 在服务器上配置tnsnames.ora,将Remote机器的地址(IP)信息加入本地的tnsnames.ora
A服务器:
TNSA_B =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = 192.1.1.2)
(Port = 1521)
)
)
(CONNECT_DATA = (SID = ORCL)
)
)
1.在tnsnames.ora增加对备份数据库的指向,取名***(增加完毕后,用sqlplus进行验证)tnsping ***
2.登录本地数据库
3.CREATE DATABASE LINK *** CONNECT TO “目标用户名” IDENTIFIED BY “目标用户密码” USING '标识串';
4.desc custcount@***进行确认database link创建是否成功
复制表结构:create table 111 as select * from 111@' 标识串'
---------------------------
软件环境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安装路径为:C:ORANT
3、服务器A、服务器B,均装有NT 4.0中文版
实现方法:
1. 假设A地址192.1.1.1,B地址192.1.1.2
2. A、B上配置好TCP/IP,互相Ping通。
3. 配置init.ora文件,若global_name = true的话,database link 的名字必须同远程机的实例名相同,
为简便起见,请将global_name 设为 false。
4. 在服务器上配置tnsnames.ora,将Remote机器的地址(IP)信息加入本地的tnsnames.ora
A服务器:
TNSA_B =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = 192.1.1.2)
(Port = 1521)
)
)
(CONNECT_DATA = (SID = ORCL)
)
)
B服务器:
TNSB_A =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = 192.1.1.1)
(Port = 1521)
)
)
(CONNECT_DATA = (SID = ORCL)
)
)
TNSB_A =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = 192.1.1.1)
(Port = 1521)
)
)
(CONNECT_DATA = (SID = ORCL)
)
)
5. 在 SQL*Plus 或其它工具中创建数据库链接
A服务器:create public database link A_TO_B connect to tmp identified by tmp using 'TNSA_B';
B服务器:create public database link B_TO_A connect to tmp identified by tmp using 'TNSB_A';
说明:
tmp是一个临时用户,A服务器、B服务器上均有,它的作用是提供链接的目的地,
假如:
B服务器上有user1、user2、tmp三个用户,user1和user2把他们想要对外公开的表的权限授给tmp用户,
那么,所有能通过database link连接到tmp用户上的人就可以直接访问user1、user2上的已授权表了。
A服务器:create public database link A_TO_B connect to tmp identified by tmp using 'TNSA_B';
B服务器:create public database link B_TO_A connect to tmp identified by tmp using 'TNSB_A';
说明:
tmp是一个临时用户,A服务器、B服务器上均有,它的作用是提供链接的目的地,
假如:
B服务器上有user1、user2、tmp三个用户,user1和user2把他们想要对外公开的表的权限授给tmp用户,
那么,所有能通过database link连接到tmp用户上的人就可以直接访问user1、user2上的已授权表了。
6. 建立database link以后,请用这种格式select * from
table_name@database_link_name
的方式访问
如:在A服务器上想访问B服务器上user1用户table1表的内容(A到B的连接为A_TO_B),则
SQL> select * from table1@A_TO_B ;
如:在A服务器上想访问B服务器上user1用户table1表的内容(A到B的连接为A_TO_B),则
SQL> select * from table1@A_TO_B ;
7. 如果Oracle版本为7.3,则数据库联接写法如下:
A服务器:create public database link A_TO_B connect to tmp identified by tmp using 't:192.1.1.2:orcl';
B服务器:create public database link B_TO_A connect to tmp identified by tmp using 't:192.1.1.1:orcl';
-----------------------
--测试库(129.3)连正式库(130.3)
--1 在129.3fwq上的tnsnames.ora 里添加
simis_real =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XX.XX.130.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora9)
)
)
--2 tnsping simis_raal 5 确认能ping通
--3 CREATE DATABASE LINK simis_real_2 CONNECT TO sidb IDENTIFIED BY xyz USING 'simis_real';
-- sidb/xyz为正式库上的用户/密码
--4 select * from test_aaffaa_1@simis_real_2 ;
-----------------------
--测试库(129.3)连正式库(130.3)
--1 在129.3fwq上的tnsnames.ora 里添加
simis_real =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XX.XX.130.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora9)
)
)
--2 tnsping simis_raal 5 确认能ping通
--3 CREATE DATABASE LINK simis_real_2 CONNECT TO sidb IDENTIFIED BY xyz USING 'simis_real';
-- sidb/xyz为正式库上的用户/密码
--4 select * from test_aaffaa_1@simis_real_2 ;
8.删除dblink
drop public database link 名称
9.同义词
相当于alias(别名),比如把A机器的SYS.user_tab_comments在B机器的user2中建一个同义词table1
create synonym table1 for SYS.user_tab_comments;
create synonym table1 for SYS.user_tab_comments;
如果table1是系统表的话,要把table1 建成为PUBLIC下的同义词,这样通过LINK就可以访问了
这样当你在user2中查select * from table1@link时就相当于查select * from SYS.user_tab_comments;
这样当你在user2中查select * from table1@link时就相当于查select * from SYS.user_tab_comments;
如果table1是系统表的话,要把table1 建成为PUBLIC下的同义词,这样通过LINK就可以访问了