open resetlogs何时成了第一招? 唯一一招?

    今天在QQ上遇这样一件事情, 大约是这样的. 一个运行在Linux上的Oracle数据库, 在正常关闭数据库后, 将磁盘从一台机器挂到另一台机器后, 磁盘的顺序发生了变化, 比如/dev/sdb变成了/dev/sdc, /dev/sdc变成了/dev/sdb, 由于这是在正常关闭数据库的情况下做的, 因此只要准确地改变软链接的映射关系(用了磁盘分区方式的裸设备), 是完全可以正常打开的, 结果一个负责安装RAC的公司, 应当是在没有完全搞对映射关系时, 直接进行了open resetlogs操作. 当然这时是启不来的了.

    接下来, 多次open resetlogs失败之后, 用了一个旧的system文件的备份(用dd备份出来的), 再dd回去了, 拷回去后才知道, 因为磁盘空间的问题, 所有的归档日志文件已经被另一队人员干掉了. 最后我让他查了一下v$datafile中的checkpoint_scn#一列, 发现有两个文件的scn号非常小, 从文件名称来看一个是索引一个是数据表空间的, 不知道他们做了什么, 是不是混乱地进行了dd in和dd out了.

    于是我问他是不是有数据库的备份, 他说有, 不过没有拷Redo和Undo文件, 以为它们不重要. 如果这些文件是在错误的open resetlogs之前备份的, 那么数据库肯定是可以直接open的, 只要将undo文件offline drop掉, 并且清一下当前日志组, 结果他说他不知道是在open resetlogs之前的, 还是之后的, 遇到这种程度的人, 真不知道能不能拷对文件, dd可是比较复杂的程序. 晕啊.

    在整个事件中, 我想最严重的是第一次的open resetlogs了, 不知道从哪儿学来的, 如果数据库打不开就进行open resetlogs, 真是一个很坏的习惯.

留言 (2)

我也想去做 Support 了,真好作

11g的Data Recovery Advisor应该能减少一些类似的错误

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • Even if you had given him much more money, he might not have paid off the debt.
  • 就算你给了他更多的钱, 他也还不清债务.
  • What would you have done if you hadn't gone out for a picnic yesterday?
  • 如果你昨天没有出去野餐的话. 你会干什么?
  • I wish I had told him the truth.
  • 我真希望我把真相告诉了他.
  • I wish you hadn't cheated me.
  • 我希望你没有欺骗我.
  • If it had been fine, we would have gone to the park.
  • 如果天气好的话, 我们就去公园了.