Linux 平台下 误删 oracle 数据文件的恢复方法

1 问题描述

之前写过一篇删除oracle home目录的blog,,参考:

User created.

SQL>

oracle9964 1 0 00:49 ? 00:00:03 ora_dbw0_dave

[oracle@dg1 trace]$ cd /proc/9964/fd

[oracle@dg1 fd]$ ls -l

这里的259 就是我们删掉的数据文件。

[oracle@dg1 u01]$ ls -la/u01/dropspace01.dbf

-rw-r—– 1 oracle oinstall 104865792 Aug27 21:41 /u01/dropspace01.dbf

//重启数据库:

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 814227456 bytes

Fixed Size 2232760 bytes

Variable Size 490737224 bytes

Database Buffers 318767104 bytes

Redo Buffers 2490368 bytes

Database mounted.

Database opened.

SQL>

也正常。 这里有2个注意的问题:数据库是归档模式,数据库或者操作系统没有重启。这2点非常关键。 也正式如此,才让操作比较简单。

如果是非归档模式,那就要复杂很多了。

在非归档模式下,如果删除了数据文件,并且又触发了CKPT,那么CKPT 会直接把整个实例中断掉,也就是说,如果是比较繁忙的数据库,如果误删除数据文件,实例可能会中断,一旦实例中断,那么用之前讲的通过句柄恢复就没有可能性了。

当然也有另一种可能性,就是删除数据文件之后,可以先通过句柄恢复,然后用expdp导出数据,尽可能的挽救部分数据。 这个动作就是与时间赛跑的过程了。

总之生产环境,操作一定要小心,还有要开归档,除非数据允许丢失。

——————————————————————————————–

版权所有,文章禁止转载,否则追究法律责任!

AboutDave:

——————————————————————————————–

QQ: 251097186

Email: tianlesoftware@gmail.com

Blog:

Weibo:

Twitter:

Facebook:

Linkedin:

Dave 的QQ群:

——————————————————————————————–

注意:加群必须注明表空间和数据文件关系 | 不要重复加群

CNDBA_1: 62697850 (空) CNDBA_2: 62697716 (满)CNDBA_3: 283816689

CNDBA_4: 391125754 CNDBA_5:104207940 CNDBA_6: 62697977 CNDBA_7: 142216823(满)

获致幸福的不二法门是珍视你所拥有的遗忘你所没有的

Linux 平台下 误删 oracle 数据文件的恢复方法

相关文章:

你感兴趣的文章:

标签云: