Linux环境下利用句柄恢复Oracle误删除的数据文件
在误删除Oracle的数据文件后,如果未关闭数据库,文件句柄还没有释放,且被删除的数据文件占用的磁盘块未被复写,则可以利用句柄的方式来恢复数据文件。下面模拟恢复过程。
(一)环境
OS版本:redhat 6.6
数据库版本:Oracle 11.2.0.1
(二)恢复操作
首先,模拟误删除数据库的数据文件。这里删除表空间TBS04下面的数据文件tbs04.bdf:
这个时候绝对不能关闭数据库,一旦关闭数据库,则无法恢复。
删除后查看DBWN进程,进程号为3032
进入这个进程的目录,可以看到我们删除的文件
只需要将删除的文件复制回去即可
经过确认,文件已经恢复到指定目录
此时,重启数据库,发现数据文件不一致,需要执行数据文件恢复
先将13号文件离线
对其进行恢复操作,通过归档日志进行恢复
将13号文件联机上线
改变数据库到open状态
完成恢复。
需要注意的是:
1.数据文件被删除后,数据库一定不能被关闭,否则句柄释放了,就无法使用这种方法进行恢复;
2.也可用lgwr进程来做数据文件、在线重做日志文件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?