Oracle dmp文件损坏如何恢复其中的数据

在某些情况下,如果没有物理备份,只要逻辑的导出备份,需要进行恢复时,发现dmp文件又损坏了,通常来讲是比较悲剧的。我们可以通过dul 进行文件扫描并抽取其中的数据以实现数据恢复的目的。这些我们的测试过程:
##### 测试DUL是否支持抽取exp的dmp

当使用scan dump file扫描完exp的dmp文件之后,最后是讲scan的数据输出到文件,方便查看,然后可以直接抽取我们需要的表,如下:

使用unexp命令抽取之后,最后需会产生2个文件,其中是一个sqlldr的ctl文件,最后我们通过sqlldr讲数据加载到数据库即可。如下:

当测试完DUL的exp dmp支持之后,我比较好奇是否会支持expdp呢? 如下是测试过程!

###### 测试DUL是否支持expdp

下面我们来测试,Oracle DUL是否支持expdp的dmp文件的抽取。
++++使用unpump命令查看dmp文件头信息

这里需要注意的是,scan的结果有10条,表示这个expdp的dmp文件中包含了10个表的内容,如果我只想抽取之前的一个表怎么办呢? 可以结合expdp的日志来进行判断,或者利用strings来确认。

这里假设我想抽取第一个表的数据:

上面的结果中,最为关键的一行是:Table data from 94872 until 77916680
根据这行结果,我们知道该表的offset为94872到 77916680,因此下面根据偏移量来抽取该表的数据:

我们可以看到,目前DUL 算是比较完美的支持了exp和expdp 的dmp。(我测试过程中遇到了一些其他的状况,这里不描述了)。

发表评论

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