Oracle 資料庫啟動 (STARTUP) 與關閉 (SHUTDOWN) 擁有多種模式參數,每種對應不同的維護場景與業務需求。本文系統整理 8 種啟動模式與 3 種關閉模式的階段行為、適用場景、權限要求與組合用法,並提供決策流程圖,幫助 DBA 精準選擇操作模式。
啟動模式總覽 (8 種)
| 命令 | 到達階段 | 核心動作 | 典型用途 | 權限需求 |
| STARTUP NOMOUNT | NOMOUNT | 啟動 Instance (SGA+背景進程),讀取參數檔 | CREATE DATABASE、重建控制檔、恢復控制檔 | SYSDBA |
| STARTUP MOUNT | MOUNT | NOMOUNT + 讀取/開啟控制檔 | 備份控制檔、啟用/關閉歸檔、重命名數據檔/Redo、恢復資料庫 | SYSDBA |
| STARTUP OPEN / STARTUP | OPEN | MOUNT + 開啟所有數據檔/Redo | **正常業務服務** (預設) | SYSDBA |
| STARTUP READ ONLY | OPEN READ ONLY | MOUNT + 唯讀開啟數據檔 | 報表查詢、邏輯備份、立由庫 | SYSDBA |
| STARTUP RESTRICT | OPEN RESTRICTED | OPEN + 僅允許 RESTRICTED SESSION 權限用戶 | DBA 維護窗口、資料修補、升級腳本執行 | SYSDBA |
| STARTUP FORCE | OPEN | SHUTDOWN ABORT + STARTUP | 資料庫掛死、無法正常關閉時強制重啟 | SYSDBA |
| STARTUP PFILE=path | 依參數檔 | 讀取指定 PFILE 啟動 (忽略 SPFILE) | 參數調優測試、SPFILE 損壞恢復 | SYSDBA |
| STARTUP EXCLUSIVE | OPEN | 獨佔模式掛載 (RAC 單節點維護) | 非 RAC 環境預設;RAC 時防止其他節點掛載 | SYSDBA |
關閉模式總覽 (3 種標準 + 1 種緊急)
| 命令 | 行為流程 | 資料完整性 | 啟動恢復 | 適用場景 |
| SHUTDOWN NORMAL | 拒絕新連線 → 等待所有用戶主動斷開 → 關閉 | ✅ 無資料損失 | 無需恢復 | 計劃維護、時間充裕 |
| SHUTDOWN IMMEDIATE | 拒絕新連線 → 等待當前 SQL 完成 → 回滾未提交交易 → 斷開會話 → 關閉 | ✅ 未提交交易回滾 | 無需恢復 | **生產標準關閉** |
| SHUTDOWN TRANSACTIONAL | 拒絕新連線 → 等待當前交易提交/回滾 → 斷開會話 → 關閉 | ✅ 交易完整 | 無需恢復 | 長交易業務、最小化回滾影響 |
| SHUTDOWN ABORT | 立即終止進程、不回滾、不關閉檔案 | ⚠️ 需實例恢復 | **需實例恢復** (應用 Redo) | 緊急故障、資料庫掛死、其他模式無效 |
階段轉換等價命令
-- 啟動階段手動控制
STARTUP NOMOUNT;
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN; -- 或 OPEN READ ONLY / OPEN RESTRICT
-- 關閉階段手動控制 (需 MOUNT 階段)
SHUTDOWN IMMEDIATE; -- 等價於上述三步驟自動完成
-- 或
ALTER DATABASE CLOSE NORMAL; -- 僅關閉數據檔,保持 MOUNT
ALTER DATABASE DISMOUNT; -- 卸載控制檔
-- Instance 仍在 NOMOUNT,需 SHUTDOWN ABORT 才能完全停止 Instance
決策流程:如何選擇模式?
啟動決策:
IF 建立新資料庫/重建控制檔 -> STARTUP NOMOUNT
ELSE IF 備份控制檔/重命名檔案/恢復 -> STARTUP MOUNT
ELSE IF 僅供報表/邏輯備份 -> STARTUP READ ONLY
ELSE IF DBA 獨佔維護/升級 -> STARTUP RESTRICT
ELSE IF 資料庫掛死/異常關閉 -> STARTUP FORCE
ELSE IF 指定參數檔啟動 -> STARTUP PFILE=...
ELSE -> STARTUP (預設 OPEN)
關閉決策:
IF 緊急故障/掛死/其他模式失效 -> SHUTDOWN ABORT
ELSE IF 長交易業務/最小化回滾 -> SHUTDOWN TRANSACTIONAL
ELSE IF 生產標準/計劃變更 -> SHUTDOWN IMMEDIATE
ELSE -> SHUTDOWN NORMAL
權限與密碼檔
- 所有啟動/關閉命令需 **SYSDBA** 或 **SYSOPER** 權限
- 本地 OS 認證:
CONN / AS SYSDBA (需屬於 dba/oper 組)
- 遠端認證:需
$ORACLE_HOME/dbs/orapwSID 密碼檔,CONN sys/pwd@tns AS SYSDBA
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE/SHARED/NONE 參數控制密碼檔用法
常見組合場景實戰
| 場景 | 命令序列 |
| 啟用歸檔模式 | SHUTDOWN IMMEDIATE → STARTUP MOUNT → ALTER DATABASE ARCHIVELOG → ALTER DATABASE OPEN |
| 重命名系統表空間檔案 | STARTUP MOUNT → ALTER DATABASE RENAME FILE ... → ALTER DATABASE OPEN |
| 參數調優測試 (不影響 SPFILE) | CREATE PFILE='/tmp/test.ora' FROM SPFILE; 編輯 → STARTUP PFILE='/tmp/test.ora' |
| RAC 節點獨佔維護 | STARTUP EXCLUSIVE MOUNT → 維護操作 → ALTER DATABASE OPEN |
| 緊急重啟 (掛死) | STARTUP FORCE (單命令完成 ABORT+STARTUP) |
監控啟動/關閉進度
-- 查看 ALERT LOG 即時尾部
tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log
-- 查看實例狀態
SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;
-- 查看啟動階段 (內部固定視圖)
SELECT * FROM V$INSTANCE_RECOVERY; -- 僅恢復階段可見
精準掌握每種模式的階段行為與副作用,能讓 DBA 在變更窗口、故障搶修、效能調優等關鍵時刻做出最優決策,將業務影響降至最低。