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

Oracle 資料庫啟動與關閉模式完整解析

     編輯:Oracle 資料庫基礎

核心概念區分

  • 資料庫實例:背景進程 + SGA 記憶體結構,無持久資料檔
  • 資料庫:磁碟上的實體檔案 (資料檔、控制檔、重做日誌檔)

四種關閉模式詳細比較

模式指令行為適用場景風險
NormalSHUTDOWN等待所有用戶主動斷開,不允許新連線計畫性維護,用戶配合度高若有閒置連線不斷開,資料庫永遠無法關閉
ImmediateSHUTDOWN IMMEDIATE等待當前 SQL 完成,回滾未提交交易,斷開所有連線,不允許新連線最常用的生產環境關閉方式長時間執行的 SQL 需等待完成
TransactionalSHUTDOWN TRANSACTIONAL等待當前交易 (Transaction) 完成 (Commit/Rollback),再關閉需確保交易完整性的場景等待時間不可控,視交易長短
AbortSHUTDOWN ABORT強制即時終止,不回滾,不刷新緩衝區,下次啟動需執行實例恢復緊急情況、系統掛死、其他模式無效下次啟動較慢 (需 Instance Recovery),極罕見情況下可能資料不一致

共同點:所有模式均禁止新連線建立。

資料庫啟動三階段

SQL> STARTUP NOMOUNT    -- 1. 啟動實例 (分配 SGA, 啟動背景進程)
SQL> ALTER DATABASE MOUNT    -- 2. 掛載資料庫 (讀取控制檔,關聯實例與資料庫)
SQL> ALTER DATABASE OPEN;    -- 3. 開啟資料庫 (線上資料檔、重做日誌,允許用戶存取)

單行指令 STARTUP 等同依序執行上述三步。

特殊啟動模式

  • STARTUP MOUNT:啟動實例並掛載,適合備份控制檔、啟用歸檔模式、資料檔離線操作
  • STARTUP NOMOUNT:僅啟動實例,適合重建控制檔、建立新資料庫
  • STARTUP UPGRADE:升級模式啟動,限制功能,用於資料庫版本升級
  • STARTUP RESTRICT:限制模式,僅允許 RESTRICTED SESSION 權限用戶連線,適合維護操作

實戰常見錯誤與對策

錯誤代碼訊息原因解決
ORA-01034ORACLE not available實例未啟動執行 STARTUP
ORA-01507Database not mounted未掛載資料庫就執行 OPEN先 ALTER DATABASE MOUNT
ORA-01031Insufficient privileges非 SYSDBA/SYSOPER 權限以 SYSDBA 連線 (sqlplus / as sysdba)
ORA-01109Database not open資料庫未 OPEN執行 ALTER DATABASE OPEN

關於 SHUTDOWN NORMAL 卡住的思考

若以 SYS 執行 SHUTDOWN 卡住,因為 SYS 本身即為一個連線。解決方案:

  1. 另開視窗以 SYSDBA 連線執行 SHUTDOWN IMMEDIATE 強制關閉
  2. 或使用 ALTER SYSTEM KILL SESSION 先踢掉閒置會話
  3. 生產環境建議直接使用 SHUTDOWN IMMEDIATE 避免等待

啟動流程理解:為何要三步驟?

  1. 資料檔在磁碟 → 需載入記憶體操作
  2. 啟動實例 = 配置 SGA + 啟動背景進程 (DBWn, LGWR, SMON, PMON...)
  3. MOUNT = 讀取控制檔,建立實例與資料庫關聯
  4. OPEN = 線上資料檔/重做日誌,允許存取

結語:掌握四種關閉模式差異、三階段啟動流程與常見錯誤代碼,是 DBA 日常運維的基本功。生產環境首選 SHUTDOWN IMMEDIATE,緊急時 ABORT 並預期較長的啟動恢復時間。

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