- 最近在工作中需要測試oracle監(jiān)聽,通過扒拉資料和請教一些同事,先做一些操作上的總結(jié)吧,先看下監(jiān)聽中的很多名詞
- 動態(tài)監(jiān)聽:動態(tài)注冊不需要從listener.ora中讀取配置文件,實例在mount時,pmon進程會根據(jù)instance_name,service_name參數(shù)將實例和服務(wù)動態(tài)注冊到listerer中
- 靜態(tài)監(jiān)聽:靜態(tài)注冊指實例啟動時讀取listener.ora配置文件,將實例和服務(wù)注冊到監(jiān)聽程序
-
如圖所示:狀態(tài)是UNKNOW的是靜態(tài)監(jiān)聽,狀態(tài)是READY是動態(tài)監(jiān)聽
image.png - 靜態(tài)監(jiān)聽配置方法
- RAC: 配置在grid下,配置路徑$ORACLE_HOME/network/admin/listener.ora
- 單實例(無GI):配置在oracle下,配置路徑$ORACLE_HOME/network/admin/listener.ora
- 配置監(jiān)聽的三種情況
- 一個監(jiān)聽在一個IP一個端口上監(jiān)聽多個實例
- 一個監(jiān)聽在一個IP一個端口上監(jiān)聽多個實例
-
# 注意SID_LIST_ORCL和ORCL 的名稱需要一致
# 啟動監(jiān)聽:lsnrctl start orcl
# 關(guān)閉監(jiān)聽:lsnrctl stop orcl
# 監(jiān)聽狀態(tài):lsnrctl status orcl
# 一個監(jiān)聽在一個IP一個端口上監(jiān)聽多個實例
SID_LIST_ORCL =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /opt/oracle/products/12.2.0.2)
(SID_NAME = ORCL)
)
(SID_DESC =
(GLOBAL_DBNAME = NHL)
(ORACLE_HOME = /opt/oracle/products/12.2.0.2)
(SID_NAME = NHL)
)
)
ORCL =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
# 一個監(jiān)聽在一個IP不同端口上監(jiān)聽多個實例
SID_LIST_ORCL =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /opt/oracle/products/12.2.0.2)
(SID_NAME = ORCL)
)
(SID_DESC =
(GLOBAL_DBNAME = NHL)
(ORACLE_HOME = /opt/oracle/products/12.2.0.2)
(SID_NAME = NHL)
)
)
ORCL =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1522))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
# 多個監(jiān)聽監(jiān)聽多個實例
SID_LIST_ORCL =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /opt/oracle/products/12.2.0.2)
(SID_NAME = ORCL)
)
(SID_DESC =
(GLOBAL_DBNAME = NHL)
(SID_NAME = NHL)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
SID_LIST_TEST =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = TEST)
(ORACLE_HOME = /opt/oracle/products/12.2.0.2)
(SID_NAME = TEST)
)
)
TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1523))
)
- 安裝完RAC后默認的監(jiān)聽地址(本地監(jiān)聽和scan 監(jiān)聽)
LISTENER_SCAN1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = LISTENER_SCAN1))
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = LISTENER))
)
)
- 配置完成后需要手工注冊監(jiān)聽地址
方法一:
alter system register # 手動給監(jiān)聽注冊service
方法二:
- 單實例
alter system set local_listener='(address=(protocol=tcp)(host=0.0.0.0)(port=1522))';
- RAC
alter system set local_listener='(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1523))' scope=both sid='orcl';
