exp和expdp排除部分表

两种导出工具expexpdp,数据磊工具确实好用,不管是在性能还是在功能上都比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

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

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

Parfile text01.par

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

SYS.CON$,

SYS.UNDO$,

SYS.CDEF$,

...

dual)

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

[@more@]

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

转载于:http://blog.itpub.net/25362835/viewspace-1056347/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值