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

以下操作可用

星号(*)表示修改符或扩展命令:

startstopstatus

servicesversionreload

save_configtracechange_password

quitexitset*

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

SNMPOFF

监听程序参数文件D:\oracle\network\admin\listener.ora

监听程序日志文件D:\oracle\network\log\listener.log

(篇幅原因,有省略……)

LSNRCTL>

此时,没有进行跟踪文件输出。

2、简单跟踪文件生成

我们先介绍如何使用一般监听跟踪方法。该配置从lsnrctl设置。在lsnrctl配置中,有一些与trace相关的内容。

LSNRCTL> show

show之后提供了以下操作

星号(*)表示修改符或扩展命令:

rawmodedisplaymode

rulestrc_file

trc_directorytrc_level

log_filelog_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> trace12

正在连接到(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

SNMPOFF

监听程序参数文件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

SNMPOFF

监听程序参数文件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

SNMPOFF

监听程序参数文件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复杂组件。我们遇到的很多问题,根源其实都与监听器有或多或少的关系。掌握跟踪文件,对于监听器诊断至关重要。

oracle监听生成trace,监听器控制程序lsnrctl跟踪trace file相关推荐

  1. mysql 监听器_实例讲解Oracle监听口令及监听器安全

    很多人都知道,Oracle的监听器一直存在着一个安全隐患,假如不设置安全措施,那么能够访问的用户就可以远程关闭监听器. 相关示例: D:lsnrctl stop eygle LSNRCTL for 3 ...

  2. oracle监听host配置,监听器listener.ora中HOST参数配置

    4.Host使用IP地址 下面使用IP地址配置Host的情况,修改listener.ora文件. [Oracle@SimpleLinux admin]$ cat listener.ora # list ...

  3. oracle集群监听启动,在RAC中lsnrctl和srvctl操作监听区别

    朋友今天询问了一个问题RAC中使用srvctl 操作监听和lsnrctl 操作监听结果不一样,下面我通过实验说明问题 0.listener.ora文件内容 LISTENER_RAC1 = (DESCR ...

  4. oracle 监听 lsnrctl 命令

     listener control 监听控制 因为你在键入 lsnrctl 回车之后,就进入到监听控制界面. 在启动.关闭或者重启oracle监听器之前确保使用lsnrctl status命令检查 ...

  5. oracle监听_保存在,oracle 监听 lsnrctl 命令 (推荐)

    oracle 监听 lsnrctl 命令 (推荐) listener control 监听控制 因为你在键入 lsnrctl 回车之后,就进入到监听控制界面. 在启动.关闭或者重启oracle监听器之 ...

  6. oracle 监听服务启动后停止

    发现Oracle 监听服务启动后刷新又停止了,导致这种问题的有几种可能情况: 1.listener服务不正常,因此需要重建这个服务 方法一 :修改注册表 1>进入dos窗口,手工启动listen ...

  7. Linux环境 Oracle 监听和服务 日常操作

    文章目录 一.Oracle监听 1.1. 查看Oracle监听运行状态 1.2. 启动Oracle监听 1.3. 关闭监听器 二.Oracle 服务 2.1. 以SYS用户身份登录Oracle 2.2 ...

  8. cmd删除oracle监听,oracle数据库监听删除

    oracle 10G for linux常用命令 oracle 10G for linux常用命令 首先以Oracle用户登录 1. $/oracle/oracle/app/product/101/b ...

  9. oracle判断侦听状态,oracle 监听状态为BLOCKED

    静态监听的状态是UNKNOWN.当数据库状态是OPEN时,动态监听是READY:当数据库状态是NOMOUNT时,动态监听状态是BLOCKED. LSNRCTL> status Connectin ...

最新文章

  1. 2021 AAAI Fellow名单重磅出炉,华人学者遗憾连续两年无缘入选 | AI日报
  2. 平台篇-58 HBase 平台实践和应用
  3. 记载下这个题中的语法(对这些语法的使用不熟悉)
  4. 华三服务器怎么设置系统启动模式,H3C 开局设置
  5. 安装Docker的三种方式
  6. C++ Regsvr32订购具体解释
  7. A1028[List Sorting] 小水题
  8. 海豚湾在哪_前任3再见前任里的海豚湾在哪 电影拍摄取景地点介绍
  9. 利用LU分解法的多项式拟合实验
  10. 【牛客网-公司真题-前端入门篇】——百度2021校招Web前端研发工程师笔试卷(第一批)
  11. 学习单片机的三个步骤
  12. Mybatis 缓存配置 ,如何禁用缓存与一些细节
  13. 武汉坚守第三十二天——鱼菜价格已超高,病死猪肉现武汉
  14. opencv之subtract
  15. 实时数据库简介和比较---PI
  16. android打印动画,Android实用View系列------TextView实现打印机效果
  17. 面临困难不知道如何抉择怎么办,《大话西游之大圣娶亲》观后感
  18. 对List中的map的key按中文拼音进行排序。
  19. 小程序实现canvas添加图文
  20. makefile学习笔记

热门文章

  1. 用程序实现:给一个不多于4位的正整数,求出它是几位数,逆序输出各位数字?
  2. 剑指 Offer第 11 天 双指针(简单)
  3. 12.2 关闭DLM 自动收集统计信息 (SCM0)ORA-00600之[ksliwat: bad wait time]
  4. CentOS 7.6 编译安装最新版本glibc2.30 实录
  5. 高铁盈利地图:东部赚翻 中西部普遍巨亏
  6. 中间件系列——EMQX 的集群搭建
  7. Centos7 上安装 FastDFS
  8. 中通开放平台简介——连锁门店解决方案
  9. mc服务器bug修复,我的世界服务器BUG解决办法大全
  10. 20210215 Cobalt Strike 重定器/转发器/红队反溯源手段