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

Windows 命令列啟動 Oracle 服務標準順序與腳本化實作

     編輯:Oracle 資料庫基礎

服務啟動依賴關係

Oracle 資料庫在 Windows 上以多項服務形式運行,啟動順序嚴格遵循依賴關係:

  1. OracleService —— Windows 服務,對應 Instance 進程 (`oracle.exe`),**必須最先啟動**。
  2. OracleService —— 若使用獨立恢復目錄資料庫,同步啟動。
  3. OracleDBConsole —— Enterprise Manager Database Control (OEM),依賴 Instance 開啟。
  4. OracleTNSListener —— 監聽器服務,建議最後啟動(Instance 已開啟可自動註冊)。

命令列標準操作流程

REM 1. 啟動目標資料庫 Instance 服務
net start OracleServiceORCL

REM 2. 啟動恢復目錄資料庫 Instance 服務 (若有)
net start OracleServiceTEST

REM 3. 設定 SID 並啟動 OEM Database Control
set ORACLE_SID=orcl
emctl start dbconsole

REM 4. 啟動監聽器
lsnrctl start

實際輸出範例

C:\>net start OracleServiceORCL
OracleServiceORCL 服務正在啟動 ..............................
OracleServiceORCL 服務已經啟動成功。

C:\>net start OracleServiceTEST
OracleServiceTEST 服務正在啟動 ..............................
OracleServiceTEST 服務已經啟動成功。

C:\>set ORACLE_SID=orcl

C:\>emctl start dbconsole
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
...
OracleDBConsoleorcl 服務已經啟動成功。

C:\>lsnrctl start
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production
...
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN...
命令執行成功

批次檔自動化腳本 (start_oracle.cmd)

@echo off
echo ===== 啟動 Oracle 完整服務堆疊 =====

net start OracleServiceORCL
if errorlevel 1 echo 警告: OracleServiceORCL 啟動失敗

net start OracleServiceTEST
if errorlevel 1 echo 警告: OracleServiceTEST 啟動失敗

set ORACLE_SID=orcl
emctl start dbconsole

lsnrctl start

echo ===== 所有服務啟動指令已送出 =====
pause

關機順序(反向)

lsnrctl stop
emctl stop dbconsole
net stop OracleServiceTEST
net stop OracleServiceORCL

進階技巧

  • 檢查 Instance 是否真正 OPEN: `sqlplus / as sysdba @check_open.sql`,腳本查詢 `SELECT OPEN_MODE FROM V$DATABASE;`。
  • Windows 服務依賴設定: 用 `sc config OracleDBConsoleorcl depend= OracleServiceORCL` 讓服務管理器自動處理順序。
  • 多 Instance 環境: 每個 SID 對應一組服務,腳本以迴圈遍歷 SID 清單。

結語

命令列啟動 Oracle 服務的核心在於正確順序與確認 Instance OPEN 狀態。將上述流程封裝為批次檔/Shell 腳本並納入版控,可確保跨環境、跨人員操作的一致性,也是自動化部署與災難演練的基礎組件。

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