1. 程式人生 > >Oracle listener 監聽之動態和靜態註冊

Oracle listener 監聽之動態和靜態註冊

EM 無法使用的解決:首先我們知道 EM 只支援動態註冊的監聽。哪怕是有動態註冊資訊就可以。

在考試 11gOCM 的時候,有一道題是要配置兩個監聽,一個名字是 listener 另一個是 lsnr2, 還需要配置 EM,首先我先配置了 listener 這個監聽,具體配置如下:

LISTENER =
 (DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = edbjr2p1.example.com)(PORT = 1521))
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
   )
 )

很顯然這個是動態監聽,正好這時候我用這個監聽配置了 EM。

EM 配置完成之後,我繼續配置 lsnr2 , 具體配置如下:

LSNR2 =
 (DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = edbjr2p1.example.com)(PORT = 1526))
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526))
   )
 )

要求要 lsnr2 也能動態註冊到資料庫資訊,這時候我們發現這個監聽的埠非預設埠。然而 oracle 預設動態是註冊到 1521 埠上的,所有這時候 lsnr2 是不能動態註冊到資料庫資訊的

,如下:

[[email protected] admin]$ lsnrctl status lsnr2 

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:34:29 

Copyright (c) 1991, 2011, Oracle. All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edbjr2p1.example.com)(PORT=1526))) 
STATUS of the LISTENER 
------------------------ 
Alias lsnr2 
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production 
Start Date 05-JUL-2016 23:34:06 
Uptime 0 days 0 hr. 0 min. 22 sec 
Trace Level off 
Security ON: Local OS Authentication 
SNMP OFF 
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora 
Listener Log File /u01/app/oracle/diag/tnslsnr/edbjr2p1/lsnr2/alert/log.xml 
Listening Endpoints Summary... 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edbjr2p1.example.com)(PORT=1526))) 
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1526))) 
The listener supports no services 
The command completed successfully

可以通過  local_listener 這個引數來修改 oracle 預設動態註冊的埠,使 lsnr2 可以動態註冊到資訊。

1. 然後 修改資料庫引數

sqlplus  / as sysdba
SQL> alter system set local_listener='lSNR2';
SQL> alter system register;     ### 動態監聽如果先於資料庫啟動,那就不必要執行這個命令。

2. 再次檢視監聽狀態,發現動態註冊到了資訊

[[email protected] admin]$ lsnrctl status lsnr2 
。。。。。。。
Services Summary...Service "PROD1.us.oracle.com" has 1 instance(s).Instance "PROD1", status READY, has 1 handler(s) for this service...Service "PROD1XDB.us.oracle.com" has 1 instance(s).Instance "PROD1", status READY, has 1 handler(s) for this service...The command completed successfully

這樣我覺得 OK 了,可是等到後面使用 EM 的時候,我發現報錯,說 database  is  down,

可是我檢查發現數據庫正常, 然後檢視監聽 listener 的狀態:發現原本動態註冊的資訊已經沒有了。如下:

[[email protected] admin]$ lsnrctl status  

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:34:29 

Copyright (c) 1991, 2011, Oracle. All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edbjr2p1.example.com)(PORT=1521))) 
STATUS of the LISTENER 
------------------------ 
Alias listener 
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production 
Start Date 05-JUL-2016 23:34:06 
Uptime 0 days 0 hr. 0 min. 22 sec 
Trace Level off 
Security ON: Local OS Authentication 
SNMP OFF 
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora 
Listener Log File /u01/app/oracle/diag/tnslsnr/edbjr2p1/lsnr2/alert/log.xml 
Listening Endpoints Summary... 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edbjr2p1.example.com)(PORT=1521))) 
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1526))) 
The listener supports no services 
The command completed successfully

可以推測出可能是這裡的原因導致報錯 :database is down

那麼是什麼原因導致的呢?

原來 當你設定 local_listener=lsnr2 後,資料庫資訊就會動態的註冊到 1526 埠,他就不會動態的註冊到 1521,所以 listener 這個監聽註冊不到資訊,導致 EM 連結不到資料庫,報錯  database is down。

解決辦法:只需要修改引數 local_listener='listener','lsnr2';   即可,這樣 oracle 會動態註冊到兩個埠上。

然後發現 EM 可以使用了。

2.關於 oracle 監聽動態和靜態的分析

oracle 靜態監聽如下:

[[email protected] admin]$ cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora 
# Generated by Oracle configuration tools. 

LISTENER = 
(DESCRIPTION_LIST = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = TCP)(HOST = edbjr2p1.example.com)(PORT = 1521)) 
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
) 
) 
SID_LIST_LISTENER= 
(SID_LIST= 
(SID_DESC= 
(GLOBAL_DBNAME=PROD1) 
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1) 
(SID_NAME=PROD1)) 
(SID_DESC= 
(SID_NAME=plsextproc) 
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1) 
(PROGRAM=extproc)))

儘管是靜態監聽,但是他也會有動態註冊資訊,如下  ready 代表動態,unknown 代表靜態。如果你剛才用這樣的話已經配置好的 EM 是可以使用這個監聽的,可不要認為靜態監聽也可以了,真正的原因是雖然是靜態監聽配置,但是 oracle 會預設動態的註冊到 1521 這個埠上,所以既有動態又有靜態的註冊資訊(前提是沒有修改 local_listener 這個引數)

[[email protected] admin]$ lsnrctl status 

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:45:04 

Copyright (c) 1991, 2011, Oracle. All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edbjr2p1.example.com)(PORT=1521))) 
STATUS of the LISTENER 
------------------------ 
Alias LISTENER 
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production 
Start Date 05-JUL-2016 23:43:44 
Uptime 0 days 0 hr. 1 min. 20 sec 
Trace Level off 
Security ON: Local OS Authentication 
SNMP OFF 
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora 
Listener Log File /u01/app/oracle/diag/tnslsnr/edbjr2p1/listener/alert/log.xml 
Listening Endpoints Summary... 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edbjr2p1.example.com)(PORT=1521))) 
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "PROD1" has 1 instance(s).
 Instance "PROD1", status UNKNOWN, has 1 handler(s) for this service...
Service "PROD1.us.oracle.com" has 1 instance(s).
 Instance "PROD1", status READY, has 1 handler(s) for this service...
Service "PROD1XDB.us.oracle.com" has 1 instance(s).
 Instance "PROD1", status READY, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
 Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

如果你配置 EM 使用的監聽沒有動態註冊資訊,那麼當你使用 EM 的時候就會報錯,具體如下:

小結:EM 管理器,配置和使用只支援動態註冊的監聽,如果你剛開始是用動態註冊的監聽配置好了 EM,你又把動態的監聽改成了靜態的,這時候你沒有修改 local_listener 這個引數,正常情況還是可以使用 EM 的,因為這時候你的監聽既有靜態註冊資訊又有動態註冊資訊,EM 使用的是動態資訊,說白了就是保證有動態註冊的資訊即可。

相關推薦

Oracle listener 動態靜態註冊

EM 無法使用的解決:首先我們知道 EM 只支援動態註冊的監聽。哪怕是有動態註冊資訊就可以。 在考試 11gOCM 的時候,有一道題是要配置兩個監聽,一個名字是 listener 另一個是 lsnr2, 還需要配置 EM,首先我先配置了 listener 這個監聽,具體

Oracle LISTENER檔案引數詳解及Lsnrctl命令綜述

# listener.ora Network Configuration File: F:/oracle/product/10.2.0/db_1/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LI

javaWeb學習Listener

host idle .get 序列化 name mov 面試題 感知 就是 】 一、監聽器Listener javaEE包括13門規範 在課程中主要學習 servlet技術 和 jsp技術 其中 servlet規範包括三個技術點:servlet l

ORACLE 低版本客戶端登入Oracle 12c報錯ORA-28040

    今天,測試要求遠端登入oracle 12c資料庫,但是他本地安裝的連線客戶端工具版本比較低,他本地安裝的oracle資料庫是11.2.0.1 要遠端登入的資料庫是12.2.0.1,通過tns遠端登入時報錯:ORA-28040     開始時使用tnsping測試TN

如何實現Oraclelistener)多個IP地址

# listener.ora Network Configuration File: D:\oracle\server\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora # Generated by Oracle configuration tools.

activiti 動態配置 activiti 引擎啟動初始化(高階原始碼篇)

1.1.1. 前言 使用者故事:現在有這樣一個需求,第一個需求:公司的開發環境,測試環境以及線上環境,我們使用的資料庫是不一樣的,我們必須能夠任意的切換資料庫進行測試和釋出,對資料庫連線字串我們需要加密,保證我們的資料庫連線不能被發現。必須確保我們的資料庫不能暴露出去,第二

Oracle啟動提示:The listener supports no services 的處理方法

[[email protected] admin]$ lsnrctl status LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 19-APR-2016 10:51:08 Copyrig

ORACLE啟動出現The listener supports no services

解決方案有以下幾種: 第一種. 通過重啟伺服器,來修復監聽器. 登陸資料庫, sqlplus / as sysdba; SQL>shudown SQL>startup #startup  啟動 #shutdown 關閉 #lsnrctl s

配置自動啟動Oracle(lsnrctl)

配置Oracle lsnrctl 和自動啟動 1.設定主機名稱 [[email protected] ~]# cat /etc/sysconfig/network NETWORKING=ye

Oracle啟動報錯:The listener supports no services解決

報錯提示: The listener supports no services The command completed successfully 如圖所示: 這樣啟動後遠端連線會報錯:oracle ORA-12514:TNS:listener does not

java:struts框架2(方法的動態靜態調用)

sof crud turn itl title 得到 tps font star 1.方法的靜態和動態調用:     struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts

Oracle修改端口教程

pre code rac names tail gre 文件 toc tar Oracle默認監聽端口1521,一眾掃描器通常通過探測1521端口是否開啟來探測是否存在Oracle服務,如果修改默認監聽端口在一定程度上可以提升數據庫和主機的安全性。 比如這裏我們修改成252

Oracle配置方法

ini 方法 add 進行 name img dev http con Oracle 數據庫配置監聽 1.準備環境: (1)遠程oracle服務實例或者本地服務實例 遠程服務器或者本地服務端(存數據庫的) (2)oracle 客戶端(oracle –oraClient1

事件統計登錄用戶人數(含用戶名)案例

用戶名 登錄名 lsp eat 不同 over eve utf-8 put (一)創建一個User類,用於封裝一個用戶信息,該類實現了HttpSessionBindingListener接口中的valueBound()方法和valueUnbound()方法 1 packa

H5特性 MutationObserver 元素 動態改變iframe高度

webkit chrom contents ram type element 特性 chrome span 這些代碼要寫在iframe頁中執行 <script type="text/javascript"> $(function

oracle 11g 啟動成功後立馬自動關閉

ora lis 啟動失敗 mage 1.2 test list 導致 inf 因為監聽配置的問題 之前是因為我添加了地址3,主機名寫了test,所以導致監聽總是啟動失敗,後來刪除地址3,保存配置之後,E:\app\Administrator\product\11

HttpSesison產生銷毀 學習筆記

監聽HttpSesison產生和銷毀 import java.util.Date; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.Htt

Spring 的事件 ApplicationListener ApplicationEvent 用法

scan bsp string bject wired static final HA AD spring事件(application event)為Bean與Bean之間的消息通信添加了支持,當一個Bean處理完一個任務之後,希望另一個Bean知道並能做相應的處理,這時我

C++基礎知識動態靜態

www lar 而在 lib ont 運行程序 gpa prope 否則 一、 靜態庫與動態庫 庫(library),一般是一種可執行的二進制格式,被操作系統載入內存執行。 我們通常把一些公用函數制作成函數庫,供其它程序使用。函數庫分為靜態庫和動態庫 靜態庫和動態庫區

C# httpNancy.net

方式 使用 [] lin winform 否則 target nuget nbsp 通過winform或者是控制臺應用程序監聽http請求,之前使用的是微軟的HttpListener,參考https://www.cnblogs.com/duanjt/p/5566336.ht