首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 資料庫啟動與關閉完全指南:NOMOUNT/MOUNT/OPEN、四種 Shutdown 模式

     編輯:Oracle 資料庫相關知識

啟動三階段:Instance → Mount → Open

階段命令動作適用場景
1. 建立 InstanceSTARTUP 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)

模式選擇決策樹

  1. 例行維護、有充足時間 → NORMAL
  2. 需快速關閉、保證資料一致性 → IMMEDIATE (最常用)
  3. 計劃性停機、允許交易自然結束 → TRANSACTIONAL
  4. 資料庫異常、無法正常關閉、必須立即停機 → 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 最基本卻最高頻的操作。精通三階段啟動機制、四種關閉模式差異與選擇邏輯,是從「會操作」進階到「懂原理、能決策」的必經之路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved