理解 oracle 的 “lsnrctl status”
2024-08-29 13:49:34
供稿:網友
先看看 lsnrctl status 的輸出信息:
Services Summary...
Service "PLSExtPRoc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this
service...
Service "catadb" has 2 instance(s).
Instance "catadb", status UNKNOWN, has 1 handler(s) for this
service...
Instance "catadb", status READY, has 1 handler(s) for this service...
Service "catadbXDB" has 1 instance(s).
Instance "catadb", status READY, has 1 handler(s) for this service...
The command completed sUCcessfully
這里提出兩個問題:
1. 輸出中顯示的這些 service 是在哪里定義的?
2. 為什么一個 service 會有兩個 instance? 先來看第二個問題。從Oracle 8.1 版本后,在listener.ora文件中沒有為數據庫預先定義條目的時候,instance 和 listener 可以自動的互相發現。但是習慣上在listener.ora文件中為每個數據庫定義一個SID_DESC條目以便在需要的時候使用。這就使服務“catadb”有兩個實例:
一個狀態是 UNKNOWN 的實例 是在 listener.ora 文件中靜態定義;另一個狀態是 READY 的實例是當數據庫啟動時 PMON進程自動把數據庫注冊到監聽器。在數據庫啟動后每一分鐘注冊一次。在使用OEM等工具時需要有監聽的靜態定義。 再來看看這些服務是怎么定義的。oracle有三種監聽方式:Database 提供對數據庫實例的網絡訪問PLSExtProc PL/SQL 包訪問操作系統可執行程序的方法Executable 提供對操作系統可執行程序的網絡訪問 Service "PLSExtProc" 是在 listener.ora 文件中為數據庫實例缺省配置的,答應PL/SQL包訪問外部程序;
Service "catadb" 也是在 listener.ora 文件中配置,是每個數據庫連接使用的標準模式;
Service "catadbXDB" 是Oracle 9i以后版本創建數據庫時默認包含的XML DB特性,提供http、FTP等服務,在初始化文spfile(或pfile)中定義; right">(出處:清風軟件下載學院)