我用delph写了一个数据库转换的程序。从oracle 11g 的一个用户导入到另一个用户下。 一共有1000多张表,主要有10几张比较大的表,平均有30W条数据,刚开始导入的时候挺快的, 导入到几张表以后就非常的慢了。开始是cpu占用率80%以上,后来就低下来了只10%左右同时导入速度也极度慢了,找不到原因,请各位大虾们帮帮忙找找原因吧。 是个多线程的程序, oracle会话多时有40多个。等待时间很长。 服务器配置绝对够用,cpu 8核2.0的,内存6G,

解决方案 »

  1.   

    你的delph 是调用exp,imp 命令的吗? buffer 设的是多大? 把buffer 设大点看看。 11g 可以用数据泵来导,要块很多。 ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716 
      

  2.   

    程序如果不是调用的oracle命令的话,问题还是出在程序本身。
    比如,插入时所有的表数据没有分批提交(或者一条提交一次),比如建表的时候先建索引后插入我不懂的,只是随便说说。
      

  3.   

    两个用户在一个实例下吗?一个实例的话直接grant权限给另外一个用户,用insert into ... select 就解决了呀
      

  4.   


    你的程序是怎么做的,sql做么
      

  5.   

    通过delphi写代码效率肯定是不高的
    使用exp,imp工具吧
    例如:
    导出user1用户所有对象:
    c:\>exp user1/pass1@tnsname1 file=a.dmp owner=(user1)
    导入到user2用户中
    c:\>imp user1/pass1@tnsname1 file=a.dmp fromuser=(user1) touser=(suer2) ignore=y
    具体可以通过
    c:\>exp -help
    c:\>imp -help
    获得帮助