近期,處理一個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服務器,發現問題神奇般的解決了: