在11G的数据库中我们已经可以使用功能更强大的数据泵expdp/impdp进行数据的逻辑导出导入了。
今天要对一个Oracle RAC系统进行数据导出操作,遇到了下面的问题:
. . exported “KINGWOOD”.“INV_ITEM_SUMP” 6.116 GB 21836807 rows
ORA-31693: Table data object “BJLMSJ”.“BIPOS” failed to load/unload and is being skipped due to error:
ORA-31617: unable to open dump file “/u01/dmp_dir/rbdb8_cold_20200415_04.dmp” for write
ORA-19505: failed to identify file “/u01/dmp_dir/rbdb8_cold_20200415_04.dmp”
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-31693: Table data object “BJLMSJ”.“DAY_IO_SUMP” failed to load/unload and is being skipped due to error:
ORA-31617: unable to open dump file “/u01/dmp_dir/rbdb8_cold_20200415_03.dmp” for write
ORA-19505: failed to identify file “/u01/dmp_dir/rbdb8_cold_20200415_03.dmp”
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
从报错上看一直再说 No such file or directory。没有目录?没有权限?经过一系列的检查并没有问题。
报错原因
11GR2后EXPDP 和 IMDP的WORKER进程在设置parallel参数时会在多个INSTANCE启动,所以DIRECTORY必须在共享磁盘上,如果没有设置共享磁盘需要指定参数:cluster=no
来防止报错。
解决办法
既然任务已经开始跑起来了,那么就赶紧crtl + c,退出来吧,但是数据泵后台还会继续运行着,我们需要手动杀掉这个任务
- kiil_job
expdp \' /as sysdba \' attach=SYS_EXPORT_SCHEMA_01
Export> kill_job
Are you sure you wish to stop this job ([yes]/no): yes
- cluster=no
expdp \' /as sysdba \' directory=dmp_dir dumpfile=expdp_20200410_%U.dmp logfile=expdp_20200410.log schemas=XABD,LUOWEN,LMCY,HFSZ,BJFDSD cluster=no parallel=4
之后在执行,一切正常。
BTW:远程并行备份不存在这个问题
expdp + dblink + parallel