expdp文件split再cat后impdp

来源:互联网 发布:淘宝pos机突然不能买了 编辑:程序博客网 时间:2024/06/04 19:55

       今天在Maclean的oracle群里看到有个家伙说,expdp 的文件split 再cat 之后 导不进数据库,下面是我的实验结果

注:数据库的用户名是demo_ls 只有一张表  总的大小不超过1M

$sqlplus / as sysdba

建目录,为数据泵导出

SQL>create directory dmpdir as '/oracle/dmp';

SQL> grant read on directory dmpdir to demo_ls;

数据泵导出

$expdp demo_ls DUMPFILE=expdpdemo.dmp directory=dmpdir schemas=demo_ls;

分割

$split -b 330k expdpdemo.dmp expdpdemo_

此时可以看到在/oracle/dmp目录有多个文件如expdpdemo_a*

合并

$cat expdpdemo_* > expdpdemo_new.dmp

再导入数据库

$./impdp crmii/abs directory=dmpdir dumpfile=expdpdemo_new.dmp table_exists_action=replace 

- - relpace 表示当表存在时,先drop,再create。

    还有三个选项,分别是 skip(default),append   追加数据   truncate  先清空表,再插入数据


导入时有一个错误,是用户名demo_ls已存在,先删除用户 drop user demo_ls cascade 再impdp 完全没问题。


另外再试expdp/impdp之前也试了exp/imp,分割再分离,也没有问题。


由于数据量较小,测试可能不充分,但我想在大数据量下,这么分割再合并是没有问题


再试了一次,把一个10G左右的库expdp(不到10分钟),分割,再合并,发现与原文件的大小一样,

$diff -c crmii.dmp crmii_new.dmp

两则没有不同之处,所以分割再合并之后,可以正常导入


原创粉丝点击