zoukankan      html  css  js  c++  java
  • Oracle 监听器

    Oracle监听器listener是一个重要的数据库服务器组件,在整个Oracle体系结构中,扮演着重要的作用。

    监听器Lisener功能

    从当前的Oracle版本看,Listener主要负责下面的几方面功能:

    1、  监听客户端请求。监听器运行在数据库服务器之上,与Oracle实例(可为多个)相关关联,是一个专门的进程process,在windows的服务项目或者Linux的运行进程列表中,都会看到对应的运行进程。Windows上名为TNSLSNRLinux/Unix平台上是lsnrctl。监听器守候在服务器制定端口(默认为:1521),监听客户端的请求。

    2、  为客户端请求分配Server Process。监听器只负责接听请求,之后将请求转接给Oracle Server Process。在Oracle的服务模式下,客户端进程是不允许直接操作数据库实例和数据,而是通过一个服务进程Server Process(也称为影子进程)作为代理。监听器接受到请求之后,就向操作系统(或者Dispatcher组件)要求fork(或分配)一个Server Process与客户端相连。

    3、  注册实例服务。本质上将,listener是建立实例和客户端进程之间联系的桥梁。Listener与实例之间的联系,就是通过注册的过程来实现的。注册的过程就是实例告诉监听器,它的数据库数据库实例名称instance_name和服务名service_names。监听器注册上这样的信息,对客户端请求根据监听注册信息,找到正确的服务实例名称。目前Oracle版本中,提供动态注册和静态注册两种方式。

    4、  错误转移failoverFailoverRAC容错的一个重要方面功能,其功能是在数据库实例崩溃的时候,可以自动将请求转移到其他可用实例上的一种功能。可以提供很大程度上的可用性(Availability)功能。这个过程中,发现实例已经崩溃,并且将请求转移到其他实例上,就属于是listener的功能。

    5、  负载均衡衡量。在RAC架构中,Oracle实现了负载均衡。当一个客户请求到来时,Oracle会根据当前RAC集群环境中所有实例的负载情况,避开负载较高的实例,将请求转移到负载较低的实例进行处理。在早期RAC版本中,负载轻重的衡量是根据监听器当前维护连接数目来确定的,而不是实时查看多实例的负载。RAC环境中的监听器之间进行沟通通信。

    下面的部分,会从几个方面对监听器进行简单介绍。

    监听器操作

    监听器在WindowsLinux/Unix平台上,都是可以直接操作的。下面以Windows平台操作为例,其他平台类似。

    在命令行窗口(CMD),输入lsnrctl,就可以进入监听器控制窗口。

    C:Documents and SettingsAdministrator>lsnrctl

    LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 26-12-2010 21:5

    3:04

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

    欢迎来到LSNRCTL, 请键入"help"以获得信息。

    LSNRCTL>

    通过输入命令help,可以查看支持的监听器操作。下面仅介绍常用的几个。

    1、  查看当前监听器状态

    敲入status,可以查看当前监听器的状态,对应操作日志信息和服务注册信息等内容。如下:

    LSNRCTL> status

    //连接监听器的名称和信息:主机名+监听端口号

    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)

    ))

    LISTENER STATUS

    ------------------------

    别名                      LISTENER

    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 – Production //Listener版本信息,在一台机器多实例的情况下,很重要!因为版本对应向下兼容

    启动日期                  26-12-2010 19:38:03 //启动服务时间

    正常运行时间              0 2 小时 23 51

    跟踪级别                  off  //调试信息,可以设置针对监听器的跟踪

    安全性                    ON: Local OS Authentication  //表明启动、关闭监听器的操作权限是通过OS验证实现的。也就意味着,可以对监听器设置密码项目,也是Oracle安全配置的一个重要方面;

    SNMP                      OFF //SNMP协议开启情况

    监听程序参数文件          D:oracle etworkadminlistener.ora //使用的参数

    监听程序日志文件          D:oracle etworkloglistener.log //操作日志位置

    监听端点概要...

      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-0e6111dff74)(PORT=1521)))

    服务摘要.. //当前已经注册在监听器中的服务列表

    服务 "PLSExtProc" 包含 1 个例程。

      例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    服务 "orcl" 包含 1 个例程。

      例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

    服务 "orclXDB" 包含 1 个例程。

      例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

    服务 "orcl_XPT" 包含 1 个例程。

      例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

    命令执行成功

    上面通过红字,已经对结果进行一定程度说明。其中,需要额外注意的下面几项内容。

    监听程序参数文件          D:oracle etworkadminlistener.ora //使用的参数

    监听器启动时依据参数文件的,当然没有参数文件监听器也是可以启动,那时监听器依据默认的行为操作。这个参数指定了监听器参数文件的位置,listener.ora。这个文件是一个文本类型参数文件,描述了监听器监听端口,主机名称和静态注册信息。Listener.ora是随着数据库实例的建立之后,建立监听器的过程中动态配置的。

    监听程序日志文件          D:oracle etworkloglistener.log //操作日志位置

    监听器日志,是一个记录和描述监听器工作和错误的信息库。通过仔细研究日志内容,可以帮助我们发现当前的监听器的问题、解决连接故障和深入理解监听器工作原理。

    服务 "orcl" 包含 1 个例程。

      例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

    上文中已经说明,监听器有注册功能,通过status命令(services命令同样效果)。可以查看到当前有什么服务被注册上,用来检查连接服务失败,是常用的工具。

    2、开启/关闭监听器

    监听器的行为受到参数文件的控制,我们有时候需要调整监听器的参数。调整监听参数的方法,可以通过Oracle提供的GUI界面完成,还可以通过手工修改listener.ora来完成。

    因为参数文件listener.ora是一个文本文件。Oracle对于文本类型的参数文件,大多数情况下是不支持热加载的。Pfilelistener.ora都是如此。

    使用界面GUI,就是使用Net Configuration Assistant来配置。配置完成后,配置程序会自动重新启动监听器程序,来加载修改的参数文件。如果采用手工修改listener.ora,就必须要手工的进行监听程序关闭和启动。

    LSNRCTL> stop

    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)

    ))

    命令执行成功

    LSNRCTL> start

    启动tnslsnr: 请稍候...

    TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

    系统参数文件为D:oracle etworkadminlistener.ora

    写入D:oracle etworkloglistener.log的日志信息

    监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-0e6111dff74)(PORT=1521)))

    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)

    ))

    LISTENER STATUS

    ------------------------

    别名                      LISTENER

    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

    启动日期                  26-12-2010 22:32:34

    正常运行时间              0 0 小时 0 2

    跟踪级别                  off

    安全性                    ON: Local OS Authentication

    SNMP                      OFF

    监听程序参数文件          D:oracle etworkadminlistener.ora

    监听程序日志文件          D:oracle etworkloglistener.log

    监听端点概要...

      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-0e6111dff74)(PORT=1521)))

    服务摘要..

    服务 "PLSExtProc" 包含 1 个例程。

      例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    命令执行成功

    这里多说一句关于监听器的参数配置。使用GUI可以满足大部分的情况,而且可以避免拼写错误引发的监听器故障(监听器不会检查配置项目的正确与否)。但是,在一些比较复杂的情况下,比如一台机器绑定多个IP的情况,或者RAC的复杂功能配置上,还是倾向于使用手工编写listener.ora的方法。

    此外,lsnrctl提示行还提供了reload命令,可以在listener启动的情况下,重新加载文件和SID信息。但是笔者还是比较喜欢stop+start的组合。

    如果是在windows平台下,启动关闭监听器还可以在系统服务项目列表中操作,效果是一样的。

    了解了监听器工具,下期让我们看看监听器是怎么工作的。

  • 相关阅读:
    hdu 5723 Abandoned country 最小生成树 期望
    OpenJ_POJ C16G Challenge Your Template 迪杰斯特拉
    OpenJ_POJ C16D Extracurricular Sports 打表找规律
    OpenJ_POJ C16B Robot Game 打表找规律
    CCCC 成都信息工程大学游记
    UVALive 6893 The Big Painting hash
    UVALive 6889 City Park 并查集
    UVALive 6888 Ricochet Robots bfs
    UVALive 6886 Golf Bot FFT
    UVALive 6885 Flowery Trails 最短路
  • 原文地址:https://www.cnblogs.com/login2012/p/5776461.html
Copyright © 2011-2022 走看看