local_listener參數的作用!


轉自:http://warehouse.itpub.net/post/777/472788

pmon只會動態注冊port等於1521的監聽,否則pmon不能動態注冊listener,要想讓pmon動態注冊listener,需要設置local_listener參數。

下面是大致測試過程。

1.listener.ora內容如下:

--=======================================

SID_LIST_LISTENER =
(SID_LIST =
(    SID_DESC =
     (GLOBAL_DBNAME = orcl)
     (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)
     (SID_NAME = orcl)
)
    (SID_DESC =
    (GLOBAL_DBNAME = test)
    (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)
    (SID_NAME = test)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xys)(PORT = 1522))
)

--=======================================

因為listener.ora中port是1522而非默認的1521,因此此時pmon不會動態注冊監聽:

LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期 25-10月-2008 20:22:50
正常運行時間 0 天 0 小時 0 分 7 秒
跟蹤級別 off
安全性 ON: Password or Local OS Authentication
SNMP OFF
監聽程序參數文件 e:oracleproduct10.2.0db_1networkadminlistener.o
ra
監聽程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log

監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))
服務摘要..
服務 "orcl" 包含 1 個例程。
例程 "orcl", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
服務 "test" 包含 1 個例程。
例程 "test", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
--=============================================
通過命令強制注冊:
SQL> alter system register;

系統已更改。
上述命令執行之后再次查看pmon是否動態注冊了listener,下面結果顯示還是沒有動態注冊:
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期 25-10月-2008 20:22:50
正常運行時間 0 天 0 小時 0 分 12 秒
跟蹤級別 off
安全性 ON: Password or Local OS Authentication
SNMP OFF
監聽程序參數文件 e:oracleproduct10.2.0db_1networkadminlistener.o
ra
監聽程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log

監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))
服務摘要..
服務 "orcl" 包含 1 個例程。
例程 "orcl", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
服務 "test" 包含 1 個例程。
例程 "test", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
--============================================


沒有注冊的原因是pmon default只會注冊port=1521的listener

如果想讓pmon動態注冊prot以外的監聽,此時需要設置參數 local_listener=listener

下面設置參數local_listener:

SQL> alter system set local_listener=listener;
alter system set local_listener=listener
*
第 1 行出現錯誤:
ORA-02097: 無法修改參數, 因為指定的值無效
ORA-00119: 系統參數 LOCAL_LISTENER 的說明無效
ORA-00132: 語法錯誤或無法解析的網絡名稱 'LISTENER'

--提示錯誤,錯誤的原因是設置參數local_listener時需要把下面內容增加到服務器端的tnsnames.ora中,因為pmon在動態注冊監聽時要從tnsnames.ora中讀取相關信息:

接下來把下面內容增加到服務器端的tnsnames.ora中
--======================================
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xys)(PORT = 1522))
)
--=====================================
再次嘗試修改local_listener參數,修改成功:
SQL> alter system set local_listener=listener;

系統已更改。

SQL>
--=========================================
修改之后過一會查看是否動態注冊了監聽,發現已經注冊了:
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期 25-10月-2008 20:22:50
正常運行時間 0 天 0 小時 1 分 50 秒
跟蹤級別 off
安全性 ON: Password or Local OS Authentication
SNMP OFF
監聽程序參數文件 e:oracleproduct10.2.0db_1networkadminlistener.o
ra
監聽程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log

監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))
服務摘要..
服務 "orcl" 包含 2 個例程。
例程 "orcl", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "orcl_XPT" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "test" 包含 1 個例程。
例程 "test", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
LSNRCTL>


2.也可以把local_listener設置為address or address list:--因此可以自動注冊到多個端口

SQL> alter system set local_listener='(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = xys)(PORT = 1522)))';

系統已更改。

LSNRCTL> stop
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))
命令執行成功
LSNRCTL> start
啟動tnslsnr: 請稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系統參數文件為e:oracleproduct10.2.0db_1networkadminlistener.ora
寫入e:oracleproduct10.2.0db_1networkloglistener.log的日志信息
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))

正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期 25-10月-2008 20:39:07
正常運行時間 0 天 0 小時 0 分 3 秒
跟蹤級別 off
安全性 ON: Password or Local OS Authentication
SNMP OFF
監聽程序參數文件 e:oracleproduct10.2.0db_1networkadminlistener.o
ra
監聽程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log

監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))
服務摘要..
服務 "orcl" 包含 1 個例程。
例程 "orcl", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
服務 "test" 包含 1 個例程。
例程 "test", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期 25-10月-2008 20:39:07
正常運行時間 0 天 0 小時 0 分 6 秒
跟蹤級別 off
安全性 ON: Password or Local OS Authentication
SNMP OFF
監聽程序參數文件 e:oracleproduct10.2.0db_1networkadminlistener.o
ra
監聽程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log

監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))
服務摘要..
服務 "orcl" 包含 1 個例程。
例程 "orcl", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
服務 "test" 包含 1 個例程。
例程 "test", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功

SQL> alter system register;

系統已更改。

SQL>
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期 25-10月-2008 20:39:07
正常運行時間 0 天 0 小時 0 分 21 秒
跟蹤級別 off
安全性 ON: Password or Local OS Authentication
SNMP OFF
監聽程序參數文件 e:oracleproduct10.2.0db_1networkadminlistener.o
ra
監聽程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log

監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))
服務摘要..
服務 "orcl" 包含 2 個例程。
例程 "orcl", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "orcl_XPT" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "test" 包含 1 個例程。
例程 "test", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
LSNRCTL>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM