数据库 频道

从误删文件说说数据库的DRA

  数据文件被误删怎么办?

  各种数据库都有对误删除文件都有一定的处理方式。今天说说Oracle的DRA。这个不是新技术,但是其实知道的人我估计不多。当年是考OCP的时候学习到的。那时候是11G,这个版本是2007年发布的。所以说不是新东西。但是即使这是OCP中必考的,但依然很多人不知道。

  说句实话我也是在考试中学习,生产环境中没有用过。就像一般的备份,大家也几乎很少用到一样。只能说运气好,工作以来从来没让我去用备份恢复过生产。而这个DRA技术也是一直停留在实验环境中。

  看看这个恢复是多么的简单

  在有备份的前提下,把系统的文件删除了。从图中看到,被恶意删除了sysaux的文件。

  然后再数据库重启后,发现是无法启动的。而且还是PDB的场景。

  数据库在 mount 模式下连接 rman

  下面凸显一下数据恢复的三部曲。连接RMAN (虽然是PDB的文件被删除,但是做这个步骤还是要连接到CDB下)

  第一步查看失败的原因。list failure;

  第二步看看给的建议 advise failure;

  最后一句说你可以看看/u01/app/oracle/diag/rdbms/oracle/oracle/hm/reco_1849786963.hm这里。我都把建议放在这里了。如果你愿意看就是这样的。里面写了应该执行的命令。你可以直接复制执行。

  第三步自己修吧。repair failure;如果你不想复制,或者不知道怎么执行。那么直接repair failure;数据库都给你打包好了。他给你执行。结果如下,就是执行完成。

  最后只要把数据库打开就好了。就是如此简单。就像把大象装冰箱一样,一共分三步。

  list failure;

      advise failure;

      repair failure;

  这大大简化了恢复的难度。

  其实我就一直不明白一点,话说这三步是人工做的。如果说启动失败的话,数据库自己做是不是也可以呢?(即如果发生了类似上面的删除,在有备份的情况下数据库启动时候自动修复。)这个想法在2007年我是没有敢想,如今这个时代下,有点感想。有时候有些旧知识在新时候是不是能扩展一下?

  还有就是在本世纪初的时候(我是从11G开始考的,这个是在9i还是10G有这个功能的我没去查过)。那时候Oracle就已经做到了误删数据按自动化三部曲,从内心还是非常佩服的。

0
相关文章