12c数据泵导入报错KUP-11014

将10.2.0.5的一个大表导入到12.1.0.2的时候,
导出参数是:
[oracle10g@testdb tmp]$ cat expdp.par
userid='/ as sysdba'
DIRECTORY=DUMPDIR
dumpfile=mytable_%U.dmp
tables=schema.mytable
logfile=mytable.log
job_name=mytable
parallel=8
filesize=100M

导入参数是:
userid='/ as sysdba'
DIRECTORY=DUMPDIR
dumpfile=mytable_%U.dmp
tables=schema.mytable
logfile=mytable.log
job_name=mytable
parallel=8
content=data_only

报错KUP-11014。
ORA-31693: Table data object "SCHEMA"."MYTABLE" failed to load/unload and is being skipped due to error:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-11011: the following file is not valid for this load operation
KUP-11014: internal metadata in file /home/oracle12c/mytable_02.dmp is not valid
Job "SYS"."MYTABLE" completed with 1 error(s) at Thu May 19 12:55:34 2016 elapsed 0 00:10:03

同样文件导入到11g中没有报错。这是因为12c中一个Bug 20690515引起的(可以详见Doc ID 20690515.8)。

下面我对这个bug稍微解释一下:

1. 触发条件:
在导入多个dump file set(即多个dump file文件)的时候,数据泵如果使用access_method=external_table的方式进行导入(默认情况下12c的access_method值是AUTOMATIC,即自动选择是extenal_table还是direct_path。至于什么时候选择前者什么时候选择后者,可参考Doc ID552424.1),用external_table方式导入期间,会校验每个dump file的xml内容,且与第一个dump file的xml内容做对比。但导入10.x的dump file set的时候,第一个(作为参考的那个)dump file的xml格式被转换成11.1的格式,那么与后面的dump file文件做对比校验的时候,就失败了。

2. 受影响版本:
12.1.0.2

3. 修复版本:
12.2

4. 是否有patch:
有,Patch 20690515 已经存在,有基于12.1.0.2版本的linux x86-64平台,aix平台和solaris SPARC平台。目前linux平台已经下载次数200多。

5. 是否有workaround:
有workaround,设置access_method=direct_path
如果还是报错,再加上table_exists_action=replace

就我来看,这个bug触发需要满足2个条件:
1. 多个dump文件
2. access method自动走了external table,或者强制手工指定了ACCESS_METHOD=EXTERNAL_TABLE。
(3. 可能还和表的大小有关,在某环境测试时300多M的一个表故障不重现,但是增加数据到3.6G,再次测试故障重现。但是目前在mos中没有说明表大小的影响因素。)

我在我的虚拟机测试环境中用来一个500多M的表,分别导成一个大文件和6个小文件:

1. 测试导入一个大文件,且强制使用ACCESS_METHOD=EXTERNAL_TABLE,不会报错:

2. 测试导入多个文件,且强制使用ACCESS_METHOD=EXTERNAL_TABLE,就报错了:

3. 测试导入多个文件,且强制使用ACCESS_METHOD=DIRECT_PATH,也不会报错:

注:以上测试是在从10.2.0.5导出,导入到12.1.0.2;如果从11.2导入到12.1.0.2,也不会有这个问题。考虑到可能有不少用户会从10g升级到12c,建议打上这个bug的补丁。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据