核心定義
| 概念 | 本質 | 組成 | 生命週期 |
| Database(資料庫) | 資料的**靜態儲存介質** | 資料檔、控制檔、重做日誌檔、參數檔、密碼檔 | 檔案層面,可獨立存在、備份、複製、移動 |
| Instance(實例) | 操作資料庫的**動態進程與記憶體** | SGA、PGA、背景進程(PMON、SMON、DBWn、LGWR、CKPT...) | 進程層面,啟動→掛載→開啟→關閉,一個實例同時只能開啟一個資料庫 |
三大啟動階段
STARTUP NOMOUNT -- 僅啟動 Instance(分配 SGA、啟動背景進程),未讀取控制檔
STARTUP MOUNT -- Instance 掛載 Database(讀取控制檔,確認資料檔/重做日誌位置),資料庫仍關閉
STARTUP OPEN -- 開啟資料庫(線上重做日誌開啟、資料檔上線),用戶可正常連線操作
關鍵限制:一個 Instance 僅能 Open 一個 Database
若需切換資料庫,必須 SHUTDOWN 實例 → 修改參數檔/環境變數 → STARTUP 新資料庫。嘗試在同一實例 ALTER DATABASE OPEN 另一資料庫會拋 ORA-16169(資料庫已開啟)。
RAC 例外:多 Instance 掛載同一 Database
- Real Application Clusters:多節點各自啟動 Instance,共享同一組資料檔(共享儲存)。
- 控制檔位圖記錄
enabled threads,每個 Instance 對應一個 Redo Thread。
實務場景對照
| 操作 | 影響層級 | 典型指令 |
| 建立資料庫 | 檔案層 | CREATE DATABASE / DBCA |
| 建立實例 | 進程層 | ORADIM -NEW -SID ... (Windows) / init.ora + STARTUP NOMOUNT |
| 備份資料庫 | 檔案層 | RMAN/EXP/冷備份複製檔案 |
| 重啟實例 | 進程層 | SHUTDOWN IMMEDIATE; STARTUP; |
| 掛載不同資料庫 | 需重啟實例 | SHUTDOWN; 修改 ORACLE_SID/參數檔; STARTUP MOUNT |