近期,处理一个oracle for windows数据库故障,前期场景是:操作员由于在sqlplus中执行move命令
移动数据库到新的表空间来消除碎片,但是执行时间长,操作员以为是命令死掉了,就取消掉,没想到取
消一直卡着,操作员就把数据库关闭掉,把以前实例还在运行中的备份数据文件,直接覆盖现在数据文件。
然后,操作员在执行操作就报错,操作员就把数据库关闭掉,结果数据库无法启动。在后续恢复过程中,
我重建了控制文件,因为没有开归档,不能执行完全恢复,恢复肯定有数据丢失,这一点客户接受,恢复
过程还算顺利,但是,恢复过程中遇到了启动:ORA-24324&ORA-01041内部错误hostdef扩展名不存在。
具体的报错信息如下:
我不理解的是,在操作过程中,修改数据库默认Undo表空间失败,想关闭实例通过pfile来修改,结果遇到了
ORA-24324&ORA-01041内部错误hostdef扩展名不存在。该问题的排查和处理过程如下:
1、首先,检查oracle数据库服务是否启动,结果是数据库和监听服务均处于启动状态
2、通过任务管理器检查oracle进程是否存在,oracle.exe进程存在,但是内存占用量不正常
3、在sqlplus直接通过startup命令启动实例,提示hostdef问题
4、从操作系统层次手工发起关闭oracle实例服务
5、再次通过pfile文件启动实例,依然提示hostdef问题
6、度娘一下,提示关闭当前cmd,另外开启cmd,sqlplus登陆空实例启动可解决hostdef,问题变成tns相关ORA-12560错误
到这,连sqlplus也无法登陆,空实例都无法连接到了。无奈之下,选择重启windows服务器,发现问题神奇般的解决了: