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

Oracle 資料庫服務全解析:13 大核心服務功能、啟動優先級、依賴關係與管理最佳實踐

     編輯:Oracle 資料庫基礎

Windows 平台 Oracle 服務架構概覽

Oracle 在 Windows 上以 Windows 服務形式運行,每個服務對應一個可執行檔,透過註冊表參數配置。理解服務功能與依賴,是安裝、升級、故障排查、安全加固的基礎。

5 個預設核心服務(安裝後自動建立)

服務名稱顯示名稱可執行檔功能啟動類型必要性
OracleDBConsole<SID>Oracle DB Consoleemagent.exeEnterprise Manager Database Console Web 介面Automatic可停用(改用 Cloud Control)
OracleJobScheduler<SID>Oracle Job Schedulerextjob.exeDBMS_SCHEDULER 外部作業執行器Disabled無外部作業可停用
OracleOraDb11g_home1iSQL*PlusOracle iSQL*Plusisqlplusctl.exeWeb 版 SQL*Plus(11g 已棄用,12c 移除)Manual**建議停用**
OracleOraDb11g_home1TNSListenerOracle TNS Listenertnslsnr.exe**網路監聽器**,處理遠程客戶端連接Automatic**必須啟動**
OracleService<SID>Oracle Databaseoracle.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

為什麼 OracleJobScheduler 預設 Disabled?

外部作業排程器 (extjob.exe) 需要載入外部程式(Shell 腳本、可執行檔),啟動後常駐記憶體佔用較大,**預設禁用以節省資源**。僅當使用 DBMS_SCHEDULER.CREATE_JOB(job_type=>'EXECUTABLE') 時需啟用。

13 種完整服務清單與詳細說明

#服務名稱模式功能進程參數檔日誌控制工具預設啟動必要條件
1OracleService資料庫核心oracle.exeinitSID.ora/spfileSIDALRT.logSVRMGRL, SQLPLUSAuto安裝資料庫即建立
2OracleTNSListener監聽器tnslsnr.exelistener.oralistener.logLSNRCTLAuto需遠程連接
3OracleAgentOEM 代理dbsnmp.exesnmp_rw.oranmi.logLSNRCTLAuto使用 OEM/Grid Control
4OracleClientCache名稱緩存onrsd.exenames.oraonrsd.logNAMESCTLManual有 Oracle Names Server
5OracleCMAdmin連接管理 Admincmadmin.execman.oracmadm_pid.trcCMCTLManual作為 Connection Manager
6OracleCMan連接管理閘道cmgw.execman.oracman_pid.trcCMCTLManual作為 Connection Manager
7OracleDataGatherer效能數據收集vppdc.exe—alert_dg.logvppcntlManual使用 Capacity Planner/Performance Manager
8OracleHTTPServerApache HTTP Serverapache.exehttpd.conf—apachectlManual需 Oracle 內建 Web Server(JSP/mod_plsql)
9OraclePagingServer傳呼/郵件告警pagnsrv.exe—paging.log—Manual配置 OEM 傳呼告警
10OracleNamesOracle Names Servernames.exenames.oranames.logNAMESCTLManual作為 Names Server
11OracleSNMPPeerMasterAgentSNMP 主代理agntsvc.exemaster.cfg——ManualSNMP 網管軟體監控 DB
12OracleSNMPPeerEncapsulatorSNMP 封裝轉換encsvc.exeencaps.cfg——Manual不相容 SNMP 代理轉換
13OracleManagementServerOEM Management Serveromsntsvr.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 執行帳號目錄執行權限

12c/18c/19c 服務變化重點

  • iSQL*Plus 服務移除:12c 起無此服務
  • DB Console 移除:12c 起改用 Enterprise Manager Cloud Control / Express
  • 多租戶架構:CDB/PDB 共用一個 OracleService、一個 Listener
  • Oracle Restart (Grid Infrastructure 單機版):以 CRS 管理資料庫/監聽器/ASM 為資源,取代 Windows 服務依賴鏈,支援自動故障轉移

總結

Oracle Windows 服務體系核心只有兩個:**OracleService(資料庫核心)與 OracleTNSListener(網路入口)**。其他 11 個服務按需啟用。**掌握服務功能、依賴順序、帳號權限、故障排查路徑**,是 Windows 平台 Oracle DBA 的必修課。新版本遷移時,重點關注棄用服務(iSQL*Plus、DB Console)與新架構(Oracle Restart、多租戶)帶來的運維模式變化。

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