技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Oracle --> 用DataCopy进行Oracle数据同步

用DataCopy进行Oracle数据同步

浏览:2208次  出处信息

       DataCopy(下载)并不一定是指从源端取得数据, 然后INSERT到目标端, 插入只是一个默认操作而已, 其实在目标端还可以做UPDATE或DELETE操作. 对于INSERT可以使用Direct Path Load的方式, 速度可以比得上CTAS, 其他的操作方式, 则只能实现Array DML了. 在日常的DBA工作中, 还是会有一些数据同步的需求的, 这时DataCopy应当可以减轻你的工作量.

       在DataCopy中增加了两个命令行选项, 以支持不同的操作方式.

* sync    = sync mode (INSERT,UPDATE,DELETE,UPDINS,INSUPD,DELINS).

     * unique  = primary key or unique key columns of target table.

    

       除INSERT操作外(SYNC选项的默认值), UPDATE/DELETE操作都需要指定目标端表的主键列, 以用在WHERE条件中. UPDATE操作会根据指定的主键列去更新非主键列的值(SYNC=UPDATE), 而DELETE操作则直接在目标端根据主键列删除记录(SYNC=DELETE).

datacopy user1=... user2=... table1=emp table2=emp_sync sync=delete unique=empno

    datacopy user1=... user2=... table1=emp table2=emp_sync sync=update unique=empno

       根据前面的三种基本操作还可以延伸出来额外的三种操作, 在目标端用PL/SQL代码来实现, 第一种是UPDATE-INSERT方式, 在目标端先进行UPDATE, 如果更新0条记录, 则进行INSERT. 这种方式适合于以UPDATE为主的数据同步.

datacopy user1=... user2=... table1=emp table2=emp_sync sync=updins unique=empno

    

       第二种是INSERT-UPDATE方式, 在目标端先进行INSERT, 如果主键冲突, 则进行UPDATE. 这种方式适合于以INSERT为主的数据同步.

datacopy user1=... user2=... table1=emp table2=emp_sync sync=insupd unique=empno

    

       第三种是DELETE-INSERT方式, 在目标端先进行DELETE, 再进行INSERT操作. 这种方式的执行成本会比较高, 但逻辑简单.

datacopy user1=... user2=... table1=emp table2=emp_sync sync=delins unique=empno

    

       后面的三种方式, 如果要用PL/SQL来实现Array接口, 代码还是有一点复杂的, 如果要实现动态SQL的处理, 估计更复杂. 并且大量的循环, 用外部C写的程会更有效率.

建议继续学习:

  1. 关于IO的同步,异步,阻塞,非阻塞    (阅读:14481)
  2. mysql 主从同步原理    (阅读:5709)
  3. 消息分发的同步均衡策略    (阅读:5031)
  4. 五款最好的免费同步软件    (阅读:3857)
  5. 大量小文件的实时同步方案    (阅读:3726)
  6. MySQL5.5复制/同步的新特性及改进    (阅读:3721)
  7. redis源代码分析 - replication    (阅读:3414)
  8. rsync主动同步代码    (阅读:3125)
  9. 三款面向 Amazon S3 的开源文件同步工具之对比    (阅读:3079)
  10. truncate table 不能复制到从库    (阅读:2726)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:配置nginx >>
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1