Linux使用rm删除了数据库文件如何恢复

发布时间:2017-03-17 15:21

我们都知道Linux中的rm命令可用来删除文件,且删除的文件难以恢复,可是不小心删除了数据库文件,有没有办法恢复呢?别急,下面小编给大家介绍下Linux如何恢复rm删除的数据库文件,一起来了解下吧。

1.首先测试rm 误删除数据库文件

[oracle@primary dbwdn]$ ll

total 2153164

-rw-r----- 1 oracle dba 8536064 Nov 27 21:50 control01.ctl

-rw-r----- 1 oracle dba 8536064 Nov 27 21:50 control02.ctl

-rw-r----- 1 oracle dba 8536064 Nov 27 21:50 control03.ctl

-rw-r----- 1 oracle dba 104865792 Nov 27 21:32 ggs01.dbf

-rw-r----- 1 oracle dba 525344768 Nov 27 21:32 perfstat.dbf

-rw-r----- 1 oracle dba 52429312 Nov 27 21:10 redo01.log

-rw-r----- 1 oracle dba 52429312 Nov 27 21:49 redo02.log

-rw-r----- 1 oracle dba 52429312 Nov 27 21:10 redo03.log

-rw-r----- 1 oracle dba 10493952 Nov 27 21:32 shkz_data_01.dbf

-rw-r----- 1 oracle dba 524296192 Nov 27 21:49 sysaux01.dbf

-rw-r----- 1 oracle dba 524296192 Nov 27 21:49 system01.dbf

-rw-r----- 1 oracle dba 209723392 Nov 18 10:54 temp01.dbf

-rw-r----- 1 oracle dba 52436992 Nov 27 21:32 test01.dbf

-rw-r----- 1 oracle dba 251666432 Nov 27 21:49 undotbs01.dbf

-rw-r----- 1 oracle dba 26222592 Nov 27 21:32 users01.dbf

[oracle@primary dbwdn]$ rm test01.dbf

Linux使用rm删除了数据库文件如何恢复

2.找到数据库后台进程dbw0

oracle 3493 1 0 21:10 ? 00:00:00 ora_dbw0_dbwdn

进程号3493

3.找到被误删除的数据库文件

[oracle@primary dbwdn]$ ll /proc/3493/fd

total 0

lr-x------ 1 oracle oinstall 64 Nov 27 21:52 0 -》 /dev/null

lr-x------ 1 oracle oinstall 64 Nov 27 21:52 1 -》 /dev/null

lr-x------ 1 oracle oinstall 64 Nov 27 21:52 10 -》 /dev/zero

lr-x------ 1 oracle oinstall 64 Nov 27 21:52 11 -》 /dev/zero

lr-x------ 1 oracle oinstall 64 Nov 27 21:52 12 -》 /u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 13 -》 /u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 14 -》 /u01/app/oracle/product/10.2.0/db_1/dbs/lkDBWDN

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 15 -》 /u01/app/oracle/oradata/dbwdn/control01.ctl

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 16 -》 /u01/app/oracle/oradata/dbwdn/control02.ctl

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 17 -》 /u01/app/oracle/oradata/dbwdn/control03.ctl

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 18 -》 /u01/app/oracle/oradata/dbwdn/system01.dbf

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 19 -》 /u01/app/oracle/oradata/dbwdn/undotbs01.dbf

lr-x------ 1 oracle oinstall 64 Nov 27 21:52 2 -》 /dev/null

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 20 -》 /u01/app/oracle/oradata/dbwdn/sysaux01.dbf

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 21 -》 /u01/app/oracle/oradata/dbwdn/users01.dbf

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 22 -》 /u01/app/oracle/oradata/dbwdn/test01.dbf (deleted)

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 23 -》 /u01/app/oracle/oradata/dbwdn/ggs01.dbf

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 24 -》 /u01/app/oracle/oradata/dbwdn/perfstat.dbf

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 25 -》 /u01/app/oracle/oradata/dbwdn/shkz_data_01.dbf

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 26 -》 /u01/app/oracle/oradata/dbwdn/temp01.dbf

lr-x------ 1 oracle oinstall 64 Nov 27 21:52 27 -》 /u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb

lr-x------ 1 oracle oinstall 64 Nov 27 21:52 3 -》 /dev/null

lr-x------ 1 oracle oinstall 64 Nov 27 21:52 4 -》 /dev/null

l-wx------ 1 oracle oinstall 64 Nov 27 21:52 5 -》 /u01/app/oracle/admin/dbwdn/udump/dbwdn_ora_3485.trc

l-wx------ 1 oracle oinstall 64 Nov 27 21:52 6 -》 /u01/app/oracle/admin/dbwdn/bdump/alert_dbwdn.log

lrwx------ 1 oracle oinstall 64 Nov 27 21:52 7 -》 /u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat

l-wx------ 1 oracle oinstall 64 Nov 27 21:52 8 -》 /u01/app/oracle/admin/dbwdn/bdump/alert_dbwdn.log

误删除之后,数据库没有重启,系统也没用重启

4.拷贝数据库文件

[oracle@primary ~]$ cp /proc/3493/fd/22 /u01/app/oracle/oradata/dbwdn/test01.dbf

[oracle@primary ~]$ cd /u01/app/oracle/oradata/dbwdn

[oracle@primary dbwdn]$ ls

control01.ctl control03.ctl perfstat.dbf redo02.log shkz_data_01.dbf system01.dbf test01.dbf users01.dbf

control02.ctl ggs01.dbf redo01.log redo03.log sysaux01.dbf temp01.dbf undotbs01.dbf

数据库文件找回来了。

5.恢复数据库文件

[oracle@primary dbwdn]$ sqlplus “/as sysdba”

SQL*Plus: Release 10.2.0.5.0 - Production on Tue Nov 27 21:55:15 2012

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL》 alter database datafile 5 offline;

Database altered.

SQL》 recover datafile 5;

Media recovery complete.

SQL》 alter database datafile 5 online;

Database altered.

SQL》 shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL》 startup

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1273276 bytes

Variable Size 130024004 bytes

Database Buffers 150994944 bytes

Redo Buffers 2920448 bytes

Database mounted.

Database opened.

SQL》

Linux使用rm删除了数据库文件如何恢复的评论条评论