环境说明:linux 64 +ORACLE 11GR2三节点集群
expdp对应par文件如下
DUMPFILE=ZJN_%U.dmp
LOGFILE=zjn.log
DIRECTORY=zjn
COMPRESSION=ALL
PARALLEL=10
FILESIZE=30G
INCLUDE=TABLE
LOGFILE=zjn.log
DIRECTORY=zjn
COMPRESSION=ALL
PARALLEL=10
FILESIZE=30G
INCLUDE=TABLE
SCHEMAS=zjn
执行以下命令导出后报错
expdp \' / as sysdba \' parfile=zjn.par
错误信息如下
ORA-31693: Table data object "ZJN"."T_SJZH_GISOID2PMSOID" failed to load/unload and is being skipped due to error:
ORA-31617: unable to open dump file "/home/oracle/ZJN_02.dmp" for write
ORA-19505: failed to identify file "/home/oracle/ZJN_02.dmp"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
ORA-31617: unable to open dump file "/home/oracle/ZJN_02.dmp" for write
ORA-19505: failed to identify file "/home/oracle/ZJN_02.dmp"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
经搜索得到以下答案:
数据泵的并行度设置为10,同时向10个DUMPFILE中写入数据。在写入时出现ORA-31693、ORA-19505和ORA-31617错误。
发现对于RAC环境而言,Oracle会尝试将并行导出放到两个节点上,而由于DIRECTORY是本地磁盘,且在另外一个节点上没有建立同样的目录,因此打开文件报错的信息。
那么如果想要使用RAC上的并行导出,确保相同的目录在两个节点上同时存在。如果只想在一个节点上执行数据泵的导出那么就不要使用并行方式。
经检查其他节点存在相应目录,而且需导出的文件较大:1TB左右,不使用并行非常慢
在par文件中添加一行后,可以在一个节点上并行执行导出
CLUSTER=N
该参数解释如下:
Utilize cluster resources and distribute workers across the Oracle RAC.Valid keyword values are: [Y] and N.
利用集群资源,在Oracle RAC上分发工作。可能的值是Y和N,默认是Y.
该参数在10g版本不存在,在10g版本下使用并行则directory必须指定在共享文件系统下