oracle跨库查询复制表数据
方法一:
在目前绝大部分数据库有分布式查询的需要。下面简单的介绍如何在oracle中配置实现跨库访问。
比如现在有2个数据库服务器,安装了2个数据库。数据库server a和b。现在来实现在a库中访问b的数据库。
第一步、配置a服务器端的tnsnames.ora文件(tnsnames.ora network configuration file),该文件存放的位置为:
$oracle_home/network/admin/tnsnames.ora
需要在该文件中增加对b库的配置项,格式如下
zbcdb3 =
(description =
(address_list =
(address = (protocol = tcp)(host =10.1.50.6)(port = 1523))
)
(connect_data =
(service_name = zbcdb3)
)
)
若在a库的另外一台客户端来访问b的数据库的话,同时也应该修改客户端的相应的文件。
第二步、在a服务器的一个库中建立b的一个数据的dblink。语法如下:
create database link dcmdbconnect todcmdb identified by dcmoptr using 'zbcdb3' ;
然后可以实现分布式查询:
select * from tabname@dcmdb 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 managerconsole)树节点的服务名
要查询对方数据库的表tablename语句如下:
select 字段名 from tablename@数据链名称;
复制表数据:
insert into 表名(字段名) (select 字段名 from tablename@数据链名称);
