服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - linux rm误删除数据库文件的恢复方法

linux rm误删除数据库文件的恢复方法

2019-12-01 16:50Linux教程网 Linux

在linux redhat 5.4版本,rm误删除数据库文件的恢复过程如下,网上找的,测试过OK

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 

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> 

成功恢复数据库 

注:如果数据库重启之后,还能恢复吗,测试一下: 

[oracle@primary dbwdn]$ rm users01.dbf[oracle@primary dbwdn]$ ps -ef |grep dbw0 
oracle 3798 1 0 21:56 ? 00:00:00 ora_dbw0_dbwdn 
oracle 4147 3439 0 22:07 pts/1 00:00:00 grep dbw0 
[oracle@primary dbwdn]$ ll /proc/3798/fd 
total 0 
lr-x------ 1 oracle oinstall 64 Nov 27 22:07 0 -> /dev/null 
lr-x------ 1 oracle oinstall 64 Nov 27 22:07 1 -> /dev/null 
lr-x------ 1 oracle oinstall 64 Nov 27 22:07 10 -> /dev/zero 
lr-x------ 1 oracle oinstall 64 Nov 27 22:07 11 -> /dev/zero 
lr-x------ 1 oracle oinstall 64 Nov 27 22:07 12 -> /u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 13 -> /u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 14 -> /u01/app/oracle/product/10.2.0/db_1/dbs/lkDBWDN 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 15 -> /u01/app/oracle/oradata/dbwdn/control01.ctl 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 16 -> /u01/app/oracle/oradata/dbwdn/control02.ctl 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 17 -> /u01/app/oracle/oradata/dbwdn/control03.ctl 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 18 -> /u01/app/oracle/oradata/dbwdn/system01.dbf 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 19 -> /u01/app/oracle/oradata/dbwdn/undotbs01.dbf 
lr-x------ 1 oracle oinstall 64 Nov 27 22:07 2 -> /dev/null 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 20 -> /u01/app/oracle/oradata/dbwdn/sysaux01.dbf 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 21 -> /u01/app/oracle/oradata/dbwdn/users01.dbf (deleted)lrwx------ 1 oracle oinstall 64 Nov 27 22:07 22 -> /u01/app/oracle/oradata/dbwdn/test01.dbf 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 23 -> /u01/app/oracle/oradata/dbwdn/ggs01.dbf 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 24 -> /u01/app/oracle/oradata/dbwdn/perfstat.dbf 
lrwx------ 1 oracle oinstall 64 Nov 27 22:07 25 -> /u01/app/oracle/oradata/dbwdn/shkz_data_01.dbf 

数据库没有重启,这个数据文件还能恢复,如果我重启数据库之后,还能看见这个数据文件吗? 

[oracle@primary dbwdn]$ sqlplus "/as sysdba" 
SQL*Plus: Release 10.2.0.5.0 - Production on Tue Nov 27 22:08:01 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> shutdown immediate; 
ORA-01116: error in opening database file 4 
ORA-01110: data file 4: '/u01/app/oracle/oradata/dbwdn/users01.dbf' 
ORA-27041: unable to open file 
Linux Error: 2: No such file or directory 
Additional information: 3 
SQL> shutdown abort;ORACLE instance shut down. 
SQL> exit 
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 
[oracle@primary dbwdn]$ sqlplus "/as sysdba" 
SQL*Plus: Release 10.2.0.5.0 - Production on Tue Nov 27 22:08:19 2012 
Copyright (c) 1982, 2010, Oracle. All Rights Reserved. 
Connected to an idle instance. 
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. 
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file 
ORA-01110: data file 4: '/u01/app/oracle/oradata/dbwdn/users01.dbf' 

SQL> exit 
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 
[oracle@primary dbwdn]$ ll /proc/3798/fd 
ls: /proc/3798/fd: No such file or directory 
[oracle@primary dbwdn]$ ps -ef |grep dbw0 
oracle 4160 1 0 22:08 ? 00:00:00 ora_dbw0_dbwdn 
oracle 4193 3439 0 22:09 pts/1 00:00:00 grep dbw0 
[oracle@primary dbwdn]$ ll /proc/4160/fd 
total 0 
lr-x------ 1 oracle oinstall 64 Nov 27 22:09 0 -> /dev/null 
lr-x------ 1 oracle oinstall 64 Nov 27 22:09 1 -> /dev/null 
lr-x------ 1 oracle oinstall 64 Nov 27 22:09 10 -> /dev/zero 
lr-x------ 1 oracle oinstall 64 Nov 27 22:09 11 -> /dev/zero 
lr-x------ 1 oracle oinstall 64 Nov 27 22:09 12 -> /u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb 
lrwx------ 1 oracle oinstall 64 Nov 27 22:09 13 -> /u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat 
lrwx------ 1 oracle oinstall 64 Nov 27 22:09 14 -> /u01/app/oracle/product/10.2.0/db_1/dbs/lkDBWDN 
lrwx------ 1 oracle oinstall 64 Nov 27 22:09 15 -> /u01/app/oracle/oradata/dbwdn/control01.ctl 
lrwx------ 1 oracle oinstall 64 Nov 27 22:09 16 -> /u01/app/oracle/oradata/dbwdn/control02.ctl 
lrwx------ 1 oracle oinstall 64 Nov 27 22:09 17 -> /u01/app/oracle/oradata/dbwdn/control03.ctl 
l-wx------ 1 oracle oinstall 64 Nov 27 22:09 2 -> /u01/app/oracle/admin/dbwdn/bdump/dbwdn_dbw0_4160.trc 
lr-x------ 1 oracle oinstall 64 Nov 27 22:09 3 -> /dev/null 
lr-x------ 1 oracle oinstall 64 Nov 27 22:09 4 -> /dev/null 
l-wx------ 1 oracle oinstall 64 Nov 27 22:09 5 -> /u01/app/oracle/admin/dbwdn/udump/dbwdn_ora_4152.trc 
l-wx------ 1 oracle oinstall 64 Nov 27 22:09 6 -> /u01/app/oracle/admin/dbwdn/bdump/alert_dbwdn.log 
lrwx------ 1 oracle oinstall 64 Nov 27 22:09 7 -> /u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat 
l-wx------ 1 oracle oinstall 64 Nov 27 22:09 8 -> /u01/app/oracle/admin/dbwdn/bdump/alert_dbwdn.log 
lrwx------ 1 oracle oinstall 64 Nov 27 22:09 9 -> /u01/app/oracle/product/10.2.0/db_1/dbs/lkinstdbwdn (deleted) 
[oracle@primary dbwdn]$ 

已经没法恢复了。 
说明需要注意的是,rm误删除文件之后,千万不要慌张,稳住神,不要重启数据库,不要重启动系统。 
AIX系统,我没有测试过。 
使用备份集恢复上面的数据库文件: 

[oracle@primary dbwdn]$ rman target / 
Recovery Manager: Release 10.2.0.5.0 - Production on Tue Nov 27 22:13:45 2012 
Copyright (c) 1982, 2007, Oracle. All rights reserved. 
connected to target database (not started) 
RMAN> startup nomount; 
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 
RMAN> alter database mount; 
using target database control file instead of recovery catalog 
database mounted 
RMAN> run 
2> { 
3> allocate channel t1 type to disk; 
RMAN-00571: =========================================================== 
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== 
RMAN-00571: =========================================================== 
RMAN-00558: error encountered while parsing input commands 
RMAN-01009: syntax error: found "to": expecting one of: "double-quoted-string, disk, equal, identifier, single-quoted-string" 
RMAN-01007: at line 3 column 26 file: standard input 
RMAN> run 
2> { 
3> allocate channel t1 device type disk; 
4> restore datafile 4; 
5> recover datafile 4; 
6> release channel t1; 
7> } 
allocated channel: t1 
channel t1: sid=156 devtype=DISK 
Starting restore at 27-NOV-2012 22:16:26 
channel t1: starting datafile backupset restore 
channel t1: specifying datafile(s) to restore from backup set 
restoring datafile 00004 to /u01/app/oracle/oradata/dbwdn/users01.dbf 
channel t1: reading from backup piece /u01/bak/03nrctnp_1_1.bak 
channel t1: restored backup piece 1 
piece handle=/u01/bak/03nrctnp_1_1.bak tag=TAG20121127T213241 
channel t1: restore complete, elapsed time: 00:00:04 
Finished restore at 27-NOV-2012 22:16:30 
Starting recover at 27-NOV-2012 22:16:30 
starting media recovery 
media recovery complete, elapsed time: 00:00:01 
Finished recover at 27-NOV-2012 22:16:31 
released channel: t1 
RMAN> alter database open; 
database opened 
RMAN> 

Windows下数据恢复(把回收站清空后的恢复方法): 

步骤: 
1、单击“开始——运行,然后输入regedit (打开注册表) 
2、依次展开:HEKEY——LOCAL——MACHIME/SOFTWARE/microsoft/WINDOWS/ CURRENTVERSION/EXPLORER/DESKTOP/NAMESPACE 在左边空白外点击“新建” 
,选择:“主键”,把它命名为“645FFO40——5081——101B——9F08——00AA002F954E” 
再把右边的“默认”的主键的键值设为“回收站”,然后退出注册表。就OK啦。 
3、要重启计算机。 
只要机器没有运行过磁盘整理。系统完好.任何时候的文件都可以找回来。

延伸 · 阅读

精彩推荐
  • LinuxLinux中环境变量配置的步骤详解

    Linux中环境变量配置的步骤详解

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的...

    Myths7882022-02-10
  • LinuxLinux lnmp下无法使用mail发邮件的两种解决方法

    Linux lnmp下无法使用mail发邮件的两种解决方法

    在配置了lnmp环境后,出现了mail函数不能发送邮件的问题,其实有两种方法,一是使用sendmail组件,而是使用postfix。下面为大家一一介绍下 ...

    Linux之家4042019-09-17
  • Linux详解Linux系统下PXE服务器的部署过程

    详解Linux系统下PXE服务器的部署过程

    这篇文章主要介绍了Linux系统下PXE服务器的部署过程,包括对PXE的API架构作了一个基本的简介,需要的朋友可以参考下...

    运维之道9812019-07-04
  • Linuxlinux中rmdir命令使用详解(删除空目录)

    linux中rmdir命令使用详解(删除空目录)

    今天学习一下linux中命令: rmdir命令。rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的 ...

    linux命令大全5372019-11-19
  • Linux手把手教您在 Linux 上使用 GPG 加解密文件

    手把手教您在 Linux 上使用 GPG 加解密文件

    在本教程中,我将告诉你如何用 GPG 加密和解密文件。这是一个简单的教程,你可以在你的 Linux 系统上尝试所有的练习。这将帮助你练习 GPG 命令,并在你...

    Linux中国6962021-12-15
  • LinuxLinux常用的日志文件和常用命令

    Linux常用的日志文件和常用命令

    成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。 Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所...

    Linux教程网2632020-04-18
  • LinuxLinux上设置用户通过SFTP访问目录的权限的方法

    Linux上设置用户通过SFTP访问目录的权限的方法

    这篇文章主要介绍了Linux上设置用户通过SFTP访问目录的权限的方法,SFTP可以理解为使用SSH协议进行FTP传输的协议,因而同时要对OpenSSH进行相关设置,需要的朋...

    OSChina10022019-06-19
  • Linux确保Linux系统安全的前提条件 漏洞防护

    确保Linux系统安全的前提条件 漏洞防护

    Linux 作为开放式的操作系统受到很多程序员的喜爱,很多高级程序员都喜欢编写Linux操作系统的相关软件。这使得Linux操作系统有着丰富的软件支持,还有无...

    Linux之家2642020-04-11