| 模式 | 指令 | 行為 | 適用場景 | 風險 |
|---|---|---|---|---|
| Normal | SHUTDOWN | 等待所有用戶主動斷開,不允許新連線 | 計畫性維護,用戶配合度高 | 若有閒置連線不斷開,資料庫永遠無法關閉 |
| Immediate | SHUTDOWN IMMEDIATE | 等待當前 SQL 完成,回滾未提交交易,斷開所有連線,不允許新連線 | 最常用的生產環境關閉方式 | 長時間執行的 SQL 需等待完成 |
| Transactional | SHUTDOWN TRANSACTIONAL | 等待當前交易 (Transaction) 完成 (Commit/Rollback),再關閉 | 需確保交易完整性的場景 | 等待時間不可控,視交易長短 |
| Abort | SHUTDOWN ABORT | 強制即時終止,不回滾,不刷新緩衝區,下次啟動需執行實例恢復 | 緊急情況、系統掛死、其他模式無效 | 下次啟動較慢 (需 Instance Recovery),極罕見情況下可能資料不一致 |
共同點:所有模式均禁止新連線建立。
SQL> STARTUP NOMOUNT -- 1. 啟動實例 (分配 SGA, 啟動背景進程)
SQL> ALTER DATABASE MOUNT -- 2. 掛載資料庫 (讀取控制檔,關聯實例與資料庫)
SQL> ALTER DATABASE OPEN; -- 3. 開啟資料庫 (線上資料檔、重做日誌,允許用戶存取)
單行指令 STARTUP 等同依序執行上述三步。
STARTUP MOUNT:啟動實例並掛載,適合備份控制檔、啟用歸檔模式、資料檔離線操作STARTUP NOMOUNT:僅啟動實例,適合重建控制檔、建立新資料庫STARTUP UPGRADE:升級模式啟動,限制功能,用於資料庫版本升級STARTUP RESTRICT:限制模式,僅允許 RESTRICTED SESSION 權限用戶連線,適合維護操作| 錯誤代碼 | 訊息 | 原因 | 解決 |
|---|---|---|---|
| ORA-01034 | ORACLE not available | 實例未啟動 | 執行 STARTUP |
| ORA-01507 | Database not mounted | 未掛載資料庫就執行 OPEN | 先 ALTER DATABASE MOUNT |
| ORA-01031 | Insufficient privileges | 非 SYSDBA/SYSOPER 權限 | 以 SYSDBA 連線 (sqlplus / as sysdba) |
| ORA-01109 | Database not open | 資料庫未 OPEN | 執行 ALTER DATABASE OPEN |
若以 SYS 執行 SHUTDOWN 卡住,因為 SYS 本身即為一個連線。解決方案:
SHUTDOWN IMMEDIATE 強制關閉ALTER SYSTEM KILL SESSION 先踢掉閒置會話SHUTDOWN IMMEDIATE 避免等待結語:掌握四種關閉模式差異、三階段啟動流程與常見錯誤代碼,是 DBA 日常運維的基本功。生產環境首選 SHUTDOWN IMMEDIATE,緊急時 ABORT 並預期較長的啟動恢復時間。