背景:测试环境suse12操作系统,开发人员误删了/home/oracle下面的数据文件
oracle状态看起来一切正常,但数据文件已经被rm掉。
恢复方法:通过lsof命令找到被删除的数据文件,拷贝出来,重启数据库,一切顺利。若是不顺利,那就另说了(手动滑稽)
1、数据文件被删除,通过查找dbwr进程
wdapp-uat:~ # ps -ef|grep dbw
oracle 3317 1 0 Jul26 ? 00:01:04 ora_dbw0_ols
wdapp-uat:~ # lsof -p 3317
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ora_dbw0_ 3317 oracle cwd DIR 254,0 4096 1311824 /u01/app/oracle/product/12.2.0/db_1/dbs
ora_dbw0_ 3317 oracle rtd DIR 254,0 4096 2 /
ora_dbw0_ 3317 oracle txt REG 254,0 407952312 1599450 /u01/app/oracle/product/12.2.0/db_1/bin/oracle
ora_dbw0_ 3317 oracle 259uW REG 254,0 5451030528 1979159 /home/oracle/data/OLS_DATA.dbf (deleted)
ora_dbw0_ 3317 oracle 260uW REG 254,0 1625300992 2101248 /u01/app/oracle/oradata/OLS/datafile/o1_mf_sysaux_fkzf0zjv_.dbf
ora_dbw0_ 3317 oracle 261u REG 254,0 1226842112 2101251 /u01/app/oracle/oradata/OLS/datafile/o1_mf_undotbs1_fkzf1rn4_.dbf
ora_dbw0_ 3317 oracle 262uW REG 254,0 536879104 1979158 /home/oracle/data/OLS_IDX.dbf (deleted)
可以看到,有两个数据文件被标注为deleted
2、查看两个被删除文件的信息,拷贝该文件到相应目录下面
wdapp-uat:~ # ls -alh /proc/3317/fd/259
lrwx------ 1 oracle oinstall 64 Aug 2 10:00 /proc/3317/fd/259 -> /home/oracle/data/OLS_DATA.dbf (deleted)
wdapp-uat:~ # ls -alh /proc/3317/fd/262
lrwx------ 1 oracle oinstall 64 Aug 2 10:00 /proc/3317/fd/262 -> /home/oracle/data/OLS_IDX.dbf (deleted)
3、cp /proc/3317/fd/259 /home/oracle/data
cp /proc/3317/fd/262 /home/oracle/data
chown -R oracle:oinstall /home/oracle/
4、su - oracle
cd /home/oracle/data
mv 259 OLS_DATA.dbf
mv 262 OLS_IDX.dbf
5、重启数据库
oracle@wdapp-uat:~/data> mv 259 OLS_DATA.dbf
oracle@wdapp-uat:~/data> mv 262 OLS_IDX.dbf
oracle@wdapp-uat:~/data> sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Aug 2 10:16:04 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1593835520 bytes
Fixed Size 8621184 bytes
Variable Size 1056965504 bytes
Database Buffers 520093696 bytes
Redo Buffers 8155136 bytes
Database mounted.
Database opened.
--------------------------------------------------------------
测试环境,没做备份,没开归档,一旦出现误删等情况,只能自求多福了。