啟動三階段:Instance → Mount → Open
| 階段 | 命令 | 動作 | 適用場景 |
| 1. 建立 Instance | STARTUP NOMOUNT | 讀取 init.ora、啟動背景進程、分配 SGA、Instance 名由 ORACLE_SID 決定 | 建立新資料庫、恢復控制檔 |
| 2. 掛載資料庫 | STARTUP MOUNT | 讀取控制檔獲取資料檔/Redo Log 路徑,**不開啟檔案** | 資料檔更名、Redo Log 管理、切換 Archive 模式 |
| 3. 開啟資料庫 | STARTUP (預設) | 線上資料檔/Redo Log、申請 Rollback Segment、接受用戶連線 | 正常生產服務 |
分階段啟動的手動控制
-- 若用 NOMOUNT 啟動
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
-- 若用 MOUNT 啟動
ALTER DATABASE OPEN;
其他啟動選項
STARTUP RESTRICT:僅允許 RESTRICTED SESSION 權限用戶 (DBA) 連線,適合匯入匯出維護窗口
STARTUP FORCE:SHUTDOWN ABORT + STARTUP 合體,僅用於無法正常關閉時強制重啟
ALTER DATABASE OPEN READ ONLY:唯讀開啟,適合報表/查詢專用庫
關閉四模式:優雅程度遞減
| 模式 | 新連線 | 等待現有 Session | 等待作用中交易 | Checkpoint/關閉檔案 | 下次啟動需恢復 |
NORMAL (預設) | ✗ | ✓ | ✓ | ✓ | 否 |
IMMEDIATE | ✗ | ✗ (強制中斷) | ✗ (Rollback) | ✓ | 否 |
TRANSACTIONAL (8i+) | ✗ | ✗ | ✓ (等待完成) | ✓ | 否 |
ABORT | ✗ | ✗ | ✗ (不 Rollback) | ✗ | 是 (Instance Recovery) |
模式選擇決策樹
- 例行維護、有充足時間 →
NORMAL
- 需快速關閉、保證資料一致性 →
IMMEDIATE (最常用)
- 計劃性停機、允許交易自然結束 →
TRANSACTIONAL
- 資料庫異常、無法正常關閉、必須立即停機 →
ABORT (最後手段)
關鍵差異深度解析
IMMEDIATE 會 Rollback 未提交交易,**長交易 Rollback 時間可能很長**,並非瞬間完成
TRANSACTIONAL 不中斷現有交易,但禁止新交易,適合「今晚 10 點停機」類通知場景
ABORT 如拔電源,下次啟動需 Instance Recovery (SMON 適用 Redo 前滾、Rollback 未提交),啟動時間較長
NORMAL 可能因殭屍 Session 永遠等待而無法關閉,生產環境極少用
工具演進:SVRMGRL → SQL*Plus → Enterprise Manager
- 8i 起
SVRMGRL 功能併入 SQL*Plus,保留 SVRMGR 僅為相容
- 9i 移除
SVRMGRL 與 INTERNAL 用戶
- 標準作法:
SQLPLUS / AS SYSDBA → STARTUP/SHUTDOWN
- GUI:Enterprise Manager / Database Control / Cloud Control
實務檢查清單
# 啟動前
- 確認參數檔 (spfile/init.ora) 存在且正確
- 確認控制檔多路徑鏡像正常
- 確認備份/歸檔目的地磁碟空間充足
# 關閉前
- 通知應用團隊排程停機窗口
- 確認無長時間執行交易 (V$TRANSACTION)
- 選擇正確 SHUTDOWN 模式
- 關閉後驗證 Alert Log 無錯誤
啟動與關閉是 DBA 最基本卻最高頻的操作。精通三階段啟動機制、四種關閉模式差異與選擇邏輯,是從「會操作」進階到「懂原理、能決策」的必經之路。