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

监听器Lisener功能

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

1、  监听客户端请求。监听器运行在数据库服务器之上,与Oracle实例(可为多个)相关关联,是一个专门的进程process,在windows的服务项目或者Linux的运行进程列表中,都会看到对应的运行进程。Windows上名为TNSLSNR,Linux/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、  错误转移failover。Failover是RAC容错的一个重要方面功能,其功能是在数据库实例崩溃的时候,可以自动将请求转移到其他可用实例上的一种功能。可以提供很大程度上的可用性(Availability)功能。这个过程中,发现实例已经崩溃,并且将请求转移到其他实例上,就属于是listener的功能。

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

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

监听器操作

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

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

C:\Documents and Settings\Administrator>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\network\admin\listener.ora //使用的参数

监听程序日志文件          D:\oracle\network\log\listener.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\network\admin\listener.ora //使用的参数

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

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

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

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

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

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

2、开启/关闭监听器

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

因为参数文件listener.ora是一个文本文件。Oracle对于文本类型的参数文件,大多数情况下是不支持热加载的。Pfile和listener.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\network\admin\listener.ora

写入D:\oracle\network\log\listener.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\network\admin\listener.ora

监听程序日志文件          D:\oracle\network\log\listener.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平台下,启动关闭监听器还可以在系统服务项目列表中操作,效果是一样的。

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

Oracle 监听器的更多相关文章

  1. Oracle 监听器日志文件过大导致监听异常

    Oracle 监听器日志文件过大导致监听异常 db版本:11.2.0.1 os版本:windows2008 现象: 应用异常,无法连接数据库.登陆数据库服务器,查看监听已经断掉.尝试重启监听,重启失败 ...

  2. Linux/Unix shell 监控Oracle监听器(monitor listener)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...

  3. ArcSDE10.1配置Oracle 监听器来使用SQL操作ST_Geometry(个人改动版)

    发了两天的时间来解决配置Oracle 监听器来使用SQL操作ST_Geometry的配置,网上搜索一大片,结果真正找到的只有方法可用,下面把这个方法我个人在总结下. ArcSDE10.1配置Oracl ...

  4. Oracle 监听器日志配置与管理

    十一假期间,某客户因为监听日志问题导致系统登录挂起,当时在返京的路上,因客户业务不允许中断,无奈之下,借了个本子帮客户做了紧急处理,今天恰好有空,在网上搜了下有关监听日志的内容,发现一个不错的帖子,内 ...

  5. 转 Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案

    今早刚上班.客户打电话过来说系统访问不了,输入用户名.用户号不能加载出来!听到这个问题,第一时间想到的是不是服务器重新启动了,Oracle数据库的相关服务没有启动的原因.查看服务的时候,发现相关的服务 ...

  6. Oracle 监听器日志解析

    Oracle监听器是驻留在Oracle实例所在服务器上的独立进程.作为客户端进程连接实例的重要沟通组件,Oracle监听器扮演着重要的地位.本篇将从监听器日志入手,分析阅读监听器日志和日常监听器常见行 ...

  7. Oracle监听器

    Oracle 监听器 Listener 是一个重要的数据库服务器组件,在整个 Oracle 体系结构中,扮演着重要的作用.它负责管理 Oracle 数据库和客户端之间的通讯,它在一个特定的网卡端口(默 ...

  8. Oracle 监听器 Listene

    Oracle 监听器 Listener 是一个重要的数据库服务器组件,在整个 Oracle 体系结构中,扮演着重要的作用.它负责管理 Oracle 数据库和客户端之间的通讯,它在一个特定的网卡端口(默 ...

  9. Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案

    一.错误描述 登陆PL/SQL Developer登陆本地数据库时先报没有监听程序,查看服务发现Oracle监听服务没有启动.右击启动监听程序,报错: 错误描述:本地计算机上的OracleOraDb1 ...

随机推荐

  1. IDEA 配置 tomcat 启动内存

    -server -XX:PermSize=128M -XX:MaxPermSize=256m

  2. c#.net循环将DataGridView中的数据赋值到Excel中,并设置样式

    Microsoft.Office.Interop.Excel.Application excel =                new Microsoft.Office.Interop.Excel ...

  3. POJ 3728

    http://poj.org/problem?id=3278 题目大意就是在同一坐标轴上给你一个人的坐标,一个牛的坐标,而人的运动每一次运动有三种方式,一种是后退1,一种是前进1,还有一种是坐标翻倍, ...

  4. 【python】python新手必碰到的问题---encode与decode,中文乱码[转]

    转自:http://blog.csdn.net/a921800467b/article/details/8579510 为什么会报错“UnicodeEncodeError:'ascii' codec ...

  5. Appium+Robotframework实现Android应用的自动化测试-5:RIDE中AppiumLibrary的配置

    可能很多朋友已经迫不及待的想要用RobotFramework+AppiumLibrary来写Android App的测试脚本了,那我们也废话少说,直接开始. 首先打开RIDE,这是编写RobotFra ...

  6. libreoffice安装

    centos7下libreoffice的安装 #下载安装包wget http://mirrors.ustc.edu.cn/tdf/libreoffice/stable/5.1.1/rpm/x86_64 ...

  7. Pooled Allocation(池式分配)实例——Keil 内存管理

    引言:说到动态申请(Dynamic Allocation)内存的好处,学过C/C++的人可能都有体会.运行时的灵活申请自然要比编码时的猜测好的多.而在内存受限情况下这种灵活性又有特别的好处--能让我们 ...

  8. code vs1706 求合数和(数论 素数的判定)

    1706 求合数和  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解  查看运行结果     题目描述 Description 用户输入一个数,然后输出 ...

  9. 使用iScroll时,input等不能输入内容的解决方法(share)

    最近做移动平台的应用,使用iscroll使屏幕上下滑动.发现当使用iscroll后,input等不能输入内容了.只要在iscroll.js文件中加入如下代码就ok了. function allowFo ...

  10. 【leetcode】Spiral Matrix II (middle)

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...