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

Oracle 資料庫啟動關閉完整操作手冊 (單機/雙機/多種模式)

     編輯:關於SqlServer

Oracle 實例啟動與關閉核心概念

Oracle 資料庫啟動分三階段:NOMOUNT → MOUNT → OPEN,關閉則反向。各階段完成不同初始化任務,適用不同維護場景。

單機環境操作流程 (SQL*Plus)

-- 連線為 SYSDBA (需 OS 認證或密碼檔)
sqlplus / as sysdba
-- 或
sqlplus sys/password@sid as sysdba

-- 完整啟動 (相當於 STARTUP NOMOUNT → ALTER DATABASE MOUNT → ALTER DATABASE OPEN)
STARTUP

-- 分階段啟動
STARTUP NOMOUNT    -- 僅啟動 Instance (SGA + 背景進程),讀取參數檔
STARTUP MOUNT      -- 掛載控制檔,確認資料檔/Redo Log 位置,未開啟檔案
STARTUP OPEN       -- 開啟所有資料檔/Redo Log,允許用戶存取 (預設)

-- 關閉 (正常模式:等待工作階段結束、檢查點、關閉檔案、卸載、關閉 Instance)
SHUTDOWN IMMEDIATE  -- 強制中斷交易、回滾、關閉 (最常用生產關閉)
SHUTDOWN NORMAL     -- 等待所有用戶斷線 (不可預測時間)
SHUTDOWN TRANSACTIONAL -- 等待進行中交易完成、不允許新交易
SHUTDOWN ABORT      -- 緊急中止,下次啟動需執行執行個體復原 (避免使用)

七種啟動模式詳細對照表

模式命令階段可執行操作適用場景
NOMOUNTSTARTUP NOMOUNTInstance 啟動建立控制檔、建立資料庫、恢復控制檔新建資料庫、控制檔損壞重建
MOUNTSTARTUP MOUNTInstance + 掛載歸檔模式切換、媒體恢復、資料檔上線/離線、重新定位檔案備份恢復、結構調整、歸檔設定
OPENSTARTUP / STARTUP OPEN完整開啟正常業務存取、查詢、DML/DDL日常生產運行
RESTRICTSTARTUP RESTRICTOPEN + 限制僅允許 RESTRICTED SESSION 權限用戶維護窗口、資料遷移、效能測試
FORCESTARTUP FORCE強制重啟先 ABORT 關閉再正常啟動SHUTDOWN 掛起無法關閉時
PFILE 指定STARTUP PFILE=path依指定參數檔使用非預設參數檔啟動參數調優測試、多環境部署
RECOVERSTARTUP MOUNT → RECOVER DATABASEMOUNT + 恢復媒體恢復、Point-in-Time Recovery災難恢復、備份驗證

雙機/叢集環境 (Oracle RAC / HA) 操作差異

使用 srvctl 管理資源,而非直接 SQL*Plus:

# 啟動整個資料庫 (所有實例)
srvctl start database -d orcl

# 啟動特定實例
srvctl start instance -d orcl -i orcl1

# 關閉資料庫 (所有實例)
srvctl stop database -d orcl -o immediate

# 關閉特定實例
srvctl stop instance -d orcl -i orcl1 -o immediate

# 檢查狀態
srvctl status database -d orcl
srvctl status instance -d orcl -i orcl1

注意:RAC 環境下勿直接使用 SQL*Plus SHUTDOWN/STARTUP,會破壞叢集資源狀態一致性。

Oracle 9i/10g/11g/12c/19c 新增啟動特性

  • 9i:STARTUP UPGRADE (遷移模式)、STARTUP DOWNGRADE
  • 11g:STARTUP EXCLUSIVE (單實例獨佔掛載,RAC 維護用)
  • 12c:CDB/PDB 架構,STARTUP PLUGGABLE DATABASE pdb1、ALTER PLUGGABLE DATABASE ALL OPEN
  • 19c:STARTUP FORCE 增強、自動診斷儲存庫 (ADR) 整合

參數檔 (PFILE/SPFILE) 管理最佳實踐

-- 從 SPFILE 建立 PFILE (文字編輯用)
CREATE PFILE='/tmp/init.ora' FROM SPFILE;

-- 從 PFILE 建立 SPFILE (持久化)
CREATE SPFILE FROM PFILE='/tmp/init.ora';

-- 修改 SPFILE 參數 (立即/下次啟動生效)
ALTER SYSTEM SET sga_target=2G SCOPE=SPFILE;      -- 下次啟動
ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=BOTH; -- 立即+持久

-- 參數檔搜尋順序
1. $ORACLE_HOME/dbs/spfileSID.ora
2. $ORACLE_HOME/dbs/spfile.ora
3. $ORACLE_HOME/dbs/initSID.ora

常見啟動失敗診斷速查

錯誤代碼/現象可能原因排查步驟
ORA-01078: failure in processing system parameters參數檔語法錯誤、路徑錯誤、參數值無效檢查 alert.log、改用 PFILE 啟動、逐一驗證參數
ORA-00205: control file error控制檔遺失、損壞、路徑不符檢查 control_files 參數、從備份恢復控制檔、NOMOUNT 重建
ORA-01122: database file failed verification資料檔標頭不一致 (SCN/檢查點)媒體恢復、檢查檔案是否屬於同一資料庫
ORA-00600/ORA-07445內部錯誤/核心傾印收集 trace 檔、Metalink 查詢、聯繫 Oracle Support
Instance 卡在 "Starting ORACLE instance"SGA 過大超過實體記憶體、巨大頁面設定錯誤檢查 /proc/meminfo、調整 sga_target、檢查 /etc/sysctl.conf

自動化啟動/關閉腳本範例 (Linux/Unix)

#!/bin/bash
# oracle_start.sh
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

# 使用 srvctl (RAC) 或 sqlplus (單機)
if [ -f $ORACLE_HOME/bin/srvctl ]; then
    srvctl start database -d $ORACLE_SID
else
    sqlplus / as sysdba <
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved