Oracle 在 Windows 上以 Windows 服務形式運行,每個服務對應一個可執行檔,透過註冊表參數配置。理解服務功能與依賴,是安裝、升級、故障排查、安全加固的基礎。
| 服務名稱 | 顯示名稱 | 可執行檔 | 功能 | 啟動類型 | 必要性 |
|---|---|---|---|---|---|
| OracleDBConsole<SID> | Oracle DB Console | emagent.exe | Enterprise Manager Database Console Web 介面 | Automatic | 可停用(改用 Cloud Control) |
| OracleJobScheduler<SID> | Oracle Job Scheduler | extjob.exe | DBMS_SCHEDULER 外部作業執行器 | Disabled | 無外部作業可停用 |
| OracleOraDb11g_home1iSQL*Plus | Oracle iSQL*Plus | isqlplusctl.exe | Web 版 SQL*Plus(11g 已棄用,12c 移除) | Manual | **建議停用** |
| OracleOraDb11g_home1TNSListener | Oracle TNS Listener | tnslsnr.exe | **網路監聽器**,處理遠程客戶端連接 | Automatic | **必須啟動** |
| OracleService<SID> | Oracle Database | oracle.exe | **資料庫核心進程**(SGA、背景進程、Dispatcher) | Automatic | **必須啟動** |
命令列啟動/停止:
REM 監聽器 LSNRCTL START LSNRCTL STOP LSNRCTL STATUS REM 資料庫服務 NET START OracleServiceORCL NET STOP OracleServiceORCL REM 或用 ORADIM ORADIM -STARTUP -SID ORCL ORADIM -SHUTDOWN -SID ORCL -SHUTTYPE SRV -SHUTMODE IMMEDIATE
外部作業排程器 (extjob.exe) 需要載入外部程式(Shell 腳本、可執行檔),啟動後常駐記憶體佔用較大,**預設禁用以節省資源**。僅當使用 DBMS_SCHEDULER.CREATE_JOB(job_type=>'EXECUTABLE') 時需啟用。
| # | 服務名稱模式 | 功能 | 進程 | 參數檔 | 日誌 | 控制工具 | 預設啟動 | 必要條件 |
|---|---|---|---|---|---|---|---|---|
| 1 | OracleService | 資料庫核心 | oracle.exe | initSID.ora/spfile | SIDALRT.log | SVRMGRL, SQLPLUS | Auto | 安裝資料庫即建立 |
| 2 | Oracle | 監聽器 | tnslsnr.exe | listener.ora | listener.log | LSNRCTL | Auto | 需遠程連接 |
| 3 | Oracle | OEM 代理 | dbsnmp.exe | snmp_rw.ora | nmi.log | LSNRCTL | Auto | 使用 OEM/Grid Control |
| 4 | Oracle | 名稱緩存 | onrsd.exe | names.ora | onrsd.log | NAMESCTL | Manual | 有 Oracle Names Server |
| 5 | Oracle | 連接管理 Admin | cmadmin.exe | cman.ora | cmadm_pid.trc | CMCTL | Manual | 作為 Connection Manager |
| 6 | Oracle | 連接管理閘道 | cmgw.exe | cman.ora | cman_pid.trc | CMCTL | Manual | 作為 Connection Manager |
| 7 | Oracle | 效能數據收集 | vppdc.exe | — | alert_dg.log | vppcntl | Manual | 使用 Capacity Planner/Performance Manager |
| 8 | Oracle | Apache HTTP Server | apache.exe | httpd.conf | — | apachectl | Manual | 需 Oracle 內建 Web Server(JSP/mod_plsql) |
| 9 | Oracle | 傳呼/郵件告警 | pagnsrv.exe | — | paging.log | — | Manual | 配置 OEM 傳呼告警 |
| 10 | Oracle | Oracle Names Server | names.exe | names.ora | names.log | NAMESCTL | Manual | 作為 Names Server |
| 11 | OracleSNMPPeerMasterAgent | SNMP 主代理 | agntsvc.exe | master.cfg | — | — | Manual | SNMP 網管軟體監控 DB |
| 12 | OracleSNMPPeerEncapsulator | SNMP 封裝轉換 | encsvc.exe | encaps.cfg | — | — | Manual | 不相容 SNMP 代理轉換 |
| 13 | Oracle | OEM Management Server | omsntsvr.exe | — | oms.nohup | — | Manual | 使用 OEM 10g/11g Repository |
OracleService (資料庫核心)
│
├─ 依賴:Windows 標準服務 (RPC, EventLog, PlugPlay)
│
└─ 被依賴:
OracleTNSListener (監聽器需資料庫註冊服務名)
│
└─ 被依賴:
OracleDBConsole (EM Console 需監聽器連資料庫)
OracleAgent (代理需監聽器/資料庫)
關鍵點:監聽器啟動時會向資料庫註冊服務(動態註冊),**資料庫必須先啟動**。若監聽器先啟動,需等待資料庫啟動後執行
LSNRCTL> REGISTER或等待 PMON 自動註冊(約 60 秒)。
| 服務 | 建議執行帳號 | 權限原則 |
|---|---|---|
| OracleService | 專用網域帳號 (非 Local System) | 最小權限:本地登入、作為服務登入、讀寫 Oracle Home/資料檔/日誌目錄 |
| TNSListener | 同 OracleService 或專用帳號 | 需讀取 listener.ora、sqlnet.ora、wallet 目錄 |
| 其他 | 同 OracleService 或 Local System | 視實際功能需求授予目錄權限 |
避免使用 Local System:雖方便但權限過大,違反最小權限原則;網域環境下無法存取網路共享(備份/資料檔在 NAS 時會失敗)。
| 現象 | 可能原因 | 排查步驟 |
|---|---|---|
| OracleService 無法啟動 | 參數檔錯誤、權限不足、端口衝突、資料檔損壞 | 1. Event Viewer → Application 日誌找 ORA- 錯誤 2. 檢查 alert_SID.log 詳細錯誤堆疊 3. 驗證 oracle.exe 權限、防火牆、磁碟空間 |
| TNSListener 啟動但客戶端連不上 | 防火牆、listener.ora IP/端口錯誤、服務未註冊 | 1. LSNRCTL STATUS 確認服務狀態 2. TNSPING 測試網路連通 3. 檢查 sqlnet.ora VALID_NODE_CHECKING |
| DB Console 網頁打不開 | OracleDBConsole 服務未啟動、端口 5500/1158 佔用、憑證過期 | 1. NET START OracleDBConsole 2. EMCTL STATUS DBCONSOLE 3. 重建憑證:EMCTL SECURE DBCONSOLE |
| 外部作業失敗 | OracleJobScheduler Disabled、extjob.exe 權限不足 | 1. 啟用服務並設為 Automatic 2. 授予 extjob 執行帳號目錄執行權限 |
Oracle Windows 服務體系核心只有兩個:**OracleService