网站首页 > 技术文章 正文
服务器数据恢复环境:
某品牌服务器中有一组由4块SAS磁盘做的RAID5磁盘阵列。该服务器操作系统为windows server,运行了一个单节点Oracle,数据存储为文件系统,无归档。该oracle数据库的数据量不大,oracle数据库内只有一个用户,使用默认的users表空间,users表空间下仅有一个数据文件。
服务器故障:
可能是服务器负荷过重,底层RAID5磁盘阵列出现故障。为了挽救数据,管理员做了重建RAID的操作,后但是在RAID初始化过程中又有一块磁盘出现故障,导致RAID初始化被迫中止。这时RAID磁盘阵列可访问,操作系统能正常启动,但是出现错误。oracle数据库所在D盘分区报错无法打开,管理员执行chkdsk后能正常打开,但oracle数据库无法启动。管理员在原盘上重装了oracle数据库,并导入了以前备份的dmp文件,但数据差得太多。需要恢复缺失的数据。
服务器数据恢复过程:
1、将故障服务器中所有磁盘标记后取出。经过硬件工程师检测没有发现有硬盘存在物理故障,都可以正常读取。以只读方式将所有硬盘进行扇区级全盘镜像,镜像完成后将所有磁盘按照标记还原到原服务器中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘镜像造成二次破坏。
2、基于镜像文件分析所有硬盘底层数据,重点分析RAID层。虽然重建RAID会给原始数据造成严重破坏,但经过分析发现重建的RAID的块大小、盘序都和原RAID一样。初始化中仅同步了前面的少量数据,RAID层损坏不严重,oracle数据库还没被破坏。
3、针对管理员对分区执行chkdsk、重装oracle数据库和导入dmp文件这一系列操作所造成影响的分析:Chkdsk不会破坏数据区,chkdsk只对文件系统元数据区进行修改。执行chkdsk后数据库文件仍无破坏,至多是文件的MFT或目录项被破坏。对数据影响最严重的是重装Oracle数据库和导入dmp文件的操作,这2个操作不仅破坏文件系统元数据区,还对数据区进行进行覆盖破坏。
4、对D盘的NTFS文件系统进行分析,发现原所有oracle数据文件的的MFT均被覆盖,NTFS日志也被轮回覆盖,从NTFS元数据区找不可利用信息。使用北亚企安自主开发的Oracle恢复程序对D盘分区进行扫描。经过扫描,发现Oracle实例为ANSORA,扫描出的一个完整的控制文件和一个完整的undotbs表空间数据文件。更为重要的system表空间和users表空间数据文件均有不同程度的损坏,其中system表空间的数据文件仅剩极一小部分,而users表空间的数据文件部分被覆盖。提取出找到的数据,然后再试图对严重损坏的数据库文件进行修复。
5、system表空间不可用,无法得到数据字典。在和用户方沟通后,用户方确认只需要恢复其中最重要的三张表即可。从imp回去的数据库中得到这三张表的结构,再从恢复出来的users表空间的数据文件中找到对应的segment,但其中有一张表怎么都对应不上。再次和用户方沟通才得知这一张表曾经有过更改字段的操作,然后构建新的表结构对应上users表空间数据文件中segment,然后通过dul工具提取这三张表的数据。经过用户方验证,确认数据无问题。本次数据恢复工作完成。
- 上一篇: 这份MySQL全面手册,受喜爱程度不输任何大厂笔记
- 下一篇: 一文搞懂flex(弹性盒布局)
猜你喜欢
- 2025-08-02 Linux常用命令(用户及用户组管理命令)
- 2025-08-02 数据库管理系统——基本知识概述
- 2025-08-02 如何在 Windows 11 或 10 上通过 WSL 安装 Sensu Go 监控工具
- 2025-08-02 服务器密码错误被锁定怎么解决
- 2025-08-02 Oracle数据恢复—格式化分区导致Oracle数据库数据丢失的数据恢复
- 2025-08-02 LabVIEW实现Oracle数据库的访问
- 2025-05-11 这份MySQL全面手册,受喜爱程度不输任何大厂笔记
- 2025-05-11 【Oracle】Package 存储过程编写以及其他实用技术
- 2025-05-11 网络工程师必知:高危端口大全
- 2025-05-11 如何备考OCM认证考试?
- 08-06中等生如何学好初二数学函数篇
- 08-06C#构造函数
- 08-06初中数学:一次函数学习要点和方法
- 08-06仓颉编程语言基础-数据类型—结构类型
- 08-06C++实现委托机制
- 08-06初中VS高中三角函数:从"固定镜头"到"360°全景",数学视野升级
- 08-06一文讲透PLC中Static和Temp变量的区别
- 08-06类三剑客:一招修改所有对象!类方法与静态方法的核心区别!
- 1531℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 687℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 536℃MySQL service启动脚本浅析(r12笔记第59天)
- 501℃启用MySQL查询缓存(mysql8.0查询缓存)
- 500℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 469℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 467℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)