注册 登录
编程论坛 Oracle论坛

怎样才能将2个服务器上的oracle数据库互通使用。

kfxhyc 发布于 2010-08-18 15:55, 1125 次点击
怎样才能将2个服务器上的oracle数据库互通使用。
如:用A服务器上的Oracle数据库中的数据,在B服务器上的oracle中建表。
补充:由于A服务器上的数据过大,导出再导入需要很长时间,所以我不想导。
请大家帮帮忙。谢谢啦
4 回复
#2
cnfarer2010-08-19 08:11
用http://hi.baidu.com/driftice/blog/item/7d3fdd54e80df8173b2935f8.html的方法试试
#3
kfxhyc2010-08-19 10:44
回复 2楼 cnfarer
谢谢
#4
船长Stephen2010-08-19 15:15
ORACLE DataBaseLinks2009-03-03 14:49
方法一:

第一步、配置A服务器端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),该文件存放的位置为:

$ORACLE_HOME/network/admin/tnsnames.ora

需要在该文件中增加对B库的配置项,格式如下

LINK1=
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = IP地址)(PORT = 端口号))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = 服务名)
    )
)

若在A库的另外一台客户端来访问B的数据库的话,同时也应该修改客户端的相应的文件。

第二步、在A服务器的一个库中建立B的一个数据的DBLINK。语法如下:

create database link 链接名 connect to 用户名 identified by 密码 using 'LINK1';

然后可以实现分布式查询:

select * from tabname@链接名 where 1=1;

方法二:

首先创建数据库链接:
CREATE PUBLIC DATABASE LINK 数据链名称 CONNECT TO 登陆用户名 IDENTIFIED BY 密码 USING '(DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 对方Oracle服务器的IP地址)(PORT = 端口号))
     )
     (CONNECT_DATA =
(SERVICE_NAME = 对方Oracle服务器服务名)
     )
   )'

其中 数据链名称 为添加到本地Oracle数据库控制台(Oracle Enterprise Manager Console)树节点的服务名

要查询对方数据库的表TableName语句如下:

SELECT 字段名 FROM TableName@数据链名称;

复制表数据:

insert into 表名(字段名) (SELECT 字段名 FROM TableName@数据链名称);
 
#5
level_level2010-08-21 10:11
个人觉得 上面这个方法是最好的。简单,省事,我一直都是这样操作的。
1