開心生活站

位置:首頁 > IT科技 > 

Oracle,11g服務器監聽配置

IT科技1.66W
Oracle運行於數據庫服務器端一個進程,用於監聽所有來自客戶端的連接請求,並提供處理數據庫服務方面的請求。這個進程負責監聽用戶的連接請求,每當收到一個用戶請求,進程就會創建一個影子進程,然後把用戶請求轉交給這個影子進程,由影子進程繼續完成用戶提交的各種命令。一旦監聽進程把用戶轉交給影子進程,監聽進程的任務就算完成了,會繼續去監聽下一個用戶請求,配置文件listener.ora。Oracle能夠支持2中連接方式,分別是專有模式和共享模式,二者的區別在於,專有模式爲每個用戶連接啓動一個單獨的影子進程,相當於爲每個用戶提供一個單獨的到服務器的會話通道,其特點是響應客戶端請求速度快,但PGA佔用較多;共享模式是由多個用戶連接共享一個進程,多個用戶共享一個會話通道。

Oracle 11g服務器監聽配置

方法

一臺數據庫服務器一般只需要一個,一個可以監聽多個數據庫,也可以一個數據庫多個監聽,當然也可以爲每個數據庫配置專門的,這要根據具體的情況來配置。事實上,配置監聽就是將數據庫服務的註冊信息寫入指定文件,那樣每次啓動監聽的時候就會自動讀取數據庫的相關信息。我們把實例將數據庫將所提供的服務名及相關信息告知listener的過程稱之爲服務註冊,註冊通常包括數據庫的服務名、實例名、SERVER模式、端口號等。我們可以通過Lsnrctl命令查看監聽的運行情況和數據庫的狀態:
Ready:代表實例可以接受連接請求,是動態註冊的監聽;
Blocked:實例目前不能接受連接請求;
Unknown:靜態註冊的監聽。
在運行lsnrctl命令的status時,常會看到如下返回值(下圖紅色部分):

結果顯示,狀態UNKOWN和READY的監聽記錄,它們分別是靜態和動態註冊的監聽。先來說一下動態註冊,動態註冊是在instance啓動的時候,由PMON進程根據init.ora中的instance_name、service_names兩個參數將實例和服務動態註冊到listener中。如果沒有定義service_name,數據庫會根據db_name和db_domain組成的一個全局數據庫名成註冊到中,instance_name是實例名稱,一般和SID值一樣。


動態註冊不必須顯式的配置在listener.ora文件中,當然在listener.ora配置如圖7-4綠色部分的內容來實現動態註冊也無妨,DBA還可以通過SQL語句—“alter system register;”強制PMON向動態註冊。在Oracle 9i之後,不需要任何配置即可實現動態註冊,實例啓動後會自動在本地主機默認的號端口上查找,並進行註冊。


說明:在數據庫服務器啓動過程中,數據庫服務器會向監聽程序註冊相應的服務(無論何時啓動一個數據庫,默認地都有兩條信息註冊到中:數據庫服務器對應的實例和服務。)相當於是這樣:在數據庫服務器和客戶端之間有一監聽程序(Listener),在監聽程序中,會記錄相應數據庫對應的服務名(一個數據庫可能對應有多個服務名),當客戶端需要連接數據庫時,只需要提供服務名,就可以建立客戶端和服務器之間的連接。


注意:Oracle_SID從ORACLE 10G開始,參數文件不再記錄INSTANCE_NAME,此時INSTANCE_NAME動態從系統ORACLE_SID獲得來保持一致。

Oracle 11g服務器監聽配置 第2張

事實上,我們常說的Oracle數據庫監聽配置,一般都是指靜態註冊—將實例的相關信息手動告知listener,即將數據庫的相關信息配置到listener.ora中。在實例啓動時就會讀取listener.ora文件的配置,listener.ora中的GLOBAL_DBNAME向外提供服務名,listener.ora中的SID_NAME提供註冊的實例名,將實例和服務註冊到監聽程序,靜態配置最大的問題就是無法知道數據庫真正的狀態。


說明:如果關閉數據庫後在查看監聽會發現動態註冊的自動消失了只有靜態註冊的在,動態註冊機制不需要對做任何額外配置,而結果卻比靜態註冊更準確,靜態註冊機制需要針對每個數據庫都做額外配置,但是結果卻不準確。關於監聽的配置,可以使用網絡配置助手(Oracle Net Configuration Assistant)或網絡管理器(Oracle Net Manager),也可以通過“f:appnpruduct11.2.0dbhome_1etworkadminlistener.ora”直接手動配置。


1)Net Configuration Assistant,主要爲用戶提供Oracle數據庫的監聽程序、命名方法、本地NET服務名和目錄配置,網絡配置助手以嚮導的形式出現,使配置過程簡單,適合初學者,根據嚮導輸入監聽程序名稱→網絡協議→主機→端口,完成配置。

Oracle 11g服務器監聽配置 第3張

2)Net Manager和Net Configuration Assistant功能相似,主要內容爲本地服務命名和監聽程序配置,但Net Manager將所有配置步驟集合到同一界面,更適合熟練者進行操作。根據界面的提示,點擊“監聽程序”,再點擊左側欄的“+”添加監聽,按步驟輸入:監聽程序名稱→網絡協議→主機→端口,完成配置。

Oracle 11g服務器監聽配置 第4張

3)通過“$ORACLE_HOME/network/admin/listener.ora”(Linux系統下)“$ORACLE_HOME11.2.0dbhome_1etworkadminlistener.ora”(Windows系統)直接手動配置,在listener.ora加入下圖紅色部分的內容。


說明:可以通過查看listener.ora文件判斷監聽的註冊方式,如果[監聽名]和SID_LIST_[監聽名]配置是成對出現的,這代表是靜態監聽;如果listener.ora文件只有[監聽名]的配置,監聽就變成動態監聽了,這時它需要由oracle數據庫的pmon主動向監聽註冊,告知監聽有這麼一個服務的存在。

Oracle 11g服務器監聽配置 第5張