首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 9i 異常關閉後數據庫啟動失敗的解決方案

     編輯:Oracle 資料庫基礎

故障現象

Oracle 9i 因斷電導致 SHUTDOWN 未完成,後續啟動報錯:

CONNECTION CAN NOT PERMITTED, SHUT IN PROGRESS.

嘗試 STARTUP 提示 SHUTDOWN IN PROGRESS,SELECT * FROM TAB 返回 NO ROWS SELECTED,實例處於掛起狀態。

根因分析

異常斷電時 SHUTDOWN 進程未正常退出,SGA 中仍殘留「關閉中」標記。新啟動實例檢測到該標記,拒絕重複啟動。

標準解決步驟

  1. 命令行進入無日誌模式:sqlplus /nolog
  2. 以 SYSDBA 連接空閒實例:CONNECT / AS SYSDBA(顯示「已連接至空閒例程」)
  3. 強制啟動:STARTUP FORCE
    內部流程:SHUTDOWN ABORT → STARTUP,清理殘留鎖並正常掛載/打開庫。

執行後顯示「已啟動。數據庫已正常啟動。」

替代方案(Windows 圖形化)

  1. 服務管理器中停止 OracleService 服務。
  2. 啟動 Enterprise Manager Console → 獨立啟動 → 選擇目標庫 → SYS AS SYSDBA 連接。
  3. 「一般信息」頁將實例狀態改為「關閉」再「打開」。
  4. 若服務未自動拉起,手動啟動 OracleService 後重試。

相關啟動模式補充

命令用途
STARTUP FORCE強制重啟異常/掛起實例(ABORT + 正常啟動)
STARTUP RESTRICT限制模式啟動,僅 RESTRICTED SESSION 權限用戶可連接
ALTER SYSTEM ENABLE RESTRICTED SESSION運行中動態開啟限制模式(需 ALTER SYSTEM 權限)
STARTUP NOMOUNT僅啟動實例(SGA),不掛載控制文件,僅可查 V$ 固定視圖

最佳實踐建議

  • 生產庫配置 UPS 電源,避免硬斷電。
  • 編寫啟動腳本封裝 STARTUP FORCE,納入應急預案。
  • 定期演練異常恢複流程,驗證備份可用性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved