動态服務注冊
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/,如需轉載,請注明出處,否則将追究法律責任。
轉載于:http://blog.itpub.net/8861952/viewspace-1034675/