请教:如何实现数据库同步

本人工作当中要做2台oracle数据库同步,详情如下:

数据库版本:oracle9i
host:node1 node2
数据库不是归档模式
不使用第三方工具实现同步
数据结构复杂,每个用户下面有上万个table

实现node1 到node2的数据复制,不要求实时同步,可以每天做一次或每隔6个小时做一次。

目前我己经确定data guard和物化视图不可行,请高手指点一下,看有没有别的办法来实现。
另:exp能做到逻辑同步吗?
我也来说两句 查看全部回复

最新回复

  • yzsind (2008-8-20 08:54:47)

    可以试试流复制(stream),不过你一个用户下表太多了,除了用Data guard和第三方复制软件,流复制及物化视图都管理起来比较麻烦一些吧!
  • bobobian (2008-8-22 16:37:48)

    了解一下,顶一下!
  • jametong (2008-8-31 00:57:44)

    可以考虑使用trigger来进行同步..

    上万个表,,使用什么工具都是一件痛苦的事情..
  • binhu (2008-9-02 22:19:53)

    QUOTE:

    原帖由 prz 於 2008-8-19 15:05 發表
    本人工作當中要做2台oracle數據庫同步,詳情如下:

    數據庫版本:oracle9i
    host:node1 node2
    數據庫不是歸檔模式
    不使用第三方工具實現同步
    數據結構複雜,每個用戶下面有上萬個table

    實現node1 到node2的數 ...
    為何data guard不行呢???
    exp可以做的到你要的需求
  • prz (2008-9-03 17:07:05)

    回楼上,因为数据库是erp应用,汇总太多,在归档模式下会严重影响性能,所以不能使用data guard来实现,exp的话不是增量的,即使它有增量功能,也不是真正意义的增量,我这段时间自己写了个脚本实现此功能,简单点说就是利用rman实现远程恢复,所以需要生产库每天要停止一次,备份和恢复脚本在附件里放着。基本实现了2台数据库的同步功能。

    脚本有问题的话请告知一下谢谢。

    backup_rman_v1.1.sh
    (2008-09-03 17:07:05, Size: 10.2 KB, Downloads: 15)

    restore_rman_v1.1.sh
    (2008-09-03 17:07:05, Size: 6.68 KB, Downloads: 12)

  • binhu (2008-9-04 21:05:01)

    多谢回答了
    但我觉的有点怪,你都能停机了,那为何不直接由网路对copy就好了,还是同一个db中,有多服务在里中,而你要的资料只要其中一部份
    并且你又说用rman,那你的db就是在archivelog mode中了,跟你的考量不就又有冲突了吗,并且你也可在data guard中设定同步的时间
  • webtang (2008-9-05 10:14:17)

    可以在备机上做job,但是这样肯定会影响你的性能
  • prz (2008-9-05 11:23:37)

    回7楼,用RMAN只做增量备份,30天做一次0级备份,因为是用RMAN,在备份时必须设置归档,备份完成后会恢复到初始状态 ,即备份前数据库是归档的话不做修改,若是非归档则返回该模式启动数据库,data guard是不可能的,因为数据库是不允许归档模式,会对性能有较大影响。
    回8楼,restore_rman是在备机上执行的,backup_rman在主库备份完会同步数据文件到备库,因为这个脚本运行肯定是在半夜,在备库上执行同步和主库上没太大区别,增量文件也不会很大,所以性能问题可以忽略。
  • beibeilix (2008-9-09 13:53:06)

    可以使用快照进行逻辑同步!!!
  • lidahe (2008-9-09 22:56:40)

    我的第一个想法就是使用触发哭,不过你的表太多了。没多大可能这样去实现。
  • zhaolcq (2008-9-11 11:35:24)

    评什么说dataguard 不行?我现在1.5T 的数据库都用的dataguard 同步
  • ninghai (2008-9-12 20:57:01)

    停机都可以了,我觉得没有什么不能用的了