#创作挑战赛#

一早开发人员反馈,测试库挂了。应用报错java.sql.SQLRecoverableException: ORA-01033: oracle initialization or shutdown in progress。

登录数据库查看alert日志:

oracle数据库ora-00001错误(oracle故障处理-文件丢失ORA-01157:)(1)

分析数据库alert日志:

11:06:58 数据库启动到MOUNT状态。执行alter database OPEN的时候,发现有文件丢失:

Errors in file /usr/oracle2app/diag/rdbms/orcl2/orcl2/trace/orcl2_dbw0_106488.trc:

ORA-01157: cannot identify/lock data file 25 - see DBWR trace file

ORA-01110: data file 25

数据库启动过程检测两次丢失的文件后,依旧无法找到。报错:

ORA-1157 signalled during: ALTER DATABASE OPEN...

数据库OPEN失败,此时数据库依旧在MOUNT状态。到操作系统ls -ltr 对应的文件。显示文件不存在,数据库文件在操作系统以及被删掉。

登录数据库执行datafile offline命令。先把丢失的文件从控制文件offline掉。

alter database datafile 25 offline drop

Completed: alter database datafile 25 offline drop

再次启动数据库到open状态成功。

alter database open;

故障总结:

1、测试库非归档模式丢失了数据文件。只能采用offline drop的操作先回复数据库到OPEN保证研发人员正常使用。生产环境禁止此类操作。

2、数据库OPEN以后,需要检查该文件对应的对象。如果这部分对象没人使用则执行表空间删除命令,彻底删除文件。

3、此类操作严禁到生产操作。生产有全面的rman备份,如丢失文件需要从rman中恢复。

,