一套双节点的rac环境中,因为节点1本地硬盘空间不足造成实例崩溃,恢复实例后,通过业务账号登录数据库时,提示ora-01110错误:
“ora-00376 此时无法读取文件; ora-01110 读取文件失败”
原因为节点1实例崩溃时,由于正在写数据库,造成个别数据文件状态不一致。
解决:
1、检查需要恢复的文件
select file#,name,status from v$datafile;
状态为recover的两个datafile,在alter.log日志也能验证到相同的错误告警。
2、恢复受损文件
由于数据库运行在归档模式下,并redo日志文件和归档日志文件保存完好,可以在线恢复受损的datafile:
sql> recover datafile 20;
根据提示输入:auto,做自动恢复。
再执行一次:
sql> reocover datafile 20;
根据提示输入:cancel,恢复到同整个数据库状态一致。
将完成恢复的datafile联机:
sql> alter database datafile 20 online;
3、验证
select file#,name,status from v$datafile;
datafile状态已更新为online。
验证业务已恢复正常。
4、小结
打开归档功能,并定期做数据库备份,是救命稻草。
|