前言
linux系统上,如果不小心删除了oracle数据库的/oradata目录下一些dbf文件,实例还在运行的情况下,可以尝试cp命令进行恢复。
简要过程
由于实例还存在,对这些文件读写的ckpt、lgwr、dbw等进程的句柄还没释放,可以用root检查一下
lsof |grep deleted |grep oradata
输出信息类似如下:
可能会有多个进程访问同一文件,所以会看到多条信息。
以sysaux01.dbf 为例,进入到/proc/<dbw进程号>/fd目录下,看到句柄号(蓝色箭头所指)
可以 cp /proc/进程号/fd/文件句柄号<蓝框> <红框中对应的文件名> 将数据文件恢复回来。