先看看 lsnrctl status 的輸出信息
Services Summary
Service PLSExtProc has instance(s)
Instance PLSExtProc status UNKNOWN has handler(s) for this
service
Service catadb has instance(s)
Instance catadb status UNKNOWN has handler(s) for this
service
Instance catadb status READY has handler(s) for this service
Service catadbXDB has instance(s)
Instance catadb status READY has handler(s) for this service
The command completed successfully
這裡提出兩個問題
輸出中顯示的這些 service 是在哪裡定義的?
為什麼一個 service 會有兩個 instance?
先來看第二個問題從oracle 版本後在listenerora文件中沒有為數據庫預先定義條目的時候instance 和 listener 可以自動的互相發現但是習慣上在listenerora文件中為每個數據庫定義一個SID_DESC條目以便在需要的時候使用這就使服務catadb有兩個實例:
一個狀態是 UNKNOWN 的實例 是在 listenerora 文件中靜態定義另一個狀態是 READY 的實例是當數據庫啟動時 PMON進程自動把數據庫注冊到監聽器在數據庫啟動後每一分鐘注冊一次在使用OEM等工具時需要有監聽的靜態定義
再來看看這些服務是怎麼定義的oracle有三種監聽方式
Database
提供對數據庫實例的網絡訪問
PLSExtProc
PL/SQL 包訪問操作系統可執行程序的方法
Executable
提供對操作系統可執行程序的網絡訪問
Service PLSExtProc 是在 listenerora 文件中為數據庫實例缺省配置的允許PL/SQL包訪問外部程序
Service catadb 也是在 listenerora 文件中配置是每個數據庫連接使用的標准模式
Service catadbXDB 是Oracle i以後版本創建數據庫時默認包含的XML DB特性提供httpftp等服務在初始化文spfile(或pfile)中定義
From:http://tw.wingwit.com/Article/program/Oracle/201311/16556.html