oracle 12c資料泵匯入報錯KUP-11014錯誤解決辦法

來源:互聯網
上載者:User

將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個小檔案:

建立測試表,create table test_dmp as select * from dba_objects;
多次insert into test_dmp as select * from test_dmp; 直到資料大約200多萬行,500多M的segment size。
 
然後匯出成一個大檔案和多個小檔案。

[oracle12c@testdb2 dump_12c]$ ls -l
total 889504
-rw-r-----. 1 oracle12c oinstall 455401472 May 19 16:01 bigdump.dmp <==單個大檔案
-rw-r--r--. 1 oracle12c oinstall       173 May 19 16:56 impdp2.par
-rw-r--r--. 1 oracle12c oinstall       145 May 19 17:19 impdp3.par
-rw-r--r--. 1 oracle12c oinstall       171 May 19 17:08 impdp.par
-rw-r-----. 1 oracle12c oinstall 104857600 May 19 15:52 mydump_01.dmp <==多個小檔案
-rw-r-----. 1 oracle12c oinstall 104857600 May 19 15:52 mydump_02.dmp
-rw-r-----. 1 oracle12c oinstall 104857600 May 19 15:52 mydump_03.dmp
-rw-r-----. 1 oracle12c oinstall 104857600 May 19 15:52 mydump_04.dmp
-rw-r-----. 1 oracle12c oinstall  34873344 May 19 15:52 mydump_05.dmp
-rw-r-----. 1 oracle12c oinstall   1118208 May 19 15:52 mydump_06.dmp
-rw-r-----. 1 oracle12c oinstall       677 May 19 17:20 mydump.log
[oracle12c@testdb2 dump_12c]$

1. 測試匯入一個大檔案,且強制使用ACCESS_METHOD=EXTERNAL_TABLE,不會報錯:

[oracle12c@testdb2 dump_12c]$ cat impdp2.par
userid='/ as sysdba'
DIRECTORY=MYDIR
dumpfile=bigdump.dmp
tables=test.test_dmp
logfile=mydump.log
job_name=mydump
parallel=2
content=data_only
ACCESS_METHOD=EXTERNAL_TABLE
 
[oracle12c@testdb2 dump_12c]$
[oracle12c@testdb2 dump_12c]$
[oracle12c@testdb2 dump_12c]$
[oracle12c@testdb2 dump_12c]$
[oracle12c@testdb2 dump_12c]$ impdp parfile=impdp2.par
 
Import: Release 12.1.0.2.0 - Production on Thu May 19 16:57:08 2016
 
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
 
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Master table "SYS"."MYDUMP" successfully loaded/unloaded
Starting "SYS"."MYDUMP":  /******** AS SYSDBA parfile=impdp2.par
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "TEST"."TEST_DMP"                           434.2 MB 5132800 rows
Job "SYS"."MYDUMP" successfully completed at Thu May 19 16:57:26 2016 elapsed 0 00:00:17
 
[oracle12c@testdb2 dump_12c]$

2. 測試匯入多個檔案,且強制使用ACCESS_METHOD=EXTERNAL_TABLE,就報錯了:

[oracle12c@testdb2 dump_12c]$ cat impdp.par
userid='/ as sysdba'
DIRECTORY=MYDIR
dumpfile=mydump_%U.dmp
tables=test.test_dmp
logfile=mydump.log
job_name=mydump
parallel=2
content=data_only
ACCESS_METHOD=EXTERNAL_TABLE
 
[oracle12c@testdb2 dump_12c]$
[oracle12c@testdb2 dump_12c]$ impdp parfile=impdp.par
 
Import: Release 12.1.0.2.0 - Production on Thu May 19 16:55:30 2016
 
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
 
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Master table "SYS"."MYDUMP" successfully loaded/unloaded
Starting "SYS"."MYDUMP":  /******** AS SYSDBA parfile=impdp.par
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
ORA-31693: Table data object "TEST"."TEST_DMP" 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 /tmp/dump_12c/mydump_02.dmp is not valid
Job "SYS"."MYDUMP" completed with 1 error(s) at Thu May 19 16:55:34 2016 elapsed 0 00:00:03
 
[oracle12c@testdb2 dump_12c]$


3. 測試匯入多個檔案,且強制使用ACCESS_METHOD=DIRECT_PATH,也不會報錯:

[oracle12c@testdb2 dump_12c]$ cat impdp.par
userid='/ as sysdba'
DIRECTORY=MYDIR
dumpfile=mydump_%U.dmp
tables=test.test_dmp
logfile=mydump.log
job_name=mydump
parallel=2
content=data_only
ACCESS_METHOD=DIRECT_PATH
 
[oracle12c@testdb2 dump_12c]$ impdp parfile=impdp.par
 
Import: Release 12.1.0.2.0 - Production on Thu May 19 17:08:12 2016
 
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
 
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Master table "SYS"."MYDUMP" successfully loaded/unloaded
Starting "SYS"."MYDUMP":  /******** AS SYSDBA parfile=impdp.par
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "TEST"."TEST_DMP"                           434.2 MB 5132800 rows
Job "SYS"."MYDUMP" successfully completed at Thu May 19 17:08:31 2016 elapsed 0 00:00:17
 
[oracle12c@testdb2 dump_12c]$

註:以上測試是在從10.2.0.5匯出,匯入到12.1.0.2;如果從11.2匯入到12.1.0.2,也不會有這個問題。考慮到可能有不少使用者會從10g升級到12c,建議打上這個bug的補丁。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.