Oracle 监听器日志解析
Oracle监听器是驻留在Oracle实例所在服务器上的独立进程。作为客户端进程连接实例的重要沟通组件,Oracle监听器扮演着重要的地位。本篇将从监听器日志入手,分析阅读监听器日志和日常监听器常见行为。
1、Oracle监听器功能
在笔者《说说Oracle监听器》(http://space.itpub.net/17203031/viewspace-682627)系列中,已经比较清楚的介绍过Oracle监听器的工作方式和体系地位。这里简要加以累述。
Oracle监听器是一个独立的操作系统进程,运行在操作系统进程列表中。拥有独立于数据库实例的启动、终止命令控制台(lsnrctl);
Oracle监听器进程伺候在服务器一个特定端口上(默认为1521),等待通过Oracle Net Service连入到服务器的客户端请求;
另一方面,Oracle监听器根据系统设置情况(各种环境变量)接受数据库实例的服务列表。服务Service是对外提供的服务名称,供本地命名服务依据Service名称连入到其中。Service是对应数据库SID,也就是指定的Oracle实例数据库位置。建立和维护服务列表的过程叫做注册register;
注册register过程分为两种,静态注册和动态注册。静态注册就是通过直接将服务名写死在listener.ora文件中。动态注册是通过pmon后台进程周期性的到监听器来注册;
当一个client请求通过TCP协议访问到特定端口的监听程序,Oracle监听器会对比请求中的Service名称和掌握的注册Service列表。如果不匹配,就拒绝。如果匹配,就定位到了特定的实例,包括Oracle_home地址;
监听程序不负责进行用户名密码的验证,此时会向Oracle实例请求一个Server Process与client Process进行你个交互;
2、Oracle监听器状态信息
在大部分平台下,我们可以通过lsnrctl监听器控制程序与监听器进行交互和控制操作。其中,使用status命令,可以获取到当前监听器状态信息。
C:\Documents and Settings\Administrator>lsnrctl status
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 29-6月 -2011 13:41:27
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=acca-119hs63yxc)(PORT=1521)
))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期 29-6月 -2011 10:51:26
正常运行时间 0 天 2 小时 50 分 3 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 C:\tool\oracle\oracle\product\10.2.0\db_1\network\admi
n\listener.ora
监听程序日志文件 C:\tool\oracle\oracle\product\10.2.0\db_1\network\log\listener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=acca-119hs63yxc)(PORT=1521)))
服务摘要..
服务 "OTSXDB" 包含 1 个例程。
例程 "ots", 状态 READY, 包含此服务的 1 个处理程序...
服务 "OTS_XPT" 包含 1 个例程。
例程 "ots", 状态 READY, 包含此服务的 1 个处理程序...
服务 "ots" 包含 1 个例程。
例程 "ots", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功
命令status可以查看当前监听器的所有信息。当前监听器对应的服务包括三个,分别为otsxdb、otx_xpt和ots。三个服务名是对外使用的,本质上对应的Oracle实例都是ots。
监听器进程工作都有对应的日志信息,在状态显示中,我们也可以看到日志文件位置(C:\tool\oracle\oracle\product\10.2.0\db_1\network\log\listener.log)。下面我们从一个新的日志文件,看监听器工作。
3、Oracle监听器日志解析
下面是我们截取的监听器片段,篇幅原因,有省略。
以 pid=2736 开始
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=acca-119hs63yxc)(PORT=1521)))
Listener completed notification to CRS on start
TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
29-6月 -2011 10:51:27 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Administrator))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * status * 0
29-6月 -2011 10:51:39 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Administrator))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * status * 0
29-6月 -2011 10:52:00 * (CONNECT_DATA=(SID=OTS)(CID=(PROGRAM=C:\tool\oracle\oracle\product\10.2.0\db_1\perl\5.8.3\bin\MSWin32-x86-multi-thread\perl.exe)(HOST=ACCA-119HS63YXC)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.93)(PORT=3126)) * establish * OTS * 12505
TNS-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
29-6月 -2011 10:52:00 * service_register * ots * 0
29-6月 -2011 10:52:11 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Administrator))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * status * 0
29-6月 -2011 10:52:48 * service_update * ots * 0
29-6月 -2011 10:53:00 * service_update * ots * 0
(有省略。。。)
29-6月 -2011 10:53:17 * ping * 0
29-6月 -2011 10:53:18 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=SYSTEM))(COMMAND=status)(ARGUMENTS=64)(SERVICE=(ADDRESS=(PROTOCOL=TCP)(HOST=acca-119hs63yxc)(PORT=1521)))(VERSION=169869568)) * status * 0
29-6月 -2011 10:53:29 * (CONNECT_DATA=(SID=OTS)(CID=(PROGRAM=C:\tool\oracle\oracle\product\10.2.0\db_1\perl\5.8.3\bin\MSWin32-x86-multi-thread\perl.exe)(HOST=ACCA-119HS63YXC)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.93)(PORT=3141)) * establish * OTS * 0
29-6月 -2011 10:53:57 * (CONNECT_DATA=(SERVICE_NAME=ots)(CID=(PROGRAM=D:\PLSQL Developer\plsqldev.exe)(HOST=LIUZIYU-PC)(USER=Liuziyu))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.40)(PORT=1760)) * establish * ots * 0
29-6月 -2011 10:54:00 * (CONNECT_DATA=(SERVICE_NAME=ots)(CID=(PROGRAM=D:\PLSQL Developer\plsqldev.exe)(HOST=LIUZIYU-PC)(USER=Liuziyu))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.40)(PORT=1761)) * establish * ots * 0
29-6月 -2011 10:54:00 * (CONNECT_DATA=(SERVICE_NAME=ots)(CID=(PROGRAM=D:\PLSQL Developer\plsqldev.exe)(HOST=LIUZIYU-PC)(USER=Liuziyu))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.40)(PORT=1762)) * establish * ots * 0
29-6月 -2011 10:54:03 * service_update * ots * 0
29-6月 -2011 10:54:09 * service_update * ots * 0
日志内容很多,我们分为重点的几个部分。
在日志头,Oracle告知了我们日志格式,使用*进行内容分割。
TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
其中包括连接时间时间,请求数据Data和其他相关事件信息。这些可以帮助我们分析日志内容。
监听器无法找到指定服务
对应片段:
29-6月 -2011 10:52:00 * (CONNECT_DATA=(SID=OTS)(CID=(PROGRAM=C:\tool\oracle\oracle\product\10.2.0\db_1\perl\5.8.3\bin\MSWin32-x86-multi-thread\perl.exe)(HOST=ACCA-119HS63YXC)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.93)(PORT=3126)) * establish * OTS * 12505
TNS-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
分析日志格式后,可以发现在这个时间(10:52),Oracle监听器接受到程序的访问,程序来自主机(ACCA-119HS63YXC),使用system用户登录,程序名称是perl.exe。由于当前系统没有注册Service信息,也没有注册SID信息,所以不能够连接识别对SID=OTS请求。
报错无法识别SID。
实例主动进行动态注册
此时,数据库服务器先于监听程序启动,默认要等待很长的时间才会发生动态注册。我们使用alter system register;命令手动启动动态注册过程。监听程序上发现pmon进程的注册进程,并且记录在日志中。
29-6月 -2011 10:52:00 * service_register * ots * 0
将数据库sid=ots对应的三个实例进行注册。
用户Client连接进程
当出现连接请求的时候,日志记录。
29-6月 -2011 10:55:19 * (CONNECT_DATA=(SERVICE_NAME=ots)(CID=(PROGRAM=D:\PLSQL Developer\plsqldev.exe)(HOST=LIUZIYU-PC)(USER=Liuziyu))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.40)(PORT=1782)) * establish * ots * 0
根据日志格式,可以理解为从远程(HOST=LIUZIYU-PC,IP=10.1.39.40)主机通过TCP协议访问到监听程序,要求连接到ots服务上。使用的程序是pl/sql developer。
周期性pmon注册
动态注册是一种经常性的注册行为,pmon每隔几分钟的时间就会向监听器进行一次注册动作。
29-6月 -2011 10:55:33 * service_update * ots * 0
4、结论
监听器是我们经常打交道的数据库组件之一。同数据库的alert_log一样,监听器日志能够帮助我们解决很多日常故障问题。
Oracle 监听器日志解析的更多相关文章
- Oracle 监听器日志文件过大导致监听异常
Oracle 监听器日志文件过大导致监听异常 db版本:11.2.0.1 os版本:windows2008 现象: 应用异常,无法连接数据库.登陆数据库服务器,查看监听已经断掉.尝试重启监听,重启失败 ...
- Oracle 监听器日志配置与管理
十一假期间,某客户因为监听日志问题导致系统登录挂起,当时在返京的路上,因客户业务不允许中断,无奈之下,借了个本子帮客户做了紧急处理,今天恰好有空,在网上搜了下有关监听日志的内容,发现一个不错的帖子,内 ...
- oracle 报警日志详解
oracle报警日志是一个非常重要的日志,其有两种实现方法: 1.通过全局表来实现,这种方法有一种缺点,就是在关闭数据库后或者数据库宕机后就不能在使用了 2.通过外部表来实现,这种方法避免了方法一种的 ...
- Oracle 监听器
Oracle监听器listener是一个重要的数据库服务器组件,在整个Oracle体系结构中,扮演着重要的作用. 监听器Lisener功能 从当前的Oracle版本看,Listener主要负责下面的几 ...
- Linux/Unix shell 监控Oracle监听器(monitor listener)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- oracle监听器初识-配置多SERVICE_NAMES
现象: 为数据库设置多个服务名(通过SCOPE=both设置,同时修改参数文件) SQL> show parameter service_names; NAME TYPE VALUE ----- ...
- 转 Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案
今早刚上班.客户打电话过来说系统访问不了,输入用户名.用户号不能加载出来!听到这个问题,第一时间想到的是不是服务器重新启动了,Oracle数据库的相关服务没有启动的原因.查看服务的时候,发现相关的服务 ...
- 转载:阿里canal实现mysql binlog日志解析同步redis
from: http://www.cnblogs.com/duanxz/p/5062833.html 背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数 ...
随机推荐
- 关于oracle中varchar2与nvarchar2的一点认识
今天在oracle 10g下测试了下varchar2与nvarchar2这两种类型,网上有很多关于这两种类型的区别的帖子,我还是自己测试了下. varchar2(size type),size最大为4 ...
- 安装nodejs
1.安装epel 是yum的一个软件源,里面包含了许多基本源里没有的软件. yum install epel-release (需要root用户) yum 是一个在Fedora和Red ...
- Java 日期与数字转换
package com.test; import org.apache.commons.lang.StringUtils; import org.junit.Test; import java.tex ...
- 20.多线程.join()和setDaemon()的使用
1.join()方法 join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这 ...
- linux base shell 基础语法
转载 本文主要是基础的基础,希望对大家有所帮助 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这 ...
- python大法好——修改文件、函数
1.修改文件 补充上次没洗完的: 想要修改某个文件里一块地方,可以使用seek函数找到位置write函数修改. 是不是觉得这很简单? 但是如果你这样操作很可能会出现乱码. 因为由于字节数的不同,编码的 ...
- zabbix模块注意
1,每个监控组使用一个模版,对模版操作时会对监控组的每个模版进行修改操作.
- Ubuntu 下安装 Swoole
环境:Ubuntu16.04 apt-get update apa-get install apache2 php php-pear php-dev mysql-server gcc apache2 ...
- greenplum
参考文章:在linux系统上安装Greenplum数据库 https://blog.csdn.net/mingli_a/article/details/78779189 Greenplum安装步骤 ...
- 揭开牙病之谜 与牙医说再见<转>
原贴地址:https://www.douban.com/group/topic/44383918/ -------------------------------------------------- ...