ORACLE 监听LISTENER设置的粗略介绍

本文介绍了Oracle数据库中的监听器概念,包括动态监听与静态监听的区别、配置方法及其应用场景。通过对比两种监听方式的特点,帮助读者更好地理解和配置Oracle数据库的监听器。

在ORACLE数据库工作当中,LISTENER是一个必不可少的进程,设置监听是为了让数据库实例与客户端之间可以建立联系,更准确的说是将客户端的要求准确的送到在此LISTENER注册的数据库服务中去


动态监听与静态监听

LISTENER分为两种:一种为动态监听(dynamic registration),它的特点是service registration;另一种为静态监听 (static registration)。静态监听可以有多个,但动态监听只能有一个,他与参数local_listener有关。

那他们有什么却别呢?在却别之前,需要提到,这两种监听的配置文件都是<ORACLE_HOME>/network/admin/listener.ora.


动态监听,顾名思义,可以动态的注册数据库服务(service registration),它不需要再配置文件中注明需要监听哪些数据库服务,而是,只要有相应的数据库实例启动,就是自动的、动态的被注册到listener中,然后listener帮助这些实例监听客户端的需求。listener自己不会去管那个实例启动,快来我这里报道,我来帮你监听,它只管监听。完成这项工作的是PMON。

有人会问,那如果在数据库启动后,在启动监听会怎么样?答案是PMON也会把当前启动的数据库实例注册到动态监听中,但是比较慢,需要1分钟左右,如果等不及,可以进入相应的数据库,输入命令:alter system register


local_listener

动态监听只能有一个,决定它的参数是local_listener,即使local_listener指向的是一个配置好的静态监听,PMON也会动态地将数据库实例注册到进去。

local_listener可以直接指向监听:

SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST = PROD)(PORT = 1521))';

还有一种方法是在tnsnames.ora中添加监听地址,然后将local_listener指向相应的命名,这种方法必须要设置tnsname.ora,否则会报错:

LSNR2 #不区分大小写

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = RPDO)(PORT =1521))

  )

SQL> alter system set LOCAL_LISTENER=lsnr;


静态监听,这个就很好理解了,需要在listener启动之前,在配置文件中(listener.ora)注明需要监听的数据库服务,这样listener启动后,它就监听这些服务。


配置listener.ora

那如何配置这两种监听呢?11g在线文档中>Oracle Database Net Services Administrator's Guide>Configuring and Administering Oracle Net Listener中有相关的脚本可以拿来借鉴。

LISTENER设置主要有三个要素:PROTOCOL(协议),HOST(主机名),PORT(端口号)一般是1521

动态监听:

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc) (queuesize=50))))
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (SID_NAME=plsextproc)
      (ORACLE_HOME=/oracle11g)
      (PROGRAM=extproc)))

 

无论是动态还是静态,在配置文件中都至少含有两部分:1.listener(上面的的LISTERER,名称可修改);2.SID_LIST_listener_name(SID_LIST_LISTENER)

LISTENER的设置没有太大却别,区别在于SID LIST的却别,动态监听要将SID_NAME=plsextproc,按理来说应该写实例名,但这里调用的就是PMON啦。再有就是PROGRAM=extproc。但经过试验,动态监听不写SID_LIST也可以动态注册。。

启动时效果为:

Services Summary...

Service "plsextproc" has 1 instance(s). 

Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...

一分钟。。。。。。。。。。

Services Summary...Service "ORCLXDB" has 1 instance(s).  Instance "PROD", status READY, has 1 handler(s) for this service...Service "PROD" has 1 instance(s).  Instance "PROD", 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...

静态监听:

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1526))
    )
   )
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (SID_NAME=PROD)
      (ORACLE_HOME=/oracle11g)
      (GLOBAL_NAME=PROD)))
静态监听,SID_NAME改为实例名,PROGRAM改为GLOBAL_NAME,写数据库名。

启动时效果为:

Services Summary...
Service "ORCLXDB" has 1 instance(s).
  Instance "PROD", status READY, has 1 handler(s) for this service...
Service "PROD" has 1 instance(s).
  Instance "PROD", status READY, has 1 handler(s) for this service...



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值