前一段时间帮一个朋友的朋友恢复了一个损坏的dmp文件,大概100多个G,记录一下恢复过程并简单总结一下
一、描述
这个dmp文件是从一个Oracle 9i的数据库上exp出来的,在导入Oracle 11g版本的时候,可能会随机出现两类错误,如下
(1)dmp文件导入的时候,一直停留在某张表上不动,两三天都是这样,导入操作无法进行,如下
导入了 0 行
. . 正在导入表 "D_xxxxxx"
. . 正在导入表 "D_xxxxx2"
导入了 0 行
. . 正在导入表 "D_xxxxx3"
...........................................................................
...........................................................................
导入了 246844 行
. . 正在导入表 "D_xxxx4"
导入了 0 行
. . 正在导入表 "D_xxx5"
...........................................................................
...........................................................................
导入操作一直停留在D_xxx5表上,几天都是一样
注意:其中表名已经被模糊化掉
(2)dmp文件导入的时候,在进行到某张表的时候,出现错误,如下
IMP-00058:遇到ORACLE 错误 1403
ORA-01403:未找到任何数据
Oracle教程:实例故障恢复
Linux-6-64下安装Oracle 12C笔记
在CentOS 6.4下安装Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虚拟机中安装步骤
Debian 下 安装 Oracle 11g XE R2
二、分析
(1)刚接手的时候,由于dmp文件的结构是“表结构+数据”循环这种方式保存,因此一般在一个表导入hang住的时候,很难抽取dmp文件后续部分的内容,但是我还是保存一丝侥幸心理,尝试导出dmp文件中的表结构内容