导入数据到RAC环境时,碰到有如下错误
ORA-31693: 表数据对象 "XXXX"."XXXXX" 无法加载/卸载并且被跳过, 错误如下:
ORA-31640: 无法打开要读取的转储文件 "/XXXXX.DMP"
ORA-19505: 无法识别文件"/XXXXX.DMP"
ORA-27037: 无法获得文件状态
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
看到错误信息后,第一反应是查看目录是否正确,是否有对directory对象授权,检查后发现都正常。
最后是从参数中看出了问题,impdp用了并行。
parallel=16
根据官方文档的说明,默认parallel为1,也即无并行,这时导入操作在一个节点进行,但是如果加了并行后,同时参数 cluster的使用了默认的参数yes,导入操作将在多个节点同时进行。这时,如果dmp文件没有放在共享存储上,那就会出现如上的错误。
Using PARALLEL During An Import In An Oracle RAC Environment. In an Oracle Real Application Clusters (Oracle RAC) environment, if an import operation has PARALLEL=1, then all Data Pump processes reside on the instance where the job is started. Therefore, the directory object can point to local storage for that instance. If the import operation has PARALLEL set to a value greater than 1, then Data Pump processes can reside on instances other than the one where the job was started. Therefore, the directory object must point to shared storage that is accessible by all instances of the Oracle RAC.
CLUSTER=[YES | NO]
To force Data Pump Import to use only the instance where the job is started and to replicate pre-Oracle Database 11g release 2 (11.2) behavior, specify CLUSTER=NO.
解决方案
cluster=no
--End
Mason