千家信息网

怎么进行Oracle 监听器日志的解析

发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,这篇文章将为大家详细讲解有关怎么进行Oracle 监听器日志的解析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Oracle监听器是驻留在Oracle
千家信息网最后更新 2025年02月16日怎么进行Oracle 监听器日志的解析

这篇文章将为大家详细讲解有关怎么进行Oracle 监听器日志的解析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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

1、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 监听器日志的解析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

监听 监听器 服务 日志 程序 实例 进程 数据 数据库 信息 动态 时间 状态 内容 命令 文件 名称 服务器 系统 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库表添加字段名 广州天挚天拓网络技术有限公司 es怎么创建ftp服务器 嵌入式软件开发的工作 office服务器很慢 四川学习网络安全费用多少 小龙猫互联网科技 网络安全审查时间什么时候结束 默纳克服务器显示ep55 服务器怎么查看开启了哪些端口 泉州足疗店微信点餐机软件开发 网络安全大赛官方网 ecshop建立数据库 数据库创建的用户没法查看表数据 三级计算机网络技术基础知识 大逃杀服务器维护 风暴峭壁服务器 开票系统显示数据库错误 腾讯云服务器怎么查登录记录 关于网络安全活动项目书 服务器连接不上电脑怎么回事 宣传普及网络安全知识海报 潜力的深圳软件开发公司电话 怎么搭建镜像服务器 关于网络安全的活动名称 服务器电源管理驱动下载 阳台门下载软件开发 风暴峭壁服务器 开票系统显示数据库错误 易语言 多线程调用数据库
0