首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 數據庫啟動與關閉全模式解析:從 NOMOUNT 到 OPEN 的七大狀態轉換

     編輯:Oracle 資料庫基礎

啟動/關閉核心命令演進

版本工具啟動命令關閉命令
8i/9i 早期SVRMGRSTARTUPSHUTDOWN
9i+SQL*PlusSTARTUPSHUTDOWN [NORMAL|IMMEDIATE|TRANSACTIONAL|ABORT]
12c+SQL*Plus / SRVCTLSTARTUP / 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

七大啟動模式深度解析

模式命令內部動作可用操作適用場景
NOMOUNTSTARTUP NOMOUNT讀取 SPFILE/PFILE → 啟動 SGA + 後台進程(PMON, SMON, DBWn, LGWR, CKPT...)創建控制文件、創建數據庫、恢復控制文件災難恢復、新建庫
MOUNTSTARTUP MOUNT 或 ALTER DATABASE MOUNTNOMOUNT + 打開控制文件,驗證數據文件/日誌文件路徑存在性(不校驗內容)歸檔模式切換、介質恢復、數據文件/日誌文件重命名/離線/聯機、備份控制文件維護窗口、備份恢復
OPENSTARTUP OPEN 或 ALTER DATABASE OPENMOUNT + 打開所有數據文件、聯機日誌、臨時文件,執行崩潰恢復(前滾/回滾)正常業務訪問、查詢、DML、DDL生產運行
DEFAULT (STARTUP)STARTUP依次執行 NOMOUNT → MOUNT → OPEN同上日常啟動
RESTRICTSTARTUP RESTRICTOPEN + 僅允許 RESTRICTED SESSION 權限用戶連接DBA 維護、數據修復、升級腳本運行排他性維護
FORCESTARTUP FORCESHUTDOWN ABORT + STARTUP(單命令完成)同上實例掛起無法正常關閉時強制重啟
PFILE 指定STARTUP PFILE=/path/init.ora讀取指定參數文件啟動,忽略默認 SPFILE同上參數調優測試、多實例參數隔離、SPFILE 損壞恢復

關閉模式對比

模式命令行為風險
NORMALSHUTDOWN NORMAL等待所有用戶斷開、不允許新連接、Checkpoint 後關閉可能永遠等不到(長連接)
TRANSACTIONALSHUTDOWN TRANSACTIONAL等待活躍事務提交/回滾、不允許新事務、Checkpoint 後關閉長事務導致等待久
IMMEDIATESHUTDOWN IMMEDIATE回滾活躍事務、斷開所有會話、Checkpoint 後關閉**推薦生產標準**,平衡速度與一致性
ABORTSHUTDOWN ABORT瞬間終止實例、不 Checkpoint、下次啟動自動執行實例恢復緊急情況,下次啟動較慢

實戰場景決策樹

  1. 日常維護重啟:SHUTDOWN IMMEDIATE → STARTUP
  2. 切換歸檔模式:SHUTDOWN IMMEDIATE → STARTUP MOUNT → ALTER DATABASE ARCHIVELOG → ALTER DATABASE OPEN
  3. 控制文件損壞恢復:STARTUP NOMOUNT → CREATE CONTROLFILE ... → ALTER DATABASE MOUNT → ALTER DATABASE OPEN RESETLOGS
  4. 參數文件錯誤導致無法啟動:STARTUP PFILE=/tmp/init_fixed.ora → 修正 SPFILE → CREATE SPFILE FROM PFILE → 重啟
  5. 實例凍結無法關閉:SHUTDOWN ABORT → STARTUP FORCE(或直接 STARTUP FORCE)
  6. 排他性數據修復: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 操作導致集群狀態不一致。

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