是这样的:一台是oracle9i,一台是oracle10g,而且不在同一地理位置,用什么技术可以实现两个库里的两张表实时的更新。

解决方案 »

  1.   

    不在同一个地理位置,还要实时更新,dblink, 触发,
    但你要考虑到网速等客观原因,否则不堪重负。
      

  2.   

    使用物化视图。参考
    http://cnibm.javaeye.com/blog/468957
      

  3.   

    其实我也用物化视图试了,但是却发现不能对远程的表物化,我想使用on commit参数,但是不行。create materialized view mv_userinfo
    refresh fast
    on commit
    with primary key
    as
    select t1.userid,t1.username,t1.sex,t1.birthday,t1.phone from userinfo@test160 t1
    就是这个代码有问题,不能创建,提示“ora-12054无法为实体化视图设置 on commit”。
    网上有人说“on commit的一个前提就是物化视图和基表必须处于一个数据库中”。我还正在进一步的测试中
      

  4.   

    引用 6 楼 coolkisses 的回复:
    楼主要求的实时,怎么说? 每天、每小时、每分钟?
    实时就是当源数据发生变化之后,目标数据也马上发生变化。 这样的话建议做Dlink 然后用触发器,这样就是速度会很慢
     
      

  5.   

    好像dblink是不能执行ddl语句吧
      

  6.   

    如果是关键的商业应用,建议使用oracle的高级复制技术来实现,要求实时性较高的话,使用同步复制吧,但要考虑到实际带宽。
      

  7.   

    已经用物化视图和dblink实现和触发器,也做到了数据的实时更新。
    大致的实现方案:先在远程的数据库表上面建触发器,在本地有和远程一模一样的表,这样就可以把数据实时的同步到本地,然后在本地的2张表上又抽取出了一个物化视图,然后在物化视图上面又建了触发器触发另一张表的数据。
    就是这样实现的。