将查询的数据导出来_生产RAC数据库expdp导出报错?原来是并行度设置问题

概述

先说一下背景,最近在对某个RAC数据库做瘦身,需要对历史数据做迁移,当在RAC数据库执行EXPDP并行导出时出现了这个错误信息--ORA-31617,下面记录下解决的整体思路。


具体报错

导出的命令如下:

expdp rfuser/"xxx" directory=dp_hwb dumpfile=TAB_SP_OTMSHIPMENT.dmp LOGFILE=TAB_SP_OTMSHIPMENT.log TABLES=TAB_SP_OTMSHIPMENT QUERY=TAB_SP_OTMSHIPMENT:"WHERE INSERT_TIME<= TO_DATE('20181230 00:00:00','yyyymmdd hh24:mi:ss')" exclude=statistics parallel=4 
1ce1ff1292969406b62bc22ae3d3c7f5.png

从提示看一开始以为是权限问题,但是重新授权后还是有这个报错。查了下资料才发现是:

数据泵的并行度设置为4,同时向4个DUMPFILE中写入数据。在写入时出现ORA-31693、ORA-29913和ORA-31617错误。


解决

这里发现对于RAC环境而言,Oracle会尝试将并行导出放到两个节点上,而由于DIRECTORY是本地磁盘,且在另外一个节点上没有建立同样的目录,因此打开文件报错的信息。

那么如果想要使用RAC上的并行导出,确保相同的目录在两个节点上同时存在。如果只想在一个节点上执行数据泵的导出那么就不要使用并行方式。

去掉并行参数测试:

 expdp rfuser/"xxx" directory=dp_hwb dumpfile=TAB_SP_OTMSHIPMENT.dmp LOGFILE=TAB_SP_OTMSHIPMENT.log TABLES=TAB_SP_OTMSHIPMENT QUERY=TAB_SP_OTMSHIPMENT:"WHERE INSERT_TIME<= TO_DATE('20181230 00:00:00','yyyymmdd hh24:mi:ss')" exclude=statistics 
c1c688c1b17956be77d8dad9a44a3cc1.png

可以看到成功导出来了。

31f0635adbabe6d2ba0255b4560216af.png

这里主要提个醒,parallel虽然能加快速度,但在有些场景还是得慎用的。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

6e5015b6a7ca5f5bfc335afac08b1bdb.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值