要从另一个地方的oracle 10g数据库中把数据导到我们现在办公的地方(也是oracle 10g),43个表,数据文件大概8-10G,怎么导最快?还有删除数据,表里面一般都是百万数据,最多的是7亿多条,直接删的话是会报错的,除了用循环控制删除外,还有没好的办法?

解决方案 »

  1.   

    我们项目数据也很多(多的几千万),但是没有上亿这么多。。移动数据的办法:1.exp tables= file= log=.log STATISTICS=NONE CONSISTENT=Y DIRECT=Y RECORDLENGTH=65535
    2.truncate table
    3.imp TABLES= file=.dmp log=.log fromuser= touser= ignore=y recordlength=65535 statistics=none indexes=n grants=n constraints=n commit=y估计效率应该很差,没什么用学习中
      

  2.   

    exp和imp是很慢,我们用impdp导,代码impdp ss/jj@js TABLES=... DIRECTORY=ss_dir NETWORK_LINK=sslink DUMPFILE=ss.dmp LOGFILE=impdpss.log,dir和link都是创建好的,权限也赋了,但是一直报错,说命令无效、link连不过去,但我们用这个link查询是有结果的
      

  3.   

    大表imp时最好把索引和主键约束先删除掉,导入后再重建。exp时可以设置合适的buffer值,imp是设置合适的buffer值,并且设置commit=y。
      

  4.   

    考虑impdp
    但是问题是你的备份也是expdp导出imp导入加快的话
    导出的时候直接导入
    不建约束或者索引
    加大buffer,comit=y
    临时加大undo表空间
    删除大表
    要看是哪种情况
    一般也就是分批删除
    也可以利用虚基表
    或者临时表作辅助