關閉數據庫的三階段(與啟動對應)
- 關閉數據庫 —— 將 SGA 髒數據刷盤,關閉數據文件/日志文件,普通用戶無法訪問。
- 卸載數據庫 —— 解除實例與數據庫綁定,實例仍運行。
- 關閉實例 —— 終止所有後台進程,釋放 SGA 內存。
四種關閉模式對比
| 模式 | 允許新連接 | 等待現有會話 | 未提交事務 | 啟動時需實例恢復 | 適用場景 |
| NORMAL | 是 | 是(無限等待) | 提交後再關 | 否 | 幾乎不用(可能永遠關不掉) |
| IMMEDIATE | 否 | 否(強制斷開) | 回滾 | 否 | 生產最常用,安全快速 |
| TRANSACTIONAL | 否 | 是(等事務結束) | 提交後再關 | 否 | 業務極敏感、可接受等待 |
| ABORT | 否 | 否(立即終止) | 不回滾 | 是 | 極端故障、STARTUP FORCE 內部調用 |
命令示例
SHUTDOWN NORMAL; -- 或直接 SHUTDOWN
SHUTDOWN IMMEDIATE; -- 推薦
SHUTDOWN TRANSACTIONAL;
SHUTDOWN ABORT; -- 慎用
超市打烊比喻
- NORMAL:永不趕客,客不走不關門。
- IMMEDIATE:停止進客,未結賬顧客退貨趕出,鎖門。
- TRANSACTIONAL:停止進客,讓現客結賬完再走,再鎖門。
- ABORT:直接斷電,顧客拋下購物車被趕出。
重啟相關
STARTUP FORCE; -- 相當於 SHUTDOWN ABORT + STARTUP
最佳實踐
- 計劃內維護:
SHUTDOWN IMMEDIATE;
- 極端情況(掛死、存儲故障):
SHUTDOWN ABORT 後 STARTUP(會自動實例恢復);
- 切勿常態化使用 ABORT,數據一致性風險極大。