因斷電導致 Oracle 異常關閉,後續使用 SQL*Plus 啟動報錯:
Connection can not permitted, shut in progress.
嘗試 STARTUP 仍提示 shutdown in progress,但 SELECT * FROM TAB 顯示 no rows selected,實際未掛載數據庫。
C:\> sqlplus /nolog
SQL> CONNECT / AS SYSDBA
已連接至空閒例程
SQL> STARTUP FORCE
已啟動。數據庫已正常啟動。
原理: STARTUP FORCE 先強制關閉實例(相當於 SHUTDOWN ABORT),再正常啟動,清除殘留的「關閉中」狀態標記。
OracleService(如 OracleServiceORACLE)orcl)system、密碼、連接身份 SYSDBAOracleService 後重試| 命令 | 用途 | 適用場景 |
|---|---|---|
| STARTUP FORCE | 強制重啟 | 異常關閉、實例凍結、掛載狀態卡死 |
| STARTUP RESTRICT | 限制模式啟動 | 僅允許擁有 RESTRICTED SESSION 權限的用戶連接,適合維護窗口 |
| ALTER SYSTEM ENABLE RESTRICTED SESSION | 運行中開啟限制 | 在線切換維護模式,需 ALTER SYSTEM 權限 |
| STARTUP NOMOUNT | 僅啟動實例 | 創建數據庫、恢復控制文件、僅訪問 V$ 視圖 |
| STARTUP MOUNT | 掛載數據庫 | 備份控制文件、啟用歸檔模式、恢復數據文件 |
| STARTUP OPEN | 正常打開(默認) | 日常業務運行 |
異常斷電導致 SHUTDOWN 進程未正常退出,控制文件/內存中殘留「關閉中」標記。再次啟動時實例檢測到該標記,拒絕正常 STARTUP。STARTUP FORCE 通過強制實例終止清除標記,是最快、最標準的恢復手段。
STARTUP FORCE、RECOVER DATABASE 流程alert.log 中的 SHUTDOWN 記錄,異常關閉後必須檢查數據一致性遭遇 shutdown in progress 無法啟動時,**首選 STARTUP FORCE**,單條命令 30 秒內解決。理解啟動各階段(NOMOUNT → MOUNT → OPEN)與限制模式,能應對更複雜的恢復場景。