监听器控制程序lsnrctl跟踪trace file
来源:互联网 发布:利乐公司待遇 知乎 编辑:程序博客网 时间:2024/06/15 00:19
监听器控制程序lsnrctl跟踪trace file
Oracle监听器是一个独立的数据库组件,在整个体系中扮演非常重要的作用。即使在windows平台上,监听器listener也被实现成为一个独立的进程程序。
在一些与网络相关的故障中,监听器相关故障占了很大部分。了解监听器的工作过程,分析每个环节出现问题的几率,是监听器发生故障时我们常常需要做的事情。这个过程我们就需要使用监听器trace功能。
本篇主要介绍如何使用lsnrctl工具获取到监听器跟踪文件(trace file),以及获取的跟踪级别。
1、环境介绍
本次我们选择10g监听器进行试验。
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>lsnrctl
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 – Production on 19-12月-2011 20:31:59
Copyright (c) 1991, 2005, Oracle. All rights reserved.
欢迎来到LSNRCTL, 请键入”help”以获得信息。
注意,lsnrctl并不是监听器程序本身,而是监听器控制的一个小工具。借助这个工具,我们可以操纵监听器行为、设置监听器参数。Lsnrctl命令行使用的命令很简单。
LSNRCTL> help 以下操作可用 星号 (*) 表示修改符或扩展命令: start stop status services version reload save_config trace change_password quit exit set* show*
此时,数据库尚未启动。监听器处于运行状态。
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 启动日期 19-12月-2011 20:28:53 正常运行时间 0 天 0 小时 3 分 32 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:\oracle\network\admin\listener.ora 监听程序日志文件 D:\oracle\network\log\listener.log (篇幅原因,有省略……) LSNRCTL>
此时,没有进行跟踪文件输出。
2、简单跟踪文件生成
我们先介绍如何使用一般监听跟踪方法。该配置从lsnrctl设置。在lsnrctl配置中,有一些与trace相关的内容。
LSNRCTL> show show之后提供了以下操作 星号 (*) 表示修改符或扩展命令: rawmode displaymode rules trc_file trc_directory trc_level log_file log_directory (篇幅原因,有省略……)
其中,以trc开头的几个参数显然是与trace文件操作生成有关。我们可以使用show命令加以显示。
–跟踪文件名称
LSNRCTL> show trc_file 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP) (HOST=www-0e6111dff74)(PORT=1521)))
LISTENER 参数 “trc_file” 设为 listener.trc
命令执行成功
–跟踪文件目录
LSNRCTL> show trc_directory 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521) ))
LISTENER 参数 “trc_directory” 设为 D:\oracle\network\trace
命令执行成功
–跟踪程度
LSNRCTL> show trc_level 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521) ))
LISTENER 参数 “trc_level” 设为 off
命令执行成功
通过上面参数,我们可以配置跟踪文件的位置、名称和跟踪级别。
开启跟踪,我们可以使用trace命令。具体格式如下:
LSNRCTL> help trace
trace OFF | USER | ADMIN | SUPPORT [<listener_name>] : set tracing to the specif
ied level
注意,我们开启跟踪是有三个级别的,分别为user、admin和support级别。具体含义如下:
1, Off或者数值0:表示对当前的监听器不开启跟踪;
2,User或者数值4:user trace information;
3, Admin或者数值10:administration trace information;
4,Support或者数值16:Oracle support Services trace information;
通常,我们使用support级别作为跟踪。
LSNRCTL> trace 12 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521) ))
打开的跟踪文件: D:\oracle\network\trace\listener.trc
LSNRCTL> show trc_level 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521) ))
LISTENER 参数 “trc_level” 设为 admin
命令执行成功
从返回信息和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 启动日期 19-12月-2011 20:28:53 正常运行时间 0 天 0 小时 15 分 5 秒 跟踪级别 admin 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:\oracle\network\admin\listener.ora 监听程序日志文件 D:\oracle\network\log\listener.log 监听程序跟踪文件 D:\oracle\network\trace\listener.trc 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-0e6111dff74)(PORT=1521))) (篇幅原因,有省略……) LSNRCTL> 我们可以在这个过程中,尝试进行动态注册或者新连接连入等操作。最后关闭监听。 LSNRCTL> trace off 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521))) 命令执行成功 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 启动日期 19-12月-2011 20:28:53 正常运行时间 0 天 0 小时 17 分 16 秒 跟踪级别 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)))
此时,我们到监听目录下,就可以找到监听文件。下面是片段:
nsglrespond: entry nsdo: cid=3, pcode=67, *bl=97, *what=1, uflgs=0x0, cflgs=0x3 nsdo: rank=64, nsctxrnk=0 nsdo: nsctx: state=8, flg=0x100400c, mvd=0 nsdo: gtn=206, gtc=206, ptn=10, ptc=2011 nsdo: 97 bytes to NS buffer nsdo: nsctxrnk=0 nsglrespond: exit nsgldissolve: entry nstimarmed: no timer allocated nsdo: cid=3, pcode=66, *bl=0, *what=0, uflgs=0x0, cflgs=0x2 nsdo: rank=64, nsctxrnk=0 nsdo: nsctx: state=8, flg=0x1004008, mvd=0 nsevunreg: cid=3, sgt=0, rdm=2
上面每一行记录,都对应监听器程序的动作信息。当然,直观上是不容易读懂的。我们以后再讨论如何读懂监听跟踪文件内容。
3、带时间信息的监听跟踪文件
上面部分中,我们已经获得了简单的跟踪文件。但是我们诊断问题的时候,通常是希望得到每个阶段操作执行时间的长短,从而发现问题瓶颈。
例如:我们发现通过监听器连接速度很慢,但是绕过监听器直接连接的速度很快。说明连接操作中,一个或者几个环节存在性能问题。具体是哪个?还是需要进一步时间间隔判断。
我们想要获得时间信息,需要配置两个参数在listener.ora文件中。
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = www-0e6111dff74)(PORT = 1521)) ) ) TRACE_TIMESTAMP_LISTENER=true TRACE_LEVEL_LISTENER=16
首先,需要在参数文件listener.ora中,加入两个参数取值。其中trace_timestamp_<listener_name>表示是否开启跟踪时间功能。如果设置为true/on,表示记录跟踪事件的时候,同时会记录上具体的时间。
另一个参数trace_level_<listener_name>表示启动监听程序时的跟踪级别。要让这两个参数生效,需要reload或者重新启动监听器。
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的日志信息 写入D:\oracle\network\trace\listener.trc的跟踪信息 监听: (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 - Produ ction 启动日期 19-12月-2011 21:47:12 正常运行时间 0 天 0 小时 0 分 1 秒 跟踪级别 support 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:\oracle\network\admin\listener.ora 监听程序日志文件 D:\oracle\network\log\listener.log 监听程序跟踪文件 D:\oracle\network\trace\listener.trc
(篇幅原因,省略部分……)
LSNRCTL> trace 0 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521) ))
命令执行成功
LSNRCTL> trace 16 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521) )) 打开的跟踪文件: D:\oracle\network\trace\listener.trc
命令执行成功
此时生成的trace文件中,有如下内容:
[19-12月-2011 21:53:40:281] nsglrespond: entry [19-12月-2011 21:53:40:281] nsdo: entry [19-12月-2011 21:53:40:281] nsdo: cid=5, pcode=67, *bl=97, *what=1, uflgs=0x0, cflgs=0x3 [19-12月-2011 21:53:40:281] nsdo: rank=64, nsctxrnk=0 [19-12月-2011 21:53:40:281] nsdo: nsctx: state=8, flg=0x100400c, mvd=0 [19-12月-2011 21:53:40:281] nsdo: gtn=206, gtc=206, ptn=10, ptc=2011 [19-12月-2011 21:53:40:281] nsdo: 97 bytes to NS buffer [19-12月-2011 21:53:40:281] nsdo: nsctxrnk=0 [19-12月-2011 21:53:40:281] nsiooverflow: entry [19-12月-2011 21:53:40:281] nsdo: normal exit [19-12月-2011 21:53:40:281] nsglrespond: exit [19-12月-2011 21:53:40:281] nsgldissolve: entry [19-12月-2011 21:53:40:281] nsdisc: entry [19-12月-2011 21:53:40:281] nsclose: entry
记录在毫秒级别的跟踪信息。
4、结论
监听器是一个涉及网络、Oracle实例、连接、客户端和Oracle Net复杂组件。我们遇到的很多问题,根源其实都与监听器有或多或少的关系。掌握跟踪文件,对于监听器诊断至关重要。
原创文章,转载请注明: 转载自Hello,Oracle
本文链接地址: 监听器控制程序lsnrctl跟踪trace file
文章的脚注信息由WordPress的wp-posturl插件自动生成
- 监听器控制程序lsnrctl跟踪trace file
- 监听器控制程序lsnrctl跟踪trace file
- 监听器控制程序lsnrctl跟踪trace file
- 监听器控制程序lsnrctl跟踪trace file
- rman & lsnrctl 监听器
- ORACLE文件之跟踪文件(trace file)
- lsnrctl oracle 监听器 命令行 操作命令 lsnrctl services
- Oracle LSNRCTL------监听器的启动和关闭
- LSNRCTL-命令行控制oracle的监听器
- Oracle lsnrctl--监听器的启动和关闭
- C# 线程手册 第六章 线程调试与跟踪 使用不同的监听器程序[Trace类和Debug类]
- LSNRCTL
- lsnrctl status 缺少Listener Parameter File信息
- Oracle Lsnrctl - 关于oracle监听器的命令和解释
- 在Linux下Oracle LSNRCTL--监听器的启动和关闭
- Oracle Lsnrctl - 关于oracle监听器的命令和解释
- Oracle Lsnrctl - 关于oracle监听器的命令和解释
- oracle监听器启动lsnrctl status例程的状态为unknown
- linux 记录登录信息
- 【JavaSE】初始化顺序
- 小孩喜欢边玩边吃饭怎么办
- 鸟哥Linux私房菜知识点总结10到11章
- Linux下整型转换成字符串函数——itoa
- 监听器控制程序lsnrctl跟踪trace file
- 一次性解决static关键字
- 接口和抽象类的区别
- android AAC音频编码
- Android核心基础——Day02_2
- 如何获取微信uin
- Struts2的工作流程以及原理
- 驱动调试之自制工具——寄存器编辑器
- spring中classpath和classpath*的配置区别