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

Oracle 資料庫啟動與關閉模式總覽:STARTUP/SHUTDOWN 參數完整對照

     編輯:Oracle 資料庫基礎

Oracle 資料庫啟動 (STARTUP) 與關閉 (SHUTDOWN) 擁有多種模式參數,每種對應不同的維護場景與業務需求。本文系統整理 8 種啟動模式與 3 種關閉模式的階段行為、適用場景、權限要求與組合用法,並提供決策流程圖,幫助 DBA 精準選擇操作模式。

啟動模式總覽 (8 種)

命令到達階段核心動作典型用途權限需求
STARTUP NOMOUNTNOMOUNT啟動 Instance (SGA+背景進程),讀取參數檔CREATE DATABASE、重建控制檔、恢復控制檔SYSDBA
STARTUP MOUNTMOUNTNOMOUNT + 讀取/開啟控制檔備份控制檔、啟用/關閉歸檔、重命名數據檔/Redo、恢復資料庫SYSDBA
STARTUP OPEN / STARTUPOPENMOUNT + 開啟所有數據檔/Redo**正常業務服務** (預設)SYSDBA
STARTUP READ ONLYOPEN READ ONLYMOUNT + 唯讀開啟數據檔報表查詢、邏輯備份、立由庫SYSDBA
STARTUP RESTRICTOPEN RESTRICTEDOPEN + 僅允許 RESTRICTED SESSION 權限用戶DBA 維護窗口、資料修補、升級腳本執行SYSDBA
STARTUP FORCEOPENSHUTDOWN ABORT + STARTUP資料庫掛死、無法正常關閉時強制重啟SYSDBA
STARTUP PFILE=path依參數檔讀取指定 PFILE 啟動 (忽略 SPFILE)參數調優測試、SPFILE 損壞恢復SYSDBA
STARTUP EXCLUSIVEOPEN獨佔模式掛載 (RAC 單節點維護)非 RAC 環境預設;RAC 時防止其他節點掛載SYSDBA

關閉模式總覽 (3 種標準 + 1 種緊急)

命令行為流程資料完整性啟動恢復適用場景
SHUTDOWN NORMAL拒絕新連線 → 等待所有用戶主動斷開 → 關閉✅ 無資料損失無需恢復計劃維護、時間充裕
SHUTDOWN IMMEDIATE拒絕新連線 → 等待當前 SQL 完成 → 回滾未提交交易 → 斷開會話 → 關閉✅ 未提交交易回滾無需恢復**生產標準關閉**
SHUTDOWN TRANSACTIONAL拒絕新連線 → 等待當前交易提交/回滾 → 斷開會話 → 關閉✅ 交易完整無需恢復長交易業務、最小化回滾影響
SHUTDOWN ABORT立即終止進程、不回滾、不關閉檔案⚠️ 需實例恢復**需實例恢復** (應用 Redo)緊急故障、資料庫掛死、其他模式無效

階段轉換等價命令

-- 啟動階段手動控制
STARTUP NOMOUNT;
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;           -- 或 OPEN READ ONLY / OPEN RESTRICT

-- 關閉階段手動控制 (需 MOUNT 階段)
SHUTDOWN IMMEDIATE;            -- 等價於上述三步驟自動完成
-- 或
ALTER DATABASE CLOSE NORMAL;   -- 僅關閉數據檔,保持 MOUNT
ALTER DATABASE DISMOUNT;       -- 卸載控制檔
-- Instance 仍在 NOMOUNT,需 SHUTDOWN ABORT 才能完全停止 Instance

決策流程:如何選擇模式?

啟動決策:
  IF 建立新資料庫/重建控制檔          -> STARTUP NOMOUNT
  ELSE IF 備份控制檔/重命名檔案/恢復    -> STARTUP MOUNT
  ELSE IF 僅供報表/邏輯備份            -> STARTUP READ ONLY
  ELSE IF DBA 獨佔維護/升級            -> STARTUP RESTRICT
  ELSE IF 資料庫掛死/異常關閉          -> STARTUP FORCE
  ELSE IF 指定參數檔啟動               -> STARTUP PFILE=...
  ELSE                                 -> STARTUP (預設 OPEN)

關閉決策:
  IF 緊急故障/掛死/其他模式失效        -> SHUTDOWN ABORT
  ELSE IF 長交易業務/最小化回滾        -> SHUTDOWN TRANSACTIONAL
  ELSE IF 生產標準/計劃變更            -> SHUTDOWN IMMEDIATE
  ELSE                                 -> SHUTDOWN NORMAL

權限與密碼檔

  • 所有啟動/關閉命令需 **SYSDBA** 或 **SYSOPER** 權限
  • 本地 OS 認證:CONN / AS SYSDBA (需屬於 dba/oper 組)
  • 遠端認證:需 $ORACLE_HOME/dbs/orapwSID 密碼檔,CONN sys/pwd@tns AS SYSDBA
  • REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE/SHARED/NONE 參數控制密碼檔用法

常見組合場景實戰

場景命令序列
啟用歸檔模式SHUTDOWN IMMEDIATE → STARTUP MOUNT → ALTER DATABASE ARCHIVELOG → ALTER DATABASE OPEN
重命名系統表空間檔案STARTUP MOUNT → ALTER DATABASE RENAME FILE ... → ALTER DATABASE OPEN
參數調優測試 (不影響 SPFILE)CREATE PFILE='/tmp/test.ora' FROM SPFILE; 編輯 → STARTUP PFILE='/tmp/test.ora'
RAC 節點獨佔維護STARTUP EXCLUSIVE MOUNT → 維護操作 → ALTER DATABASE OPEN
緊急重啟 (掛死)STARTUP FORCE (單命令完成 ABORT+STARTUP)

監控啟動/關閉進度

-- 查看 ALERT LOG 即時尾部
tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log

-- 查看實例狀態
SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;

-- 查看啟動階段 (內部固定視圖)
SELECT * FROM V$INSTANCE_RECOVERY;  -- 僅恢復階段可見

精準掌握每種模式的階段行為與副作用,能讓 DBA 在變更窗口、故障搶修、效能調優等關鍵時刻做出最優決策,將業務影響降至最低。

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