动态监听注册

动态服务注册
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的数据库。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值