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




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

2022-07-20 20:30:50 网络知识 官方管理员
1.首先测试rm误删除数据库文件

[oracle@primarydbwdn]$ll
total2153164
-rw-r-----1oracledba8536064Nov2721:50control01.ctl
-rw-r-----1oracledba8536064Nov2721:50control02.ctl
-rw-r-----1oracledba8536064Nov2721:50control03.ctl
-rw-r-----1oracledba104865792Nov2721:32ggs01.dbf
-rw-r-----1oracledba525344768Nov2721:32perfstat.dbf
-rw-r-----1oracledba52429312Nov2721:10redo01.log
-rw-r-----1oracledba52429312Nov2721:49redo02.log
-rw-r-----1oracledba52429312Nov2721:10redo03.log
-rw-r-----1oracledba10493952Nov2721:32shkz_data_01.dbf
-rw-r-----1oracledba524296192Nov2721:49sysaux01.dbf
-rw-r-----1oracledba524296192Nov2721:49system01.dbf
-rw-r-----1oracledba209723392Nov1810:54temp01.dbf
-rw-r-----1oracledba52436992Nov2721:32test01.dbf
-rw-r-----1oracledba251666432Nov2721:49undotbs01.dbf
-rw-r-----1oracledba26222592Nov2721:32users01.dbf
[oracle@primarydbwdn]$rmtest01.dbf

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

oracle34931021:10?00:00:00ora_dbw0_dbwdn
进程号3493

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

[oracle@primarydbwdn]$ll/proc/3493/fd
total0
lr-x------1oracleoinstall64Nov2721:520->/dev/null
lr-x------1oracleoinstall64Nov2721:521->/dev/null
lr-x------1oracleoinstall64Nov2721:5210->/dev/zero
lr-x------1oracleoinstall64Nov2721:5211->/dev/zero
lr-x------1oracleoinstall64Nov2721:5212->/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lrwx------1oracleoinstall64Nov2721:5213->/u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat
lrwx------1oracleoinstall64Nov2721:5214->/u01/app/oracle/product/10.2.0/db_1/dbs/lkDBWDN
lrwx------1oracleoinstall64Nov2721:5215->/u01/app/oracle/oradata/dbwdn/control01.ctl
lrwx------1oracleoinstall64Nov2721:5216->/u01/app/oracle/oradata/dbwdn/control02.ctl
lrwx------1oracleoinstall64Nov2721:5217->/u01/app/oracle/oradata/dbwdn/control03.ctl
lrwx------1oracleoinstall64Nov2721:5218->/u01/app/oracle/oradata/dbwdn/system01.dbf
lrwx------1oracleoinstall64Nov2721:5219->/u01/app/oracle/oradata/dbwdn/undotbs01.dbf
lr-x------1oracleoinstall64Nov2721:522->/dev/null
lrwx------1oracleoinstall64Nov2721:5220->/u01/app/oracle/oradata/dbwdn/sysaux01.dbf
lrwx------1oracleoinstall64Nov2721:5221->/u01/app/oracle/oradata/dbwdn/users01.dbf
lrwx------1oracleoinstall64Nov2721:5222->/u01/app/oracle/oradata/dbwdn/test01.dbf(deleted)
lrwx------1oracleoinstall64Nov2721:5223->/u01/app/oracle/oradata/dbwdn/ggs01.dbf
lrwx------1oracleoinstall64Nov2721:5224->/u01/app/oracle/oradata/dbwdn/perfstat.dbf
lrwx------1oracleoinstall64Nov2721:5225->/u01/app/oracle/oradata/dbwdn/shkz_data_01.dbf
lrwx------1oracleoinstall64Nov2721:5226->/u01/app/oracle/oradata/dbwdn/temp01.dbf
lr-x------1oracleoinstall64Nov2721:5227->/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lr-x------1oracleoinstall64Nov2721:523->/dev/null
lr-x------1oracleoinstall64Nov2721:524->/dev/null
l-wx------1oracleoinstall64Nov2721:525->/u01/app/oracle/admin/dbwdn/udump/dbwdn_ora_3485.trc
l-wx------1oracleoinstall64Nov2721:526->/u01/app/oracle/admin/dbwdn/bdump/alert_dbwdn.log
lrwx------1oracleoinstall64Nov2721:527->/u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat
l-wx------1oracleoinstall64Nov2721:528->/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@primarydbwdn]$ls
control01.ctlcontrol03.ctlperfstat.dbfredo02.logshkz_data_01.dbfsystem01.dbftest01.dbfusers01.dbf
control02.ctlggs01.dbfredo01.logredo03.logsysaux01.dbftemp01.dbfundotbs01.dbf
数据库文件找回来了。

5.恢复数据库文件

[oracle@primarydbwdn]$sqlplus"/assysdba"
SQL*Plus:Release10.2.0.5.0-ProductiononTueNov2721:55:152012
Copyright(c)1982,2010,Oracle.AllRightsReserved.

Connectedto:
OracleDatabase10gEnterpriseEditionRelease10.2.0.5.0-Production
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
SQL> alterdatabasedatafile5offline;
Database altered.
SQL>recoverdatafile5;
Mediarecoverycomplete.
SQL> alterdatabasedatafile5online;
Database altered.
SQL>shutdownimmediate;
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea285212672bytes
FixedSize1273276bytes
VariableSize130024004bytes
DatabaseBuffers150994944bytes
RedoBuffers2920448bytes
Databasemounted.
Databaseopened.
SQL>

成功恢复数据库

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

[oracle@primarydbwdn]$rmusers01.dbf[oracle@primarydbwdn]$ps-ef|grepdbw0
oracle37981021:56?00:00:00ora_dbw0_dbwdn
oracle41473439022:07pts/100:00:00grepdbw0
[oracle@primarydbwdn]$ll/proc/3798/fd
total0
lr-x------1oracleoinstall64Nov2722:070->/dev/null
lr-x------1oracleoinstall64Nov2722:071->/dev/null
lr-x------1oracleoinstall64Nov2722:0710->/dev/zero
lr-x------1oracleoinstall64Nov2722:0711->/dev/zero
lr-x------1oracleoinstall64Nov2722:0712->/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lrwx------1oracleoinstall64Nov2722:0713->/u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat
lrwx------1oracleoinstall64Nov2722:0714->/u01/app/oracle/product/10.2.0/db_1/dbs/lkDBWDN
lrwx------1oracleoinstall64Nov2722:0715->/u01/app/oracle/oradata/dbwdn/control01.ctl
lrwx------1oracleoinstall64Nov2722:0716->/u01/app/oracle/oradata/dbwdn/control02.ctl
lrwx------1oracleoinstall64Nov2722:0717->/u01/app/oracle/oradata/dbwdn/control03.ctl
lrwx------1oracleoinstall64Nov2722:0718->/u01/app/oracle/oradata/dbwdn/system01.dbf
lrwx------1oracleoinstall64Nov2722:0719->/u01/app/oracle/oradata/dbwdn/undotbs01.dbf
lr-x------1oracleoinstall64Nov2722:072->/dev/null
lrwx------1oracleoinstall64Nov2722:0720->/u01/app/oracle/oradata/dbwdn/sysaux01.dbf
lrwx------1oracleoinstall64Nov2722:0721->/u01/app/oracle/oradata/dbwdn/users01.dbf(deleted)lrwx------1oracleoinstall64Nov2722:0722->/u01/app/oracle/oradata/dbwdn/test01.dbf
lrwx------1oracleoinstall64Nov2722:0723->/u01/app/oracle/oradata/dbwdn/ggs01.dbf
lrwx------1oracleoinstall64Nov2722:0724->/u01/app/oracle/oradata/dbwdn/perfstat.dbf
lrwx------1oracleoinstall64Nov2722:0725->/u01/app/oracle/oradata/dbwdn/shkz_data_01.dbf

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

[oracle@primarydbwdn]$sqlplus"/assysdba"
SQL*Plus:Release10.2.0.5.0-ProductiononTueNov2722:08:012012
Copyright(c)1982,2010,Oracle.AllRightsReserved.

Connectedto:
OracleDatabase10gEnterpriseEditionRelease10.2.0.5.0-Production
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
SQL>shutdownimmediate;
ORA-01116:errorinopeningdatabasefile4
ORA-01110:datafile4:'/u01/app/oracle/oradata/dbwdn/users01.dbf'
ORA-27041:unabletoopenfile
LinuxError:2:Nosuchfileordirectory
Additionalinformation:3
SQL>shutdownabort;ORACLEinstanceshutdown.
SQL>exit
DisconnectedfromOracleDatabase10gEnterpriseEditionRelease10.2.0.5.0-Production
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
[oracle@primarydbwdn]$sqlplus"/assysdba"
SQL*Plus:Release10.2.0.5.0-ProductiononTueNov2722:08:192012
Copyright(c)1982,2010,Oracle.AllRightsReserved.
Connectedtoanidleinstance.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea285212672bytes
FixedSize1273276bytes
VariableSize130024004bytes
DatabaseBuffers150994944bytes
RedoBuffers2920448bytes
Databasemounted.
ORA-01157:cannotidentify/lockdatafile4-seeDBWRtracefile
ORA-01110:datafile4:'/u01/app/oracle/oradata/dbwdn/users01.dbf'

SQL>exit
DisconnectedfromOracleDatabase10gEnterpriseEditionRelease10.2.0.5.0-Production
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
[oracle@primarydbwdn]$ll/proc/3798/fd
ls:/proc/3798/fd:Nosuchfileordirectory
[oracle@primarydbwdn]$ps-ef|grepdbw0
oracle41601022:08?00:00:00ora_dbw0_dbwdn
oracle41933439022:09pts/100:00:00grepdbw0
[oracle@primarydbwdn]$ll/proc/4160/fd
total0
lr-x------1oracleoinstall64Nov2722:090->/dev/null
lr-x------1oracleoinstall64Nov2722:091->/dev/null
lr-x------1oracleoinstall64Nov2722:0910->/dev/zero
lr-x------1oracleoinstall64Nov2722:0911->/dev/zero
lr-x------1oracleoinstall64Nov2722:0912->/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lrwx------1oracleoinstall64Nov2722:0913->/u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat
lrwx------1oracleoinstall64Nov2722:0914->/u01/app/oracle/product/10.2.0/db_1/dbs/lkDBWDN
lrwx------1oracleoinstall64Nov2722:0915->/u01/app/oracle/oradata/dbwdn/control01.ctl
lrwx------1oracleoinstall64Nov2722:0916->/u01/app/oracle/oradata/dbwdn/control02.ctl
lrwx------1oracleoinstall64Nov2722:0917->/u01/app/oracle/oradata/dbwdn/control03.ctl
l-wx------1oracleoinstall64Nov2722:092->/u01/app/oracle/admin/dbwdn/bdump/dbwdn_dbw0_4160.trc
lr-x------1oracleoinstall64Nov2722:093->/dev/null
lr-x------1oracleoinstall64Nov2722:094->/dev/null
l-wx------1oracleoinstall64Nov2722:095->/u01/app/oracle/admin/dbwdn/udump/dbwdn_ora_4152.trc
l-wx------1oracleoinstall64Nov2722:096->/u01/app/oracle/admin/dbwdn/bdump/alert_dbwdn.log
lrwx------1oracleoinstall64Nov2722:097->/u01/app/oracle/product/10.2.0/db_1/dbs/hc_dbwdn.dat
l-wx------1oracleoinstall64Nov2722:098->/u01/app/oracle/admin/dbwdn/bdump/alert_dbwdn.log
lrwx------1oracleoinstall64Nov2722:099->/u01/app/oracle/product/10.2.0/db_1/dbs/lkinstdbwdn(deleted)
[oracle@primarydbwdn]$

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

[oracle@primarydbwdn]$rmantarget/
RecoveryManager:Release10.2.0.5.0-ProductiononTueNov2722:13:452012
Copyright(c)1982,2007,Oracle.Allrightsreserved.
connectedtotargetdatabase(notstarted)
RMAN>startupnomount;
Oracleinstancestarted
TotalSystemGlobalArea285212672bytes
FixedSize1273276bytes
VariableSize130024004bytes
DatabaseBuffers150994944bytes
RedoBuffers2920448bytes
RMAN> alterdatabasemount;
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
databasemounted
RMAN>run
2>{
3>allocatechannelt1typetodisk;
RMAN-00571:===========================================================
RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:===========================================================
RMAN-00558:errorencounteredwhileparsinginputcommands
RMAN-01009:syntaxerror:found"to":expectingoneof:"double-quoted-string,disk,equal,identifier,single-quoted-string"
RMAN-01007:atline3column26file:standardinput
RMAN>run
2>{
3>allocatechannelt1devicetypedisk;
4>restoredatafile4;
5>recoverdatafile4;
6>releasechannelt1;
7>}
allocatedchannel:t1
channelt1:sid=156devtype=DISK
Startingrestoreat27-NOV-201222:16:26
channelt1:startingdatafilebackupsetrestore
channelt1:specifyingdatafile(s)torestorefrombackupset
restoringdatafile00004to/u01/app/oracle/oradata/dbwdn/users01.dbf
channelt1:readingfrombackuppiece/u01/bak/03nrctnp_1_1.bak
channelt1:restoredbackuppiece1
piecehandle=/u01/bak/03nrctnp_1_1.baktag=TAG20121127T213241
channelt1:restorecomplete,elapsedtime:00:00:04
Finishedrestoreat27-NOV-201222:16:30
Startingrecoverat27-NOV-201222:16:30
startingmediarecovery
mediarecoverycomplete,elapsedtime:00:00:01
Finishedrecoverat27-NOV-201222:16:31
releasedchannel:t1
RMAN> alterdatabaseopen;
databaseopened
RMAN>

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

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

发表评论:

最近发表
网站分类
标签列表