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(满)
获致幸福的不二法门是珍视你所拥有的遗忘你所没有的