我在2009年Oracle的研讨会的一大亮点是遇到了老胡 。 我觉得有些人一旦遇到,我就一定会和他们成为朋友。老胡 是其中一个。事实证明,我们的确有许多共同的品味和意见
不过他不像我,他是一个geek!他不会希望我这么说,因为他非常谦虚和低调,但他是我见过为数不多的操作水平与我曾一起工作的最好的游戏程序员相同的人。
他是过去我略有所知的DUL工具的开发者。这个工具与Oracle自己的工具,DUL执行类似的工作。它现在已经更名为PRM-DUL – 该工具实现unloading直接抽取数据文件中的数据。
PRM-DUL 等DUL类型的工具是在糟糕的DBA发现了损坏的数据库和备份不足时,尝试数据恢复的最后手段。通过直接从你的数据文件中读取数据(因为数据库是不太可能这个阶段打开),构建包含数据的SQL * Loader兼容数据文件,它提供你恢复的最后机会。最好是能够将数据加载到工作数据库中。这不是替代导出或快速数据unloader,而是一个重要的恢复工具。
我决定帮助老胡 在我的服务器上测试这个工具,因为如果真的需要使用,这能使我更了解它。而且我也对它挺感兴趣。这包括老胡 创建的的一个特定的时限,特定服务器的工具版本,这是购买的一种方式。之后我回过来讲这个。在测试过程中我主要学到的的有:
1)你必须做一些前期的配置。这不难,搞定JDK 然后把所有可获得的数据文件DBF文件都放到准备运行PRM-DUL的服务器上即可。
2)它最适合用Sun的JDK,而不是一些Linux的开源变体。这个问题让我们难倒了好半天 – 反复发送电子邮件,直到老胡 访问到我的服务器,他用一个晚上解决了。他用Java类和我的Linux Java运行时环境不喜欢的like做了一些很聪明的安全性混淆的东西。
3)一旦配置完成就轻而易举了,只要你习惯了所有命令行的结尾加上一个空格和分号。下面是它的外观(注意这一切发生在一个封闭的或损坏的数据库上)
加入所有oracle数据文件,不需要加入临时文件TEMPFILE、UNDO数据文件、控制文件、日志文件
点击load 按钮,PRM会自动加载数据字典 即bootstrap动作
至此 PRM左侧将出现 树形的对象树,选择你需要恢复的用户下的对应数据表, 右击对象后选择 unload deleted data
PRM-DUL 完成对已删除数据的恢复操作后会将 数据写出到 上图中 File path的位置, 示例的数据恢复情况如下:
在www.parnassusdata.com 的网站有更多信息,包括完整的PDF格式的PRM-DUL入门。
多数人在大部分时间不会需要像PRM-DUL这样的工具,但每个DBA都至少应该知道它的存在,以防要用到它。如果你需要的话,有这样几个选项。一个是获得短时间的PRM-DUL的许可证,自己进行恢复。你也让诗檀软件的其他成员为你进行恢复。我现在对它已经有些熟悉,所以我建议在业务需要时用后一种方法。 (话说回来,如果你的业务依赖于不可恢复的数据库,你最好首先要反省为何会处于这样的情况。)老胡是非常聪明的人,他对他的工具和你的数据极其负责。我们在Oracle大会那时,他会工作到深夜帮助不同的时区人来解决问题。我不会详细地谈到成本,但PRM-DUL的方法会比获取Oracle咨询来工作便宜很多。无论如何,我觉得在这些数据库损坏的情况下,这样的成本率合情合理。
强调一下,你可以随时向Oracle咨询请求这项服务,但PRM-DUL是另一种选择。
Comment