ITPub博客

首页 > 数据库 > Oracle > exp和expdp排除部分表

exp和expdp排除部分表

原创 Oracle 作者:dotaddjj 时间:2011-11-15 17:52:07 0 删除 编辑

两种导出工具exp和expdp,数据磊工具确实好用,不管是在性能还是在功能上都比exp等导出工具强大,不过需要在服务器端运行,利用oracle内部的队列和任务job机制,听到很多网友说到如何去除部分表或者部分对象导出,这个如果在expdp中可以很简单的实现。

Expdp ashuang/ashuang@orcl dumpfile=test01.dmp logfile=test01.log exclude=trigger,table:”in(‘SF01’,’SF02’)”

总是出现了所谓的

ora-39001参数值无效

ora-39071 exclude值的格式错误

找了半天还是找不出这个格式哪里写错了,网上收索了下又是该死的转义字符,记得以前写query时就是被转移字符搞得郁闷了。Query=”where item_id like ‘JS092500%’”,难怪大师曾经说到多用parfile来调用了,算了先修改一下吧!

Expdp ashuang/ashuang@orcl dumpfile=test01.dmp logfile=test01.log exclude=trigger,table:”in(‘SF01’,’SF02’)”

然后再次执行ok,其实这里用个parfile是很简单的,参数文件会避免掉复杂的参数转义。

Parfile test01.par的内容

Dumpfile=test01.dmp logfile=test01.log exclude=trigger,table:”in(‘SF01’,’SF02’)”

然后expdp ashuang/ashuang@orcl parfile=d:test01.par

执行顺利。

顺便说下exp的排除部分表吧,由于exp中没有expdp中的exclude参数只能利用脚本tables的列表来排除不需要的表。

Set heading off—这里主要排除了输出域标题,例如column的列名的显示,缺省为on

Set feedback off—这里不输出sql命令结束后处理条数,缺省为on

Spool d:test01.txt

Select 'tables=('||chr(10) from dual;

Select owner||'.'||table_name||chr(10) || ',' from dba_tables where table_name not in ('SF01','SF02');

Select 'dual' from dual;

Spool off

上述的chr(10)是换行符,可以在parfile中正常使用,但是如果单独的复制到命令模式下,则oracle会认为是结束命令而报错。

然后将生成的test01.txt文件的内容复制到parfile文件中。

Parfile text01.par

File=(d:text01.dmp,d:text02.dmp,d:text03.dmp) log=text01.log filesize=512M buffer=10240000 direct=y tables=(

SYS.CON$,

SYS.UNDO$,

SYS.CDEF$,

...

dual)

direct=y直接导出模式,很多网友谈到了buffer和direct的设置,direct=y绕过了sql命令处理层,加快了导出速度。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1056347/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 无事瞎扯
请登录后发表评论 登录
全部评论
  • 博文量
    220
  • 访问量
    1663032