歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux維護 >> Linux使用rm刪除了數據庫文件如何恢復?

Linux使用rm刪除了數據庫文件如何恢復?

日期:2017/3/2 10:31:38   编辑:Linux維護

我們都知道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

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、要重啟計算機。

只要機器沒有運行過磁盤整理。系統完好。任何時候的文件都可以找回來。

上面就是Linux rm命令刪除數據庫文件的恢復方法的介紹了,如果你不小心使用rm命令刪除了數據庫文件,先測試你刪除的文件,再進行恢復。

Copyright © Linux教程網 All Rights Reserved