您的位置:首页 > 数据库 > Oracle

Oracle数据库数据文件rm -rf误删除后恢复

2014-05-30 15:00 309 查看
Oracle数据库中表空间的数据文件在基于OS系统级别被rm -rf 删除后,只要数据库在删除后一直未被shutdown,那么就可以手动恢复,恢复的前提是Oracle安装在Linux系统下,下面是一个实例模拟 1. 在数据库open的时候,直接删除users表空间中的数据文件。 SQL select

Oracle数据库中表空间的数据文件在基于OS系统级别被rm -rf 删除后,只要数据库在删除后一直未被shutdown,那么就可以手动恢复,恢复的前提是Oracle安装在Linux系统下,下面是一个实例模拟

1. 在数据库open的时候,直接删除users表空间中的数据文件。

2. 尝试在users表空间中创建表,开始报错。

3. 检查dbwr的进程PID

4. dbwr会打开所有数据文件的句柄。在proc目录中可以查到,目录名是进程PID,fd表示文件描述符。

注意其中“/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf (deleted)”字样,表示该文件已经被删除,如果是Solaris操作系统,ls命令不会有如此清晰的显示,为了在Solaris系统中确认哪个句柄对应哪个文件,则需要使用lsof程序。

5. 直接cp该句柄文件名回原位置。

6. 进行数据文件recover ---------- 在归档模式下

完成数据文件恢复。

在非归档模式下,需要shutdown后,进入mount模式,offline,recover,online,open

恢复的原理是,在Linux操作系统中,如果文件从操作系统级别被rm掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从/proc目录中获得。但是要注意的是,此时如果关闭数据库,则此句柄会消失,那么除了扫描磁盘进行文件恢复之外就没有其它方法了,因此在数据库出现问题的时候,如果不确认情况的复杂程度,千万不要随便关闭数据库。重启数据库往往是没有意义的,甚至是致命的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: