代码改变世界

impdp 导入时报 ORA-39183 及 ORA-07445

2020-09-04 16:11  dba+  阅读(1333)  评论(0编辑  收藏  举报

使用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.1Doc 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)