關於local_listener、remote_listener、current_listener

ora_erin發表於2013-11-26

--整理以前的學習筆記

1、local_listener
local_listener引數的作用!
pmon只會動態註冊port等於1521的監聽,否則pmon不能動態註冊listener,要想讓pmon動態註冊listener,需要設定

local_listener引數。

配置了兩個listener(listener.ora)
LISTENER2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = mylinux)(PORT = 1522))
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = mylinux)(PORT = 1521))
    )
  )
 
alter system set local_listener=listener2;
alter system set local_listener=listener2
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER2'

需要在tnsnames.ora中配置過才行(tnsnames.ora)
LISTENER2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mylinux)(PORT = 1522))
  )
(這裡的"listener2"的名字不一定要與監聽器(listener2)的名字相同,但是要與local_listener的引數值相同)

alter system set local_listener=listener2;--現在就可以成功執行了,此處local_listener由名稱指定,
只有將此名稱解析為地址,例項才能找到偵聽器並執行註冊

當然也可以在引數中硬編碼偵聽器的地址
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = mylinux)(PORT = 1522))';

此時如果把兩個監聽器都開啟
lsnrctl start listener
lsnrctl start listener2

再啟動例項startup

可以看到例項註冊的是listener2這個監聽

2、remote_listener用在RAC環境中,監聽器與例項不在同一臺機器上
待以後補上

3、current_listener當前監聽器
先使用lsnrctl命令來進入監聽器,再設定當前監聽器
LSNRCTL> set current_listener listener2
Current Listener is listener2
那麼接下來的stop start status等命令都是針對當前監聽器listener2

如果不設定的話那麼進入監聽器之後預設的監聽器是listener

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