Oracle Database 11g Enterprise Edition 11.2.0.1.0
Enterprise Linux Server 5.5
預設端口 1521 的監聽器,PMON 會自動註冊服務,無需額外配置。若需在非預設端口(如 1590)運行監聽並實現動態註冊,需完成以下步驟。
$ORACLE_HOME/network/admin/)LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.115.78)(PORT = 1590))
)
)
建議使用 IP 而非主機名,避免解析問題。
ALTER SYSTEM SET local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.115.78)(PORT = 1590))' SCOPE=BOTH;
ALTER SYSTEM SET service_names = 'a,b,c,d,diy,os';
-- 確認現有監聽進程
ps -ef | grep tnslsnr | grep -v grep
-- 強制停止(示範用 kill -9,生產建議 lsnrctl stop)
kill -9
-- 啟動新監聽
lsnrctl start listener1
啟動後稍等片刻(PMON 定期註冊),執行 lsnrctl status listener1:
Services Summary...
Service "a.localdomain" has 1 instance(s).
Instance "ORCL3939", status READY, has 1 handler(s)...
Service "b.localdomain" has 1 instance(s)...
...
Service "os.localdomain" has 1 instance(s).
Instance "ORCL3939", status READY, has 1 handler(s)...
所有 service_names 定義的服務均成功註冊到監聽器,狀態為 READY,表示動態註冊完全正常。
local_listener 告訴 PMON 向哪個監聽器地址註冊,支援非預設端口。service_names 定義資料庫對外暴露的服務名稱,可多個。lsnrctl stop/start 而非 kill -9。