使用impdp導入數據的時候報ORA-39183 及 ORA-07445錯誤導致導入失敗。一般導入失敗,都會有一個trc的文件,檢查trc如下:並沒有什么有用的信息。
*** 2020-09-01 15:03:49.657
*** SESSION ID:(99.1) 2020-09-01 15:03:49.657
*** CLIENT ID:() 2020-09-01 15:03:49.657
*** SERVICE NAME:(SYS$BACKGROUND) 2020-09-01 15:03:49.657
*** MODULE NAME:(Data Pump Worker) 2020-09-01 15:03:49.657
*** ACTION NAME:(SYS_IMPORT_SCHEMA_01) 2020-09-01 15:03:49.657 Dump continued from file: /......../......_dw03_8237.trc ORA-07445: 出現異常錯誤: 核心轉儲 [ksfd_process_contio_completion()+206] [SIGSEGV] [ADDR:0x0] [PC:0x1C2DC4C] [SI_KERNEL(general_protection)] [] ORA-39183: 出現內部錯誤 -16 (在解壓縮階段 2) ========= Dump for incident 20713 (ORA 7445 [ksfd_process_contio_completion()+206]) ========
----- Beginning of Customized Incident Dump(s) ----- Exception [type: SIGSEGV, SI_KERNEL(general_protection)] [ADDR:0x0] [PC:0x1C2DC4C, ksfd_process_contio_completion()+206] [flags: 0x0, count: 1] Registers: %rax: 0x6d6d6d6d6d6d6d6d %rbx: 0x0000000000000001 %rcx: 0x0000000000000001
%rdx: 0x0000000000000001 %rdi: 0x00007fcc5547fff0 %rsi: 0x00007fcc5547fff0
%rsp: 0x00007fff2a730950 %rbp: 0x00007fff2a730a30 %r8: 0x00007fcc55480150
%r9: 0x0000000000000000 %r10: 0x0000000000000000 %r11: 0x0000000000000000
%r12: 0x0000000000000000 %r13: 0x6d6d6d6d6d6d6d6d %r14: 0x00007fcc55480150
%r15: 0x00007fcc5547fff0 %rip: 0x0000000001c2dc4c %efl: 0x0000000000010202
> (0x1c2dc4c) mov 0x0(%r13),%r15 (0x1c2dc50) xor %edx,%edx (0x1c2dc52) cmp %r14,%r15 (0x1c2dc55) cmove %rdx,%r15 (0x1c2dc59) lea -0x160(%r13),%r14
查詢MOS,發現有兩篇文章(Doc ID 1524577.1和Doc ID 2092469.1)都說要檢查dmp文件的有效性,這個dump文件是從生產環境備份后拷貝到測試環境上的,但是比較遺憾,生產環境的dump文件已經刪除了,如果沒有刪除,可以使用md5sum校驗一下即可。
數據泵還提供一種文件有效性的校驗,在impdp導入的時候使用sqlfile參數(注意,會用該參數的時候不能使用並行參數),使用該參數后並不會真正的導入,而是會將所有的建表語句等寫入到sqlfile文件。但是比較奇怪的是校驗后發現也正常,沒有問題。
想起之前遇到過一個案例:物理機壓縮備份后到虛擬機導入時會直接報錯,MOS也有一篇文章說明這個問題(Doc ID 1102503.1),檢查生產環境的備份語句,果然有壓縮。
重新備份,不使用壓縮,正常導入:
總結:
1、偶爾,開啟壓縮備份后到其他服務器上恢復可能會直接報錯,不實用壓縮備份就好。我遇到兩次,都是從物理備份后恢復到虛擬機。具體原因沒有深入研究。
2、可以使用sqlfile參數校驗備份文件的有效性。如果經過傳輸,最好使用md5sum對文件進行驗證。
參考文檔
Getting Fatal Error On DataPump Import (IMPDPD) Of A Dump With Data Compression
(Doc ID 1102503.1)

DataPump Import Errors ORA-39183 Internal Error -19 Ocurred During Decompression Phase 2 ORA-6512
(Doc ID 1524577.1)


Data Pump Import (IMPDP) Fails With Error: ORA-39183: internal error -19 ocurred during decompression phase 2
(Doc ID 2092469.1)
