ORACLE之手動註冊監聽listener。alter system set local_listener="XXX"
記錄下剛剛做的一個為一個資料庫(t02)配置多個監聽(listener)的實驗,過程有點小曲折。
(1)新增兩個測試的監聽,listener.ora的配置內容(可純手動編輯該檔案或使用netca)如下:
(LISTENER為系統原有;L1、L2為測試用新增的監聽)
- # listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
- # Generated by Oracle configuration tools.
- L2 =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1523))
- )
- )
- L1 =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1522))
- )
- )
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (SID_NAME = PLSExtProc)
- (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
- (PROGRAM = extproc)
- )
- )
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = IPC)( KEY = EXTPROC1))
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))
- )
- )
(2)配置tnsnames.ora,使資料庫(t02)可同時使用以上3個監聽:
- # tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
- # Generated by Oracle configuration tools.
- T01 =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = t01)
- )
- )
- T02 =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1522))
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1523))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = t02)
- )
- )
- EXTPROC_CONNECTION_DATA =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = IPC)( KEY = EXTPROC1))
- )
- (CONNECT_DATA =
- (SID = PLSExtProc)
- (PRESENTATION = RO)
- )
- )
(3)檢查及測試,發現問題:
檢查的時候發現除了預設的LISTENER監聽外,L1和L2始終不能註冊服務:
- C:\>lsnrctl
- LSNRCTL for 32- bit Windows: Version 10.2.0.1.0 - Production on 24-7月 -2011 22:19:24
- Copyright (c) 1991, 2005, Oracle. All rights reserved.
- 歡迎來到LSNRCTL, 請鍵入 "help"以獲得資訊。
- LSNRCTL> status
- 正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)( KEY=EXTPROC1)))
- LISTENER 的 STATUS
- ------------------------
- 別名 LISTENER
- 版本 TNSLSNR for 32- bit Windows: Version 10.2.0.1.0 - Production
- 啟動日期 24-7月 -2011 22:14:18
- 正常執行時間 0 天 0 小時 5 分 13 秒
- 跟蹤級別 off
- 安全性 ON: Local OS Authentication
- SNMP OFF
- 監聽程式引數檔案 D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
- 監聽程式日誌檔案 D:\oracle\product\10.2.0\db_1\network\log\listener.log
- 監聽端點概要...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1521)))
- 服務摘要..
- 服務 "+ASM_XPT" 包含 1 個例程。
- 例程 "+asm", 狀態 BLOCKED, 包含此服務的 1 個處理程式...
- 服務 "+asm" 包含 1 個例程。
- 例程 "+asm", 狀態 BLOCKED, 包含此服務的 1 個處理程式...
- 服務 "PLSExtProc" 包含 1 個例程。
- 例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
- 服務 "t01" 包含 1 個例程。
- 例程 "t01", 狀態 READY, 包含此服務的 1 個處理程式...
- 服務 "t01XDB" 包含 1 個例程。
- 例程 "t01", 狀態 READY, 包含此服務的 1 個處理程式...
- 服務 "t01_XPT" 包含 1 個例程。
- 例程 "t01", 狀態 READY, 包含此服務的 1 個處理程式...
- 命令執行成功
- LSNRCTL> stop
- 正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)( KEY=EXTPROC1)))
- 命令執行成功
- LSNRCTL> set curr L1
- 目前的監聽程式為 L1
- LSNRCTL> status
- 正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))
- LISTENER 的 STATUS
- ------------------------
- 別名 L1
- 版本 TNSLSNR for 32- bit Windows: Version 10.2.0.1.0 - Production
- 啟動日期 24-7月 -2011 22:14:19
- 正常執行時間 0 天 0 小時 5 分 26 秒
- 跟蹤級別 off
- 安全性 ON: Local OS Authentication
- SNMP OFF
- 監聽程式引數檔案 D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
- 監聽程式日誌檔案 D:\oracle\product\10.2.0\db_1\network\log\l1.log
- 監聽端點概要...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))
- 監聽程式不支援服務
- 命令執行成功
- LSNRCTL> set curr L2
- 目前的監聽程式為 L2
- LSNRCTL> status
- 正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))
- LISTENER 的 STATUS
- ------------------------
- 別名 L2
- 版本 TNSLSNR for 32- bit Windows: Version 10.2.0.1.0 - Production
- 啟動日期 24-7月 -2011 22:14:19
- 正常執行時間 0 天 0 小時 5 分 38 秒
- 跟蹤級別 off
- 安全性 ON: Local OS Authentication
- SNMP OFF
- 監聽程式引數檔案 D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
- 監聽程式日誌檔案 D:\oracle\product\10.2.0\db_1\network\log\l2.log
- 監聽端點概要...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))
- 監聽程式不支援服務
- 命令執行成功
停止了預設的LISTENER監聽後,使用tns進行連線測試的時候報錯(ORA-12514):
- C:\Documents and Settings\Administrator>sqlplus scott/tiger@t02
- SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:20:06 2011
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- ERROR:
- ORA-12514: TNS: 監聽程式當前無法識別連線描述符中請求的服務
(4)分析問題:
一陣google之後發現,如果預設埠不是1521,則需要設定LOCAL_LISTENER來手動指定監聽別名:
When configuring the listener to listen on TCP/IP, you should enter the default port of 1521. If you do not, you must configure the LOCAL_LISTENER parameter in the intialization parameter file and resolve the listener name through a naming method.
(5)解決問題(此處的T02為step 2的tnsnames.ora裡面的T02):
- C:\Documents and Settings\Administrator> set oracle_sid=t02
- C:\Documents and Settings\Administrator>sqlplus / as sysdba
- SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:21:55 2011
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- 已連線到空閒例程。
- SQL> select status,instance_name from v$instance;
- STATUS INSTANCE_NAME
- ------------------------ --------------------------------
- OPEN t02
- SQL> alter system set local_listener= "T02";
- 系統已更改。
- SQL>
(6)驗證,再測試:
驗證,發現L1、L2已能正常註冊服務:
- LSNRCTL> set curr L1
- 目前的監聽程式為 L1
- LSNRCTL> status
- 正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))
- LISTENER 的 STATUS
- ------------------------
- 別名 L1
- 版本 TNSLSNR for 32- bit Windows: Version 10.2.0.1.0 - Production
- 啟動日期 24-7月 -2011 22:14:19
- 正常執行時間 0 天 0 小時 32 分 54 秒
- 跟蹤級別 off
- 安全性 ON: Local OS Authentication
- SNMP OFF
- 監聽程式引數檔案 D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
- 監聽程式日誌檔案 D:\oracle\product\10.2.0\db_1\network\log\l1.log
- 監聽端點概要...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))
- 服務摘要..
- 服務 "t02" 包含 1 個例程。
- 例程 "t02", 狀態 READY, 包含此服務的 1 個處理程式...
- 服務 "t02XDB" 包含 1 個例程。
- 例程 "t02", 狀態 READY, 包含此服務的 1 個處理程式...
- 服務 "t02_XPT" 包含 1 個例程。
- 例程 "t02", 狀態 READY, 包含此服務的 1 個處理程式...
- 命令執行成功
- LSNRCTL> set curr L2
- 目前的監聽程式為 L2
- LSNRCTL> status
- 正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))
- LISTENER 的 STATUS
- ------------------------
- 別名 L2
- 版本 TNSLSNR for 32- bit Windows: Version 10.2.0.1.0 - Production
- 啟動日期 24-7月 -2011 22:14:19
- 正常執行時間 0 天 0 小時 33 分 6 秒
- 跟蹤級別 off
- 安全性 ON: Local OS Authentication
- SNMP OFF
- 監聽程式引數檔案 D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
- 監聽程式日誌檔案 D:\oracle\product\10.2.0\db_1\network\log\l2.log
- 監聽端點概要...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))
- 服務摘要..
- 服務 "t02" 包含 1 個例程。
- 例程 "t02", 狀態 READY, 包含此服務的 1 個處理程式...
- 服務 "t02XDB" 包含 1 個例程。
- 例程 "t02", 狀態 READY, 包含此服務的 1 個處理程式...
- 服務 "t02_XPT" 包含 1 個例程。
- 例程 "t02", 狀態 READY, 包含此服務的 1 個處理程式...
- 命令執行成功
- LSNRCTL>
再測試,發現scott使用者能夠正常登入:
- C:\Documents and Settings\Administrator>sqlplus scott/tiger@t02
- SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:24:43 2011
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- 連線到:
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
- With the Partitioning, OLAP and Data Mining options
- SQL>
(7)總結
當監聽的埠是預設的1521時,PMON會動態註冊該監聽(listener);
當監聽的埠不是預設的1521時,需要使用alter system set local_listener="T02";來手動註冊監聽。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-2564661/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rac監聽不能動態註冊
- Oracle 19C 監聽無法動態註冊例項Oracle
- alter system set event和set events的區別
- 7、listener監聽
- 2.7.6.2.1 ALTER SYSTEM SET語句中的SCOPE子句
- 【LISTENER】Oracle通過監聽連線緩慢分析Oracle
- 一次Oracle監聽無法動態註冊處理過程排查分析Oracle
- day25-Listener監聽器
- oracle監聽檔案listener.ora for 10g/11gOracle
- SpringBoot如何註冊Servlet、Filter、ListenerSpring BootServletFilter
- 使用JavaScript給物件修改註冊監聽器JavaScript物件
- Nacos - 事件的註冊、取消與監聽(EventDispatcher)事件
- alter system set ... scope=... 中的scope的含義是什麼?
- oracle的靜態註冊和動態註冊Oracle
- listener_scan1.log、listener.log監聽日誌清理
- Oracle啟動兩個監聽Oracle
- js 註冊事件的兩種方式詳解,傳統註冊事件與方法監聽註冊事件(addEventListener)JS事件dev
- 【LISTENER】Oracle分析連線監聽情況,判斷客戶端IP分佈Oracle客戶端
- 2.5.2. 監聽程式(listener)配置——2.5.2.1. netca
- 2.5.2. 監聽程式(listener)配置——2.5.2.2. netmgr
- oracle 12c 資料庫例項監聽無法註冊問題一例Oracle資料庫
- alter table set unused column
- 【ASK_ORACLE】Oracle 12.2 Bug導致網路卡出現故障後RAC庫未向TCP註冊本地VIP監聽OracleTCP
- 2.5.2. 監聽程式(listener)配置——2.5.2.3. 手工編輯監聽器配置檔案
- Filter(過濾器)與Listener(監聽器)詳解Filter過濾器
- ALTER SYSTEM FLUSH BUFFER_POOL
- oracle靜態監聽Oracle
- JMS監聽Oracle AQOracle
- oracle一個listener偵聽多個例項的配置Oracle
- Oracle dblink監聽問題Oracle
- 6、oracle網路(監聽)Oracle
- java EE開發之Servlet第四課:監聽器(Listener)JavaServlet
- 資料庫無法註冊至監聽服務解決辦法資料庫
- Oracle 監聽異常處理Oracle
- Oracle 建立非1521埠監聽Oracle
- Oracle 監聽投毒COST解決Oracle
- JAVA單元測試框架-13-TestNG中的Listener監聽Java框架
- 動態註冊和靜態註冊