理解 oracle 的 lsnrctl status

理解 oracle 的 「lsnrctl status數據庫

先看看 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 UNKNOWoracle

先看看 lsnrctl status 的輸出信息:工具

Services Summary...this

Service "PLSExtProc" has 1 instance(s).操作系統

Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for thisblog

service...進程

Service "catadb" has 2 instance(s).get

Instance "catadb", status UNKNOWN, has 1 handler(s) for thistable

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)中定義;

相關文章
相關標籤/搜索