两个Oracle数据库A、B,A产生数据,B用于查询和保存历史数据;1 要求A中只保留近期数据,定期删除老数据;2 A产生数据后立即传到B,但是当在特定时间执行删除老数据的任务时,B中数据不删除 3 删除老数据的工作不由人工干预请问要满足这些要求,需要那些技术,大致该怎么做?

解决方案 »

  1.   

    CREATE DATABASE LINK local 
       CONNECT TO a IDENTIFIED BY a  USING 'local';dblink+trigger   --此方法要保证网络的稳定性定时删除数据,可使用job
      

  2.   

    如果对于安全性要求不是十分严格,设计到费用等,可以采用dblink+job+trigger等
      

  3.   

    那我就说一下:
    dblink 的功能很浅显的,实现你在一个数据库中对另外一个数据库的访问
    当……就…… (不是为了一致性检察的化)显然就要trigger好了
    job,就是一个定时的执行你写的脚本或者其他任务的功能,但有个问题说一下,oracle的job
    很不好用,只是支持间隔多长时间如1/48 就是半个小时一次,不能实现如每天12:03作什么?不是十分的好用,建议用cortab (UNIX) 或执行计划(windows)
      

  4.   

    说得更清楚一点,主要是两个数据库之间数据的同步 与 其中一个数据库中的数据删除单独的同步与删除 比较好办,关键是它们掺合在一起
    同步有人建议高级复制(AR)或者DataGuard
    删除有人建议用 job问题在于 执行删除操作时 不然删除操作反映到另一个数据库
    如果使用DataGuard,怎样使 删除期间不产生重做日志 或者让产生的重做日志不应用到Standby数据库?如果使用AR,怎样使 删除操作不应用到另一个数据库?