啟動/關閉核心命令演進
| 版本 | 工具 | 啟動命令 | 關閉命令 |
| 8i/9i 早期 | SVRMGR | STARTUP | SHUTDOWN |
| 9i+ | SQL*Plus | STARTUP | SHUTDOWN [NORMAL|IMMEDIATE|TRANSACTIONAL|ABORT] |
| 12c+ | SQL*Plus / SRVCTL | STARTUP / srvctl start database -d <db> | SHUTDOWN / srvctl stop database -d <db> -o immediate |
單機環境標準流程
# 1. 切換到 oracle 用戶
su - oracle
# 2. 啟動
sqlplus / as sysdba
SQL> STARTUP
# 3. 關閉(推薦 IMMEDIATE)
SQL> SHUTDOWN IMMEDIATE
雙機/集群環境(HA)流程
# 切換到 root
su - root
# 啟用資源(HA 管理)
hareg -y oracle
# 禁用資源
hareg -n oracle
七大啟動模式深度解析
| 模式 | 命令 | 內部動作 | 可用操作 | 適用場景 |
| NOMOUNT | STARTUP NOMOUNT | 讀取 SPFILE/PFILE → 啟動 SGA + 後台進程(PMON, SMON, DBWn, LGWR, CKPT...) | 創建控制文件、創建數據庫、恢復控制文件 | 災難恢復、新建庫 |
| MOUNT | STARTUP MOUNT 或 ALTER DATABASE MOUNT | NOMOUNT + 打開控制文件,驗證數據文件/日誌文件路徑存在性(不校驗內容) | 歸檔模式切換、介質恢復、數據文件/日誌文件重命名/離線/聯機、備份控制文件 | 維護窗口、備份恢復 |
| OPEN | STARTUP OPEN 或 ALTER DATABASE OPEN | MOUNT + 打開所有數據文件、聯機日誌、臨時文件,執行崩潰恢復(前滾/回滾) | 正常業務訪問、查詢、DML、DDL | 生產運行 |
| DEFAULT (STARTUP) | STARTUP | 依次執行 NOMOUNT → MOUNT → OPEN | 同上 | 日常啟動 |
| RESTRICT | STARTUP RESTRICT | OPEN + 僅允許 RESTRICTED SESSION 權限用戶連接 | DBA 維護、數據修復、升級腳本運行 | 排他性維護 |
| FORCE | STARTUP FORCE | SHUTDOWN ABORT + STARTUP(單命令完成) | 同上 | 實例掛起無法正常關閉時強制重啟 |
| PFILE 指定 | STARTUP PFILE=/path/init.ora | 讀取指定參數文件啟動,忽略默認 SPFILE | 同上 | 參數調優測試、多實例參數隔離、SPFILE 損壞恢復 |
關閉模式對比
| 模式 | 命令 | 行為 | 風險 |
| NORMAL | SHUTDOWN NORMAL | 等待所有用戶斷開、不允許新連接、Checkpoint 後關閉 | 可能永遠等不到(長連接) |
| TRANSACTIONAL | SHUTDOWN TRANSACTIONAL | 等待活躍事務提交/回滾、不允許新事務、Checkpoint 後關閉 | 長事務導致等待久 |
| IMMEDIATE | SHUTDOWN IMMEDIATE | 回滾活躍事務、斷開所有會話、Checkpoint 後關閉 | **推薦生產標準**,平衡速度與一致性 |
| ABORT | SHUTDOWN ABORT | 瞬間終止實例、不 Checkpoint、下次啟動自動執行實例恢復 | 緊急情況,下次啟動較慢 |
實戰場景決策樹
- 日常維護重啟:
SHUTDOWN IMMEDIATE → STARTUP
- 切換歸檔模式:
SHUTDOWN IMMEDIATE → STARTUP MOUNT → ALTER DATABASE ARCHIVELOG → ALTER DATABASE OPEN
- 控制文件損壞恢復:
STARTUP NOMOUNT → CREATE CONTROLFILE ... → ALTER DATABASE MOUNT → ALTER DATABASE OPEN RESETLOGS
- 參數文件錯誤導致無法啟動:
STARTUP PFILE=/tmp/init_fixed.ora → 修正 SPFILE → CREATE SPFILE FROM PFILE → 重啟
- 實例凍結無法關閉:
SHUTDOWN ABORT → STARTUP FORCE(或直接 STARTUP FORCE)
- 排他性數據修復:
STARTUP RESTRICT → 修復 → ALTER SYSTEM DISABLE RESTRICTED SESSION
RAC 環境特殊性
- 單實例啟動/關閉:
srvctl start/stop instance -d db -i inst1
- 整庫啟動/關閉:
srvctl start/stop database -d db(並行啟動所有實例)
STARTUP FORCE 在 RAC 中僅影響當前實例,其他實例不受影響。
- MOUNT 狀態下實例可啟動但不 OPEN,用於 Rolling Upgrade 等場景。
結語
Oracle 啟動本質是 NOMOUNT → MOUNT → OPEN 三階段狀態機。掌握每階段完成的內核動作、可用操作、適用場景,配合 SHUTDOWN IMMEDIATE 標準關閉、STARTUP FORCE 緊急重啟、RESTRICT 排他維護、PFILE 參數隔離,即可從容應對生產環境 99% 的啟動關閉運維場景。RAC 環境下優先使用 srvctl 統一生命周期管理,避免手動 SQL*Plus 操作導致集群狀態不一致。