现在需要把旧系统数据导入新系统数据库中,原系统数据库sqlserver2000,新系统采用数据库oracle10g由于原系统中有的数据量比较大。都在500万条左右。
方案一:采用程序实现分页读取数据插入,写很多线程并发执行。但是还是感觉速度很慢。运行了三天三夜才把数据导完
方案二:配置数据源,用sqlserver2000DTS先把sqlserver2000数据库表完全导入至oracle中,再执行oracle10g中执行SQL语句导入,效率也没见大幅提高
请问有没有效率什么好的意见。欢迎各位共同探讨。

解决方案 »

  1.   

    操作前建议(1)删除目标库中数据库表上的全部索引和约束,等数据倒完后再重建索引和约束。
    (2)保持资源足够,尤其是锁资源以及回滚段、临时表空间足够。方案一:如果采用自己写程序完成,则关键是插入数据时的效率。大数据量的插入建议采用块插入,利用数组的方式,一次插入几千条,可以大大提高插入的速度。方案二:利用db工具处理
    sqlserver:利用bcp将数据导出为格式化的数据(也可以自己写程序卸出)
    oracle:利用sqlldr将卸出数据加载到表中
      

  2.   

    其实,1楼的方案2是蛮好的,完全是DBA风格的,效率绝对比方案1要高。
    关于楼主的方案2,是可以商量的,看看DTS有没有批量提交的参数。在导入之前,参照1楼的,做一些准备工作。
    然后是后期阶段使用"再执行oracle10g中执行SQL语句导入",这个SQL语句是可以用insert /*+APPEND*/方式加快插入。