`

listener的动态注册

阅读更多

在oracle中,我们除了可以利用listener.ora文件实现静态的注册外,我们还能自动的实现动态注册。
通过lsnrctl status我们可以看到unknown状态的侦听是静态注册的侦听,因为它无法知道当前instance的状态,而ready状态的侦听是动态注册的侦听,在instance启动的时候,会向侦听进行动态注册,告知侦听已经启动的instance name和service names——也基于这个原因,如果在instance启动后,再重启lsnr,lnsr会在刚刚开始的一段时间内(大约不到1分钟)无法得知instance的状态,只有等待pmon进程动态注册。下面的例子就是演示重启侦听但是不重启instance,在刚刚开始的一段时间内会提示侦听不提供服务:
(1)通过ls看到,listener.ora已经被重命名成listener.ora111,oracle找不到静态侦听的文件listener.ora,因此采用动态注册:

D:\oracle\ora92\network\admin>ls
SAMPLE                 listener.bak           master.cfg             snmp_rw.ora            tnsnames.ora           复件 tnsnames.ora
encaps.cfg             listener.ora111        snmp_ro.ora            sqlnet.ora             复件 (2) tnsnames.ora

(2)停lsnr,重启lsnr:

D:\oracle\ora92\network\admin>lsnrctl stop
 
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 22-JUL-2007 00:35:37
 
Copyright (c) 1991, 2002, Oracle CorporationAll rights reserved.
 
Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))

The command completed successfully
 
D:\oracle\ora92\network\admin>
D:\oracle\ora92\network\admin
>
D:\oracle\ora92\network\admin>lsnrctl start

 
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 22-JUL-2007 00:35:46
 
Copyright (c) 1991, 2002, Oracle CorporationAll rights reserved.
 
Starting tnslsnr: please wait
...
 
TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production

写入
D:\oracle\ora92\network\log\listener.log的日志信息
监听:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hejianmin)(PORT=1521)))

 
Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))
STATUS of the LISTENER
----------------------
--
Alias                     LISTENER

Version                   TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
Start Date                22-7月 -2007 00:35:48
Uptime                    0 days 0 hr. 0 min. 2 sec
Trace Level               off
Security                  OFF
SNMP                      OFF
Listener Log File         D:\oracle\ora92\network\log\listener.log
Listening Endpoints Summary...
 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hejianmin)(PORT=1521)))

The listener supports no services
The command completed successfully

进一步查看其对外的service,也是发现没有提供:

D:\oracle\ora92\network\admin>lsnrctl service
 
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 22-JUL-2007 00:36:02
 
Copyright (c) 1991, 2002, Oracle CorporationAll rights reserved.
 
Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))

The listener supports no services
The command completed successfully

(3)重启instance,再检查lnsr的状态

sys@ORALOCAL(192.168.0.22)> shutdown immediate;
Database closed
.
Database dismounted
.
ORACLE instance shut down
.
sys@ORALOCAL(192.168.0.22)> startup

ORACLE instance started.
 
Total System Global Area  133765984 bytes

Fixed Size                   453472 bytes
Variable Size              79691776 bytes
Database Buffers           50331648 bytes
Redo Buffers                3289088 bytes
Database mounted.
Database opened
.
sys@ORALOCAL(192.168.0.22)> exit

Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
 
D:\oracle\ora92\network\admin>lsnrctl service
 
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 22-JUL-2007 00:37:15
 
Copyright (c) 1991, 2002, Oracle CorporationAll rights reserved.
 
Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))

Services Summary...
Service "oralocal" has 1 instance(s)
.
 
Instance "oralocal", status READY, has 1 handler(s) for this service
...
    
Handler(s)
:
      
"DEDICATED" established:0 refused:0 state:ready

        
LOCAL SERVER
Service "oralocalXDB" has 1 instance(s).
 
Instance "oralocal", status READY, has 1 handler(s) for this service
...
    
Handler(s)
:
      
"D000" established:0 refused:0 current:0 max:1002 state:ready

        
DISPATCHER <machine: HEJIANMIN, pid: 772>
        
(ADDRESS=(PROTOCOL=tcp)(HOST=hejianmin)(PORT=1951))

The command completed successfully
 
D:\oracle\ora92\network\admin>

发现重启instance后,instance重新注册lnsr,在lsnrctl service也看到了其对外已经重新提供了服务。
注:如果不重启instance,将有pmon进行动态注册。

另外,如果要实现动态注册,我们在对初始化文件还有有一定的设置,必须设置instance_name和service_names参数(我试了一下,其实只要设置了service_names就能实现动态注册的,并且用这个服务名对外提供服务)。
修改初始化文件,先全部取消instanace_name和service_names,然后逐个设定测试:
(1)先设置instance_name

sys@ORALOCAL(192.168.0.22)> alter system set instance_name='oralocal' scope=spfile;
 
系统已更改。
 
已用时间: 
00: 00: 00.01

sys@ORALOCAL(192.168.0.22)> startup force;
ORACLE
例程已经启动。
 
Total System Global Area  133765984 bytes

Fixed Size                   453472 bytes
Variable Size              79691776 bytes
Database Buffers           50331648 bytes
Redo Buffers                3289088 bytes
数据库装载完毕。
数据库已经打开。
sys@ORALOCAL(192.168.0.22)> show parameter instance_name
 
NAME                                 TYPE        VALUE
----------------------------------
-- ----------- ------------------------------
instance_name                        string      oralocal
 
sys@ORALOCAL(192.168.0.22)> show parameter service_names
 
NAME                                 TYPE        VALUE
----------------------------------
-- ----------- ------------------------------
service_names                        string
sys@ORALOCAL(192.168.0.22)> exit

检查lsnr的状况:

C:\Documents and Settings\Administrator>lsnrctl status
 
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 22-7月 -2007 00:42:56
 
Copyright (c) 1991, 2002, Oracle CorporationAll rights reserved.
 
正在连接到
(ADDRESS=(PROTOCOL=tcp)(PORT=1521))

LISTENERSTATUS
----------------------
--
别名                      LISTENER

版本                     
TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
启动日期                 
22-7月 -2007 00:35:48
正常运行时间             
00 小时 79
跟踪级别                 
off

安全性                   
OFF
SNMP                      OFF
监听器日志文件         
D:\oracle\ora92\network\log\listener.log
监听端点概要...
 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hejianmin)(PORT=1521)))
 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hejianmin)(PORT=8080))(Presentation=HTTP)(Session=RAW))
 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hejianmin)(PORT=2100))(Presentation=FTP)(Session=RAW))
服务摘要..
服务
"oralocalXDB" 包含 1 个例程。
命令执行成功
 
C:\Documents and Settings\Administrator>lsnrctl service

 
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 22-7月 -2007 00:43:09
 
Copyright (c) 1991, 2002, Oracle CorporationAll rights reserved.
 
正在连接到
(ADDRESS=(PROTOCOL=tcp)(PORT=1521))

服务摘要..
服务
"oralocalXDB" 包含 1 个例程。
    处理程序:
      
"D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready

        
DISPATCHER <machine: HEJIANMIN, pid: 3904>
        
(ADDRESS=(PROTOCOL=tcp)(HOST=hejianmin)(PORT=2066))

命令执行成功
 
C:\Documents and Settings\Administrator>sqlplus username/password@oralocal
 
SQL*Plus: Release 9.2.0.1.0 - Production on 星期日 722 00:47:09 2007
 
Copyright (c) 1982, 2002, Oracle CorporationAll rights reserved.
 
ERROR
:
ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME

发现其还是没有提供oralocal的服务,登录也不能成功。并且,如果在客户端的tnsnames中设置:INSTANCE_NAME = oralocal,通过这个虽然能解析到提供的服务,但是登录还是不能登录,会报错:
ERROR:
ORA-12504: TNS: 监听器在 CONNECT_DATA 中未获得 SID

(2)设置service_names,取消instance_name的设置

username@ORALOCAL(192.168.0.22)> show parameter instance_name
 
NAME                                 TYPE        VALUE
----------------------------------
-- ----------- ------------------------------
instance_name                        string
username@ORALOCAL(192.168.0.22)show parameter service_names
 
NAME                                 TYPE        VALUE
----------------------------------
-- ----------- ------------------------------
service_names
分享到:
评论
1 楼 maincoolbo 2009-01-08  
写的什么啊 ,,重启实例竟然就能 动态注册了,,不对吧,,,


         我怎么试验不成功呢

相关推荐

    静态注册 动态注册

    而INSTANCE_NAME初始化参数并不与ORACLE_SID相关,它是用于listener动态注册的。这意味着一个实例可以通过不同的INSTANCE_NAME注册到监听器,使得监听器可以识别并管理多个实例。 SERVICE_NAMES参数允许为同一个...

    Oracle Listener 动态注册 与 静态注册

     相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服务名),当客户端需要连接数据库时,只需要提供服务名,就可以建立...

    spring运行过程中动态注册bean

    `BeanFactoryAware`接口使得Bean可以被注入`BeanFactory`,而`ApplicationListener`接口则可以让Bean监听到应用上下文的刷新事件,从而在合适的时机执行动态注册逻辑。 ```java public class BeanFactoryAwareBean ...

    java jsp listener小用法

    它们是实现了特定接口的Java类,并通过在web.xml配置文件中声明来注册。常见的监听器接口有HttpSessionListener、ServletRequestListener、ApplicationListener等。 二、登录次数监听器的实现 1. 创建监听器类:要...

    监听配置的概念动态注册静态注册及各种场景的配置实例

    2. **动态注册服务到非默认监听器和非默认端口**:需要在`init.ora`中设置`local_listener`指向新的监听器名称或地址和端口,同时更新`tnsnames.ora`以解析新的监听器。 对于安全性考虑,应当定期检查`listener.ora...

    Oracle listener详解

    静态注册和动态注册是监听器管理数据库服务的两种方式。静态注册是预先在监听器配置文件`listener.ora`中定义服务和实例,监听器会主动查找并维护这些服务的状态。在静态注册中,`GLOBAL_DBNAME`字段用于标识数据库...

    event_listener.7z

    脚本可能还会使用 `app.removeEventListener()` 方法来移除已注册的事件监听器,以便在不再需要它们时释放资源,或者根据用户的特定需求动态地添加和移除监听器。 此外,`event_listener.jsx` 可能会使用到其他 ...

    listener.ora

    动态注册**:有些情况下,数据库实例可以动态注册到监听器,这意味着监听器将自动获取并更新实例的信息,而无需手动修改 "listener.ora" 文件。 **6. 监控与诊断**:通过工具如 Oracle Net Manager 或命令行工具 ...

    Oracle静态注册与动态注册详解

    动态注册默认只对名为LISTENER的默认监听器生效,如果需要注册到其他非默认监听器,需要在init.ora中设置local_listener参数。 总结,Oracle数据库的静态注册和动态注册各有其应用场景。静态注册适用于环境稳定,...

    Global_Key_Mouse_Listener.zip

    在“Global_Key_Mouse_Listener.zip”项目中,C++部分的工作是创建一个动态链接库(DLL),它包含了一个实现系统钩子的函数。这个函数会注册一个钩子处理程序,对键盘和鼠标事件进行处理。一旦事件发生,钩子函数就...

    oracle注册.docx

    Oracle 静态和动态注册 Oracle 注册是将数据库作为一个服务注册到监听器,客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到该数据库。Oracle 注册可以分为静态注册和动态...

    OSGI bundle change listener

    总结来说,`OSGI bundle change listener`是OSGi框架中用于监控bundle状态变化的关键机制,它允许开发者对bundle的生命周期进行精细控制,实现动态的服务注册、依赖管理和系统自适应配置。结合像VisualVM这样的工具...

    详解JavaWeb中的 Listener

    开发者通过实现这些接口并注册到`web.xml`配置文件,或者使用注解方式在Servlet 3.0及以上版本中动态注册Listener,即可监听到感兴趣的事件。 例如,`ServletContextListener`有两个关键方法:`contextInitialized...

    Servlet、Filter、Listener深入理解.docx

    Servlet、Filter和Listener是Java Web开发中的核心组件,它们在构建动态Web应用程序中扮演着重要角色。下面将分别深入解析这三个概念。 **Servlet接口** Servlet是Java编程语言中定义的一个接口,它允许开发者创建...

    浏览器事件动态注册和取消

    浏览器事件动态注册和取消是Web开发中的重要概念,它涉及到JavaScript和DOM(Document Object Model)交互的核心机制。在本文中,我们将深入探讨如何动态地添加和移除事件监听器,以及这对网页性能和用户体验的影响...

    Oracle监听器维护管理v1.1

    本文档详细介绍了Oracle监听器的工作原理、主要功能、基本操作、动态注册与静态注册、监听日志管理和分析以及针对远程监听的安全防范措施。 一、监听器工作原理 监听器主要负责接收客户端的连接请求,它在操作系统...

    Oracle数据库教程——oracle静态监听和动态监听借鉴.pdf

    `PMON`会根据`init.ora`(现在的版本中通常称为`spfile`)配置文件中的`instance_name`和`service_names`参数,将实例和服务动态注册到监听程序。`instance_name`定义了数据库实例的名称,`service_names`则指定了...

    smsListener.rar_Radio_SMSListener_radio java_sms listener_广播接收

    动态注册通常在需要时进行,例如在Activity的`onResume()`方法中,而在`onPause()`方法中取消注册。 ```xml ``` 3. **处理短信**: 在`onReceive()`方法内,你可以通过`intent.getExtras()`获取到短信的...

    Oracle 监听器 Listener资料.docx

    实例可以通过动态或静态注册方式将自身信息告知监听器,以便客户端能根据服务名找到正确的数据库实例。 - **错误转移(Failover)**:在Real Application Clusters (RAC)环境下,如果一个实例发生故障,监听器能...

Global site tag (gtag.js) - Google Analytics