随笔-193  评论-715  文章-1  trackbacks-0
1,在目标机上建立Oracle DB Link:
A,在network/admin/tnsname.ora文件中加入源库的连接信息,如:
AAA=
  (DESCRIPTION 
=
    (ADDRESS 
= (PROTOCOL = TCP)(HOST = 10.5.1.3)(PORT = 1521))
    (CONNECT_DATA 
=
      (SERVER 
= DEDICATED)
      (SERVICE_NAME 
= AAA)
    )
  )

B,在目标机上用sqlplus user/pwd登录。
C,用如下命令建立DB Link:
create public database link AAA_LINK connect to user identified by pwd using 'AAA';
命令说明:
CREATE PUBLIC DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
如果建立成功,会提示:Database link created.

2,使用如下脚本,即可同步数据表:
#!/bin/sh
# to sync table A to BBB database from AAA database

sqlplus user/pwd@BBB <<EOF    #这里是BBB上的数据库和密码还有实例名,请按照实际情况修改
truncate table A;
insert into A 
select * from b_schema.A@AAA_LINK#这里是指向要同步的来源表,表名必须是<表所有者>.<表名>@<dblink name>
commit;


PS:需要DB支持Advanced replication功能,是否支持,可用如下SQL查看:
select * from v$option where PARAMETER='Advanced replication';
如果是返回True就表示支持。


特别提示:
本Blog所有内容不得随意转载,版权属于作者所有。如需转载请与作者联系(
fastzch@163.com)。未经许可的转载,本人保留一切法律权益。
posted on 2009-02-17 19:22 Robin's Programming World 阅读(15987) 评论(15)  编辑  收藏 所属分类: DB

评论:
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步[未登录] 2009-02-18 14:41 | kim
不知道效率如何?  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2009-02-18 17:11 | 虎啸龙吟
也在关注效率问题啊  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2009-02-18 17:47 | Robin's Java World
效率这事儿可以在脚本上动手脚。
目前的脚本应该比全部删除然后循环着一笔笔插快些。  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2009-02-19 08:41 | Leo1734
插入的时候可以改成存储过程这样应该比较快一些吧!猜测……:p
btw:LZ要是用过高级复制的话,可以介绍介绍,我多次尝试都不成功!  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2009-03-19 16:38 | Robin's Java World
@Leo1734
这就是高级复制功能的一种用法。  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步[未登录] 2009-03-20 10:03 | jody
请楼主详细分析下select * from b_schema.A()@AAA_LINK; #这里是指向要同步的来源表(只能一个表一个表的同步?且表的结构不一样呢?也可以?),表名必须是<表所有者>.<表名>@<dblink name>


  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2009-03-20 12:37 | Robin's Java World
@jody
通常,表结构要一样,不一样的话可用SQL语句调整成一样。  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2009-05-07 17:08 | book
一句话,误人子弟  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步[未登录] 2009-12-24 13:33 | 啊啊
垃圾   回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2010-11-21 11:11 | qzcong
请问楼主第二步的脚步如何使用?具体是怎么操作呢?是保存脚步?保存为什么扩展名?  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2013-09-23 22:51 | 路人甲
一句话,误人子弟  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2013-12-09 19:22 | 轩辕恒辰
#!/bin/sh
# to sync table A to BBB database from AAA database
sqlplus user/pwd@BBB <<EOF #这里是BBB上的数据库和密码还有实例名,请按照实际情况修改
truncate table A;
insert into A
select * from b_schema.A@AAA_LINK; #这里是指向要同步的来源表,表名必须是<表所有者>.<表名>@<dblink name>
commit;

这些输进去为什么总是出错  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步[未登录] 2014-03-14 11:56 | aa
服了,说别人不好的人,先拿出自己已本事看看啊。  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2014-06-18 11:36 | guodefu909
这个是属于全量更新,只适用于一次更新或记录数少的情况。大表更新还是需要用增量更新  回复  更多评论
  
# re: 利用DB Link两步搞定Oracle两个数据库间的表同步 2014-06-18 11:37 | guodefu909
准确的说不能叫表同步,只能叫表复制  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: