Oracle 监听器 Listener 是一个重要的数据库服务器组件,在整个 Oracle 体系结构中,扮演着重要的作用。它负责管理 Oracle 数据库和客户端之间的通讯,它在一个特定的网卡端口(默认是TCP 1521端口)上监听连接请求,并将连接转发给数据库,下面的部分,会从几个方面对监听器进行简单介绍。
1.监听器的功能从当前的 Oracle 版本看,Listener 主要负责下面的几方面功能:
监听器在 Windows 和 Linux/Unix 平台上,都是可以直接操作的。下面以 Linux 平台操作为例,其他平台类似。
在命令行窗口(CMD),输入 lsnrctl,就可以进入监听器控制窗口。
[oracle@newtest ~]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.4.0 – Production on 06-APR-2011 14:31:46
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Welcome to LSNRCTL, type “help” for information.
LSNRCTL>
通过输入命令 help,可以查看支持的监听器操作。下面仅介绍常用的几个:
查看当前监听器状态:
敲入 status,可以查看当前监听器的状态,对应操作日志信息和服务注册信息等内容。如下:
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.4.0 – Production
Start Date 18-MAR-2011 18:03:56
Uptime 18 days 20 hr. 28 min. 37 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /home/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Services Summary…
Service “Test” has 2 instance(s).
Instance “Test”, status UNKNOWN, has 1 handler(s) for this service…
Instance “Test”, status READY, has 1 handler(s) for this service…
Service “TestXDB” has 1 instance(s).
Instance “Test”, status READY, has 1 handler(s) for this service…
Service “Test_XPT” has 1 instance(s).
Instance “Test”, status READY, has 1 handler(s) for this service…
The command completed successfully
LSNRCTL>
需要额外注意的下面几项内容。
监听程序参数文件 /home/oracle/product/10.2.0/db_1/network/admin/listener.ora //使用的参数
监听器启动时依据参数文件的,当然没有参数文件监听器也是可以启动,那时监听器依据默认的行为操作。这个参数指定了监听器参数文件的位置,listener.ora。这个文件是一个文本类型参数文件,描述了监听器监听端口,主机名称和静态注册信息。Listener.ora是随着数据库实例的建立之后,建立监听器的过程中动态配置的。
监听程序日志文件 /home/oracle/product/10.2.0/db_1/network/log/listener.log //操作日志位置
监听器日志,是一个记录和描述监听器工作和错误的信息库。通过仔细研究日志内容,可以帮助我们发现当前的监听器的问题、解决连接故障和深入理解监听器工作原理。
上文中已经说明,监听器有注册功能,通过 status 命令(services命令同样效果)。可以查看到当前有什么服务被注册上,用来检查连接服务失败,是常用的工具。