`

动态监听注册

阅读更多
动态服务注册
Oracle9i 以上例程可以使用服务注册来通知监听程序有关其数据库服务的信息。动态服务注册依赖PMON进程向监听程序注册例程信息。PMON 还通知监听程序有关例程和共享服务器调度程序的当前状态和负载。如果安装了Oracle9i JVM,则可向监听程序动态注册HTTP 和IIOP 监听终端。
启动例程时,系统会从初始化参数文件中读取有关监听程序的初始化参数,PMON 通过该文件向监听程序注册信息。如果例程启动时监听程序尚未运行(即最好是先启监听,再启数据库),PMON 将不向监听程序注册信息。PMON 将继续尝试与监听程序建立联系(即数据库启动后,再启动监听的话,PMON进程还是会在后来自动注册到监听器上)。监听程序将拒绝建立与未注册服务进行的任何连接。
动态服务注册的优点
• 无需在listener.ora 文件中设置SID_LIST_LISTENER_NAME 参数,该参数用于指定有关监听程序所服务的数据库的信息。如果使用的管理工具要求使用该参数,则仍需要进行设置。
• 启用连接时故障转移功能。
• 启用共享服务器的连接负载平衡功能。
动态服务注册的配置
1.基本配置
Oracle9i 或Oracle8i 例程使用动态服务注册。注册由每个数据库例程的PMON进程执行,每个例程在数据库初始化参数文件中都有必需的配置。动态服务注册不要求在listener.ora 文件中进行任何配置。
动态服务注册在数据库初始化文件中配置。监听程序配置必须与数据库初始化文件中的信息同步。
必须配置下列初始化参数,才能进行服务注册:
• SERVICE_NAMES:为该例程连接的数据库服务指定一个或多个名称。可以指定多个服务名,以区别同一数据库的不同用途。
• INSTANCE_NAME:指定例程名。在单例程数据库系统中,例程名通常与数据库名相同。
示例
SERVICE_NAMES=sales.us.oracle.com
INSTANCE_NAME=salesdb
2.附加配置
缺省情况下,PMON 向TCP/IP 的缺省本地地址- 端口1521- 处的本地监听程序注册服务信息。
使用非缺省监听程序可以强制PMON 向不使用TCP/IP 或端口1521 的服务器上的本地监听程序进行注册,具体方法是按如下所示对初始化参数文件中的LOCAL_LISTENER 参数进行配置:
LOCAL_LISTENER=listener_alias
必须通过tnsnames.ora 等命名方法将listener_alias 解析为监听程序协议地址。以下是tnsnames.ora 中的一个条目示例:
listener_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=salesserver)(PORT=1421)))
相关其它内容:
静态监听的listener.ora样列
1. LISTENER =
2. (ADDRESS_LIST =
3. (ADDRESS= (PROTOCOL= TCP)(Host= stcsun02)(Port= 1521)))
4. SID_LIST_LISTENER =
5. (SID_LIST =
6. (SID_DESC =
7. (ORACLE_HOME= /home/oracle)
8. (GLOBAL_DBNAME = ORCL.us.oracle.com)
9. (SID_NAME = ORCL)))
静态监听的listener.ora内容解释
1. 监听程序的名称。缺省名称是LISTENER。
2. ADDRESS_LIST 参数包含一个地址块,监听程序监听其中所列地址处的传入连接。该块中定义的每个地址都代表一种监听程序接收连接的不同方法。
3.TCP 地址表示从网络上的客户机传入的TCP 连接,连接目标是端口1521。这些客户机使用各自的tnsnames.ora 文件中定义的端口连接至该监听程序。监听程序将根据为其定义的SID_LIST 来指定要连接的数据库。请注意,在配置有监听程序的节点上,只要监听程序具有唯一的名称和唯一的端口,则可配置多个监听程序。所配置的每个监听程序都有自己的SID_LIST,但是,一个数据库可以由多个监听程序提供服务。
4. 监听程序可对一台机器上的多个数据库进行监听。这些数据库的SID 在SID_LIST_listener_name 块或参数处定义。
5. 如果定义了多个SID,则需要定义SID_LIST 参数
6. 对于每个定义的SID 来说,必须存在SID_DESC 参数。
7. ORACLE_HOME 标识服务的Oracle 主目录位置。这使监听程序能够确定Oracle 可执行文件的位置。
8. 参数GLOBAL_DBNAME 标识数据库的全局数据库名称,这是由数据库名和数据库域构成的名称。全局数据库名称的格式为database_name.database_domain。例如ORCL.us.oracle.com,其中,数据库名部分ORCL 是对数据库的简称。数据库域部分us.oracle.com 指定数据库所在的数据库域,同时也保证了全局数据库名称唯一。该参数必须嵌在SID_DESC 下并应与初始化参数文件中的SERVICE_NAMES 参数的值匹配。
9. SID_NAME 参数定义监听程序代表其接受连接的SID 的名称

试验

如何设置默认监听器的动态服务注册,如何设置非默认监听器的动态服务注册
1.去掉本地listener.ora文件中sid_list_listener段,只保留下面的部分:
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = liguohua)(PORT = 1521))
      )
    )
  )
2.重启监听,查看状态
C:\Documents and Settings\liguohua>lsnrctl status
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 23-5月 -2007 14:21:50
Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
启动日期                  23-5月 -2007 14:21:26
正常运行时间              0 天 0 小时 0 分 26 秒
跟踪级别                  off
安全性                    OFF
SNMP                      OFF
监听器参数文件          D:\programs\oracle\ora92\network\admin\listener.ora
监听器日志文件          D:\programs\oracle\ora92\network\log\listener.log
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=liguohua.hnisi.com.cn)(PORT=1521)))
监听器不支持服务
命令执行成功
 
3.重启数据库,使pmon进程向监听器动态注册数据库服务,再次查看监听器状态
C:\Documents and Settings\liguohua>lsnrctl status
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 23-5月 -2007 14:25:02
Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
启动日期                  23-5月 -2007 14:21:26
正常运行时间              0 天 0 小时 3 分 38 秒
跟踪级别                  off
安全性                    OFF
SNMP                      OFF
监听器参数文件          D:\programs\oracle\ora92\network\admin\listener.ora
监听器日志文件          D:\programs\oracle\ora92\network\log\listener.log
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=liguohua.hnisi.com.cn)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=liguohua.hnisi.com.cn)(PORT=8080))(Presentation=HTTP)(Session=RAW))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=liguohua.hnisi.com.cn)(PORT=2100))(Presentation=FTP)(Session=RAW))
服务摘要..
服务 "ora9i" 包含 1 个例程。
  例程 "ora9i", 状态 READY, 包含此服务的 1 个处理程序...
服务 "ora9iXDB" 包含 1 个例程。
  例程 "ora9i", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功
 
默认情况下,pmon只会自动向tcp 1521的监听器自动注册,为了使PMON向指定的监听注册,下面继续做一些配置试验
 
4.修改Listener.ora文件,增加一个监听器,将端口设置成1525
LIS1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = liguohua)(PORT = 1525))
      )
    )
  )
5.启动该监听lsnrctl start LIS1
 
6.在tnsnames.ora文件中,增加一行
lis1.HNISI.COM.CN =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = liguohua)(PORT = 1525))
    )
  )
 
7.修改数据库的local_listener=lis1,并且重启数据库
 
8.此时观察两个监听器listener和lis1的状态,发现lis1被注册了
 
============================================================
在一台机上即装有9i,又装有10g,此时可以只启动10g的监听器,9i的数据库可以自动注册进来,反之不行,因为10g的监听器可以监听9i的数据库,但9i的监听器不能监听10g的数据库。
分享到:
评论

相关推荐

    java rabbitmq动态注册,监听实现

    在这个场景中,"java rabbitmq动态注册,监听实现"涉及到的主要知识点是利用Spring Boot框架与RabbitMQ集成,动态配置消费者,并实现实时监听消息。 1. **Spring Boot与RabbitMQ集成**: Spring Boot简化了...

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

    本文主要探讨了监听的概念,动态注册与静态注册的区别,以及在不同场景下的配置实例。 监听器(Listener)是Oracle数据库系统中一个核心组件,它负责接收来自客户端的连接请求,并将这些请求转发到相应的数据库实例...

    Android中动态注册广播监听者,监听网络变化

    在Android系统中,广播接收器(BroadcastReceiver)是一种重要的组件,它允许应用程序对系统或其它应用发出的广播事件进行响应。...通过以上步骤,你可以实现Android应用对网络状态变化的动态监听功能。

    Android动态创建监听广播

    本文将详细讲解如何在Android项目中动态地创建BroadcastReceiver,实现解锁、锁屏以及安装监听功能。 一、理解BroadcastReceiver BroadcastReceiver是Android四大组件之一,用于接收系统或应用发出的广播意图...

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

    本教程主要讲解了Oracle数据库的静态监听和动态监听两种方式,以及它们的工作原理和配置。 一、注册概念 注册是指数据库作为服务向监听程序报告其存在。这一过程使得客户端在连接数据库时,只需要知道服务名,而...

    静态注册 动态注册

    在Oracle数据库系统中,"静态注册"和"动态注册"是指数据库实例与监听器(Listener)之间通信的不同方式。这两种注册方法对Oracle客户端如何找到并连接到正确的数据库实例至关重要。 首先,ORACLE_SID是一个环境变量,...

    JMS调用IBM MQ监听模式

    7. **创建QueueReceiver**:使用QueueSession创建一个QueueReceiver,指定要监听的队列,并注册MessageListener。 8. **启动监听**:调用QueueConnection的start()方法启动监听,这样当队列中有新消息时,Message...

    oracle监听器深入讲解

    静态注册是通过监听器的配置文件(listener.ora)来实现的,而动态注册是通过 Oracle 实例的参数文件来实现的。 5. Oracle 监听器常见问题和解决方法 Oracle 监听器可能会出现的一些常见问题包括监听器无法启动、...

    Android实现静态广播监听器的方法

    静态广播监听器是Android系统中用于接收广播的一种方式,与动态注册的广播接收器相比,静态注册的监听器在应用启动之前就能接收到广播,提供了更稳定的广播接收服务。 首先,我们来看如何实现一个静态广播监听器。...

    java监听器+quartz实现每天动态时间执行任务的功能

    在Java编程中,实现每天动态时间执行任务的功能通常涉及到事件监听和定时任务调度。这个项目“java监听器+quartz实现每天动态时间执行任务的功能”是结合了Java的监听器机制和Quartz定时任务框架来完成这样的需求。...

    iOS KVO 监听frame

    在iOS开发中,Key-Value Observing(KVO...通过理解并正确使用KVO监听frame,开发者可以更灵活地响应用户交互和界面动态调整,提升应用的用户体验。在实际项目中,合理利用KVO可以极大地简化代码并提高代码的可维护性。

    Android实现信号强度监听的方法

    为了开始监听,我们需要将自定义的监听器注册到`TelephonyManager`: ```java MyPhoneStateListener MyListener = new MyPhoneStateListener(); Tel.listen(MyListener, PhoneStateListener.LISTEN_SIGNAL_...

    安卓广播监听按键事件和屏幕熄屏亮屏监听

    而动态注册则是在代码中进行,需要在适当的时候注册,并在不再需要时注销,这种方式更灵活但需要开发者自己管理生命周期。 对于监听按键事件,Android系统并没有提供直接的广播来处理物理按键按下,因为硬件按键的...

    windchill交流第三篇:Windchill中的事件监听

    - **权限控制**:监听用户登录、角色变更等事件,动态调整用户的访问权限。 总之,Windchill的事件监听机制是系统灵活性和可扩展性的重要组成部分,它允许开发者通过自定义代码响应系统内部的各种事件,从而实现...

    BroadCastTest.zip 安卓动态注册广播接收器demo(含注释)

    本压缩包"BroadcastTest.zip"提供了一个关于安卓动态注册广播接收器的示例,包含了如何动态注册、发送自定义广播以及接收系统广播的实践案例。 1. **动态注册广播接收器**: 在Android中,广播接收器有两种注册...

    Electron中通过globalShortcut实现监听键盘事件进而实现快捷键功能示例代码.zip

    在Electron应用中,通常在主进程(main process)中处理快捷键的注册和监听,因为这样可以确保即使在应用程序的渲染进程中(renderer process)没有焦点时,快捷键也能正常工作。在`main.js`文件中,你可以这样引入...

    Android 动态注册监听网络变化实例详解

    Android 动态注册监听网络变化实例详解 新建一个BroadcastTest项目,然后修改MainActivity中的代码,如下: public class MainActivity extends AppCompatActivity { private IntentFilter intentFilter; private...

    Oracle 单一主机多个实例多个监听器配置

    由于Oracle的进程监控器(PMON)只会动态注册端口等于1521的监听器,对于其他端口,PMON无法自动注册监听器。因此,为了使PMON动态注册其他端口的监听器,必须通过设置`local_listener`参数来指定本地监听器的地址和...

    广播监听的demo

    静态注册是在AndroidManifest.xml文件中声明BroadcastReceiver,而动态注册则是在代码运行时实例化并注册BroadcastReceiver。 在这个demo中,我们可能会看到以下代码片段: ```java public class ListenHome ...

    Android通过使用广播监听网络状态的改变

    有两种方式来注册:静态注册和动态注册。静态注册是在AndroidManifest.xml文件中添加receiver标签,如下所示: ```xml ``` 动态注册则需要在代码中进行,通常在Activity的onCreate()方法中: ```java ...

Global site tag (gtag.js) - Google Analytics