说明:因操作失误在orcle备库清理归档日志时,把数据文件删除。

在oracle运行时,不会释放文件,所以立刻采用linux误删文件的方法恢复数据文件。

1.lsof查看误删文件占用情况,找出pid

[root@shanyouyou ~]# lsof |grep delete
oracle  6413    oracle    5u      REG   253,1   0   1179659 /data/oracle/testdb_1.dbf(deleted)

2.根据pid,找到对应的文件描述符。

cd /proc/6413/fd
ls -l
#显示内容
#lrwx------ 1 oracle oinstall 64 May 21 13:08 262 -> /data/oracle/testdb_1.dbf (deleted)

3.以文件描述符复制文件到新的目录下,(如果文件很大,建议复制到其他硬盘下,等释放空间后,再恢复到原位)

cp 262 /data1/oracle/testdb_1.dbf

4.确认数据文件已恢复,注意改为原用户和用户组:oracle

chown -R oracle.oinstall /data/oracle/testdb_1.dbf

5.重启启动备库。

shutdown immediate;
startup

6.注意:如果报错以下错误,检查文件的权限和属组是否正确

SQL> startup
ORACLE instance started.

Total System Global Area 4.0086E+10 bytes
Fixed Size                  2261848 bytes
Variable Size            4429188264 bytes
Database Buffers         3.5568E+10 bytes
Redo Buffers               86405120 bytes
Database mounted.
ORA-10458: standby database requires recovery
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/data/oracle/testdb_1.dbf'

标签: none

评论已关闭