记一次Oracle数据库恢复

记一次Oracle数据库恢复

单位OA系统出现故障,通过排查是部署在云上应用服务器和数据库服务器出现故障。联系云和OA系统工程师到现场协助处理,通过云工程师处理顺利恢复了应用服务器,但是数据库服务器依然存在问题,云厂家工程师通过技术手段将数据库服务器上的所有文件拷贝到一台新的虚拟机。
所以重点就是恢复数据库服务器上的Oracle数据库

场景

1.数据库服务器有一个7月16号的备份镜像
2.数据库oracle相关文件拷贝到一台另外的虚拟机,oracle数据库文件是否发生损坏未知

方案

1.通过从原数据库拷贝出来的文件完成数据库恢复
2.通过7月16号的备份镜像完成数据库还原,这样会造成2个多月的数据丢失,因此这种方式是在方案1完全无法实现的时候的备选

实施思路

由于Oracle对于从文件直接还原的特殊性(版本号、数据库sid、实例名、路径、数据库编码要求完全一致)
1.通过将7月16号的镜像还原到了一台新的虚拟机进而保证了还原时各类参数的一致性,同时确认该还原的数据库状态正常
2.将还原数据库的所有dbf文件和control文件备份
3.将原数据库下损坏情况未知的dbf文件和control文件拷贝到已还原的oracle数据库,需要确定文件权限为oracle:oinstall
4.启动数据库,顺利启动并mount,但是在open database时出错,报ora-00314错误
5.通过检查启动日志,并结合

select group#,sequence#,archived,status from v$log;

这个sql语句查询数据库状态发现是数据库redo日志问题
6.重做redo日志,因为数据库不是做的归档日志所以用的unarchived

alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 3;

完成日志操作后执行alter database open;数据库顺利启动完成本次数据库恢复

你可能感兴趣的:(记一次Oracle数据库恢复)