监听器控制程序lsnrctl跟踪tracefile的示例分析

监听器控制程序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 [] : set tracing to the specif

ied level

 

 

注意,我们开启跟踪是有三个级别的,分别为user、admin和support级别。具体含义如下:

 

ü       Off或者数值0:表示对当前的监听器不开启跟踪;

ü       User或者数值4:user trace information;

ü       Admin或者数值10:administration trace information;

ü       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_表示是否开启跟踪时间功能。如果设置为true/on,表示记录跟踪事件的时候,同时会记录上具体的时间。

 

另一个参数trace_level_表示启动监听程序时的跟踪级别。要让这两个参数生效,需要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

记录在毫秒级别的跟踪信息。

 

监听器是一个涉及网络、Oracle实例、连接、客户端和Oracle Net复杂组件。我们遇到的很多问题,根源其实都与监听器有或多或少的关系。掌握跟踪文件,对于监听器诊断至关重要。

关于监听器控制程序lsnrctl跟踪trace file的示例分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享文章:监听器控制程序lsnrctl跟踪tracefile的示例分析
新闻来源:http://hbruida.cn/article/pocedp.html