最近有个项目涉及了一个数据迁移的问题.
两个库,其中有个库,相对较小(160G的数据量),
但是业务最多能在晚上停下来.(能承受最长停应用的时间是10小时左右)
对其中一个库,我准备采取下面的方式来做:查数据库,找其中的应用大表.
发现其中有7张大表,一共占用了130G左右的容量.(有张表单表容量有60G)1.在老库把用户大表 导出(生产库正常运行时)
2.在新库把用户大表导入(生产库正常运行时)||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.停业务(当天晚上)
4.先查老库大表中哪些是exp之后改动过的,再在新库中把这些表中的行全部删除掉.(当天晚上)
5.把老库的大表中的数据(改动过的行)导出来(当天晚上)[带where 条件的exp]
6.在新库把这些增量的数据导入,(当天晚上)[imp之前,需要对新库做操作,先把触发器、约束禁用,]
7.把数据库中其他的小表插入。
8.全部导完之后,再把触发器启用。 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||整个流程有什么瑕疵? 
where 条件的exp,相关语法和相关注意事项?
触发器、约束禁用启用相关语法和注意事项?

解决方案 »

  1.   

    新库还没起业务.才装的10.2.0.4的rac
      

  2.   


    这么大的数据搬迁还真没做过, 不过我有个想法,就是先做个Data Guard, 让他先同步, 之后在切换下..这样也很快呀..10个小时来搭DG时间应该够了..
      

  3.   


    最好先实验一下先。10g不支持exp的增量
      

  4.   

    dataguard 还是不太可行了,因为是异构平台的,( linux -> aix)
      

  5.   


    用exp和imp了,如果机器的状况不错的话,时间不会花的太久。
    10G不支持exp的incremental type叻。 如果老机不能停。而且又需要相隔时间内的数据的话,可以用logminer挖出来,在新库上执行
      

  6.   


    针对这个问题,我准备采用时间戳的方法来克服。
    导出的表都有一个时间戳,显示了这个操作的具体时间,另有一个字段,表示是插入、删除、更新操作。先做一次基表的导出,导入,
    在实际割接当晚,把生产库停掉后,检查所有这段时间生产库上增量的数据,找到他们的主键。
    再到目的库中把这些主键代表的行都删除掉,
    最后再在主库做一个 增量导出。在目的库做一个增量导入就okey了。
      

  7.   

    最后再在主库做一个 增量导出
    指的是 带where 子句的exp