我现在手上有个项目,做数据的迁移,要求是将数据库A的数据迁移到数据库B中去。
现在大状况如下:
1) A中的表结构和B中的表结构大致相同,但略有差异,如A中有某些字段B中没有,A中字段结构为Number,B中变为VARCHAR。
2) 数据量也比较大,每张表少的有100万,多的有上千万。而且有些BLOB存储的还是附件文件。
3) 两个数据库肯定不在一台server上,是跨互联网的。请问前辈能否给点建议,我用Oracle代码做还是用JAVA 做?要求如下:
1) 保证数据的完整性,数据不能丢。
2)效率不能太低。
3)尽量考虑操作的简便性。因为我是给客户提供代码,让他们自己去操作。

解决方案 »

  1.   

    1,使用存储过程insert into插入(建议这种操作,虽然可能速度慢了点,但是比较灵活,比如说主键冲突可以把数据插入到一张备份表记录等等)
    2,使用exp导入
    导入前需分析2个库表的差异并在本地测试,然后把库A,EXP到库B的局域网中去,互联网操作速度慢不太稳定
      

  2.   

    考虑数据量和业务的持续性。
    如果可暂停,可考虑用expdp导出导入或用rman备份再恢复
      

  3.   

    先把源库备份,在目标库的同网段恢复,再通过 dblink 方式做同步。insert select  方式实现就可以的;
      

  4.   

    plsql有个功能 可以对比AB两个的差异  
    差异找出来了可以先imp  然后额外处理差异的表数据