動態監聽註冊

seagull76發表於2009-08-28
動態服務註冊
Oracle9i 以上例程可以使用服務註冊來通知監聽程式有關其資料庫服務的資訊。動態服務註冊依賴PMON程式向監聽程式註冊例程資訊。PMON 還通知監聽程式有關例程和共享伺服器排程程式的當前狀態和負載。如果安裝了Oracle9i JVM,則可向監聽程式動態註冊HTTP 和IIOP 監聽終端。
啟動例程時,系統會從初始化引數檔案中讀取有關監聽程式的初始化引數,PMON 透過該檔案向監聽程式註冊資訊。如果例程啟動時監聽程式尚未執行(即最好是先啟監聽,再啟資料庫),PMON 將不向監聽程式註冊資訊。PMON 將繼續嘗試與監聽程式建立聯絡(即資料庫啟動後,再啟動監聽的話,PMON程式還是會在後來自動註冊到監聽器上)。監聽程式將拒絕建立與未註冊服務進行的任何連線。
動態服務註冊的優點
• 無需在listener.ora 檔案中設定SID_LIST_LISTENER_NAME 引數,該引數用於指定有關監聽程式所服務的資料庫的資訊。如果使用的管理工具要求使用該引數,則仍需要進行設定。
• 啟用連線時故障轉移功能。
• 啟用共享伺服器的連線負載平衡功能。
動態服務註冊的配置
1.基本配置
Oracle9i 或Oracle8i 例程使用動態服務註冊。註冊由每個資料庫例程的PMON程式執行,每個例程在資料庫初始化引數檔案中都有必需的配置。動態服務註冊不要求在listener.ora 檔案中進行任何配置。
動態服務註冊在資料庫初始化檔案中配置。監聽程式配置必須與資料庫初始化檔案中的資訊同步。
必須配置下列初始化引數,才能進行服務註冊:
• SERVICE_NAMES:為該例程連線的資料庫服務指定一個或多個名稱。可以指定多個服務名,以區別同一資料庫的不同用途。
• INSTANCE_NAME:指定例程名。在單例程資料庫系統中,例程名通常與資料庫名相同。
示例
SERVICE_NAMES=sales.us.oracle.com
INSTANCE_NAME=salesdb
2.附加配置
預設情況下,PMON 向TCP/IP 的預設本地地址- 埠1521- 處的本地監聽程式註冊服務資訊。
使用非預設監聽程式可以強制PMON 向不使用TCP/IP 或埠1521 的伺服器上的本地監聽程式進行註冊,具體方法是按如下所示對初始化引數檔案中的LOCAL_LISTENER 引數進行配置:
LOCAL_LISTENER=listener_alias
必須透過tnsnames.ora 等命名方法將listener_alias 解析為監聽程式協議地址。以下是tnsnames.ora 中的一個條目示例:
listener_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=salesserver)(PORT=1421)))
相關其它內容:
靜態監聽的listener.ora樣列
1. LISTENER =
2. (ADDRESS_LIST =
3. (ADDRESS= (PROTOCOL= TCP)(Host= stcsun02)(Port= 1521)))
4. SID_LIST_LISTENER =
5. (SID_LIST =
6. (SID_DESC =
7. (ORACLE_HOME= /home/oracle)
8. (GLOBAL_DBNAME = ORCL.us.oracle.com)
9. (SID_NAME = ORCL)))
靜態監聽的listener.ora內容解釋
1. 監聽程式的名稱。預設名稱是LISTENER。
2. ADDRESS_LIST 引數包含一個地址塊,監聽程式監聽其中所列地址處的傳入連線。該塊中定義的每個地址都代表一種監聽程式接收連線的不同方法。
3.TCP 地址表示從網路上的客戶機傳入的TCP 連線,連線目標是埠1521。這些客戶機使用各自的tnsnames.ora 檔案中定義的埠連線至該監聽程式。監聽程式將根據為其定義的SID_LIST 來指定要連線的資料庫。請注意,在配置有監聽程式的節點上,只要監聽程式具有唯一的名稱和唯一的埠,則可配置多個監聽程式。所配置的每個監聽程式都有自己的SID_LIST,但是,一個資料庫可以由多個監聽程式提供服務。
4. 監聽程式可對一臺機器上的多個資料庫進行監聽。這些資料庫的SID 在SID_LIST_listener_name 塊或引數處定義。
5. 如果定義了多個SID,則需要定義SID_LIST 引數
6. 對於每個定義的SID 來說,必須存在SID_DESC 引數。
7. ORACLE_HOME 標識服務的Oracle 主目錄位置。這使監聽程式能夠確定Oracle 可執行檔案的位置。
8. 引數GLOBAL_DBNAME 標識資料庫的全域性資料庫名稱,這是由資料庫名和資料庫域構成的名稱。全域性資料庫名稱的格式為database_name.database_domain。例如ORCL.us.oracle.com,其中,資料庫名部分ORCL 是對資料庫的簡稱。資料庫域部分us.oracle.com 指定資料庫所在的資料庫域,同時也保證了全域性資料庫名稱唯一。該引數必須嵌在SID_DESC 下並應與初始化引數檔案中的SERVICE_NAMES 引數的值匹配。
9. SID_NAME 引數定義監聽程式代表其接受連線的SID 的名稱

試驗

如何設定預設監聽器的動態服務註冊,如何設定非預設監聽器的動態服務註冊
1.去掉本地listener.ora檔案中sid_list_listener段,只保留下面的部分:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = liguohua)(PORT = 1521))
)
)
)
2.重啟監聽,檢視狀態
C:Documents and Settingsliguohua>lsnrctl status
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 23-5月 -2007 14:21:50
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
啟動日期 23-5月 -2007 14:21:26
正常執行時間 0 天 0 小時 0 分 26 秒
跟蹤級別 off
安全性 OFF
SNMP OFF
監聽器引數檔案 D:programsoracleora92networkadminlistener.ora
監聽器日誌檔案 D:programsoracleora92networkloglistener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=liguohua.hnisi.com.cn)(PORT=1521)))
監聽器不支援服務
命令執行成功
3.重啟資料庫,使pmon程式向監聽器動態註冊資料庫服務,再次檢視監聽器狀態
C:Documents and Settingsliguohua>lsnrctl status
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 23-5月 -2007 14:25:02
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
啟動日期 23-5月 -2007 14:21:26
正常執行時間 0 天 0 小時 3 分 38 秒
跟蹤級別 off
安全性 OFF
SNMP OFF
監聽器引數檔案 D:programsoracleora92networkadminlistener.ora
監聽器日誌檔案 D:programsoracleora92networkloglistener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=liguohua.hnisi.com.cn)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=liguohua.hnisi.com.cn)(PORT=8080))(Presentation=HTTP)(Session=RAW))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=liguohua.hnisi.com.cn)(PORT=2100))(Presentation=FTP)(Session=RAW))
服務摘要..
服務 "ora9i" 包含 1 個例程。
例程 "ora9i", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "ora9iXDB" 包含 1 個例程。
例程 "ora9i", 狀態 READY, 包含此服務的 1 個處理程式...
命令執行成功
預設情況下,pmon只會自動向tcp 1521的監聽器自動註冊,為了使PMON向指定的監聽註冊,下面繼續做一些配置試驗
4.修改Listener.ora檔案,增加一個監聽器,將埠設定成1525
LIS1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = liguohua)(PORT = 1525))
)
)
)
5.啟動該監聽lsnrctl start LIS1
6.在tnsnames.ora檔案中,增加一行
lis1.HNISI.COM.CN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = liguohua)(PORT = 1525))
)
)
7.修改資料庫的local_listener=lis1,並且重啟資料庫
8.此時觀察兩個監聽器listener和lis1的狀態,發現lis1被註冊了
============================================================
在一臺機上即裝有9i,又裝有10g,此時可以只啟動10g的監聽器,9i的資料庫可以自動註冊進來,反之不行,因為10g的監聽器可以監聽9i的資料庫,但9i的監聽器不能監聽10g的資料庫。
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8861952/viewspace-1034675/,如需轉載,請註明出處,否則將追究法律責任。

相關文章