oracle监听生成trace,监听器控制程序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

以下操作可用

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Math.sin() 与 Math.cos() 用法

Math.sin() 与 Math.cos() 用法 Math.sin(x) x 的正玄值。返回值在 -1.0 到 1.0 之间;Math.cos(x) x 的余弦值。返回的是 -1.0 到 1.0 之间的数; 这两个函数中的X 都是指的“弧度”而非“角度”,弧度的计算公式为: 2PI/360…

oracle关联字段和序列,oracle(9) 序列和约束

序列 SEQUENCE也是数据库对象之一,作用:根据指定的规则生成一些列数字。序列通常是为某张表的主键提供值使用。主键:通常每张表都会有主键字段,该字段的值要求非空且唯一,使用该字段来确定表中的每一条记录。CREATE SE…

lambda表达式处理异常_lambda表达式内出现异常无法throw抛出

lambda体中有受检异常,为什么不能在lambda表达式外层try catch,只能在lambda里面try catch xxx.getUpdateList().forEach((map) ->{xxxVO vo new xxxVO();BeanUtils.populate(vo,map); // populate方法往外抛了异常list.add(vo);});因为lambda表达式本身没有处理异常的机制…

lambda处理异常四种方式

最近对接第三方呼叫系统,第三方SDK的所有方法里都有异常抛出,因为用到了lambda,所以异常处理还是很必要的。 本文主要用到了四种解决方案: 直接代码块处理自定义函数式接口,warp静态方法通过Either 类型包装通过Pair…

linux 历史命令快捷键,Linux历史命令及bash快捷键

本文环境 Centos71.历史命令1.1 在使用linux中熟练的使用历史命令,能给我很多便捷,下面我来总结一些常用的一些历史命令。a) 执行上一条命令,这个很重要 ,执行上一条命令有四种方法,如下:[rootCentOS-7-64data]#[rootCentOS-7-64 …

linux解压rar文件权限,linux下使用unrar命令解压*.rar格式文件

使用帮助[userlocalhost ~]$ unrarUNRAR 5.40 freeware Copyright (c) 1993-2016 Alexander RoshalUsage: unrar - -e Extract files without archived pathsl[t[a],b] List archive contents [technical[all], bare]p Print file to std…

lambda表达式无法抛出异常_Lambda 异常处理

lambda表达式无法抛出异常 背景&#xff1a;在一个方法中使用了lambda表达式&#xff0c;表达式中需要捕获异常&#xff0c;使用throws关键字发现并不起作用&#xff0c;必须使用trycatch才行 public class BeanUtil {public static <T,R> List<R> copyList(List…

linux的shell命令 a,linux shell命令大全(都是随堂笔记)

1. Tftp服务器(上传下载文件)注意&#xff1a;上传和下载文件时不能用目录表示 。因此&#xff0c;需要先cd到当前目录。注意目录权限&#xff1a;chmod 0777目录文件 8进制表示&#xff1a;Chmod的文件、目录的权限U自己 g 所属组 o其它 可加减步骤&#xff1a;安装服务器&…

异常 —— throws

1.1 异常概念 1.2 异常体系 java.lang.Throwable:类是 Java 语言中所有错误或异常的超类。 Exception:编译期异常,进行编译(写代码)java程序出现的问题 RuntimeException:运行期异常,java程序运行过程中出现的问题 异常就相当于程序得了一个小毛病(感冒,发烧),把异常处理掉,程序…

制作 小 linux 教程,【NanoPi NEO Plus2开发板试用体验】编译uboot和linux制作最小根文件系统制作刷机包---详细教程...

二、Linux命令基础1、查找文件查找a.c的文件 find -name "a.c"在当前目录搜索a字样的文件 grep "a" *-nR2、解压解压tar.gz文件 tar zxvf xxxxx.tar.gz解压tar.xz文件 先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后&#xff0c;再用 tar xvf xx…

执行throw后 后面代码还会执行吗?

1.当我们对throw的对象进行try catch之后 public void re(int i) {if (i > 5){this.i i;}else {try {throw new Exception("数据非法&#xff01;");} catch (Exception e) {e.printStackTrace();}System.out.println("123");}结果显示&#xff1a;12…

linux怎么查看sklearn版本,Sklearn——Sklearn的介绍与安装

文章目录1.Sklearn简介2.Sklean安装2.1.pip安装2.2.conda安装1.Sklearn简介Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一.Sklearn 包含了很多种机器学习的方式:Classification 分类Regression 回归Clustering 非监督分类Dimensionality reduction…

一些防止 Java 代码被反编译的方法

由于Java字节码的抽象级别较高&#xff0c;因此它们较容易被反编译。本节介绍了几种常用的方法&#xff0c;用于保护Java字节码不被反编译。通常&#xff0c;这些方法不能够绝对防止程序被反编译&#xff0c;而是加大反编译的难度而已&#xff0c;因为这些方法都有自己的使用环…

linux 离线安装中文,linux离线安装及配置redis-Go语言中文社区

本文以centos7系统为例&#xff0c;介绍离线安装redis步骤一、环境准备检查服务器上是否存在gcc-c的环境&#xff0c;使用命令&#xff1a;rpm -qa | grep gcc-c如果没有该环境&#xff0c;则需要安装该环境&#xff0c;离线安装步骤为&#xff1a;1、获取相关rpm包&#xff0c…

Java学习记录 AWT绘图篇

绘制图形 Canvas画布类 Class Canvas java.lang.Object java.awt.Component java.awt.Canvas 用来 绘制图形 或 捕获用户输入的事件。绘制图形需要绘图方法实现绘制图形 方法说明paint(Graphics g)绘图repaint(Graphics g)重新绘图&#xff08;刷新 Graphics绘图类 Class Gra…

linux pmap 内存泄露,一个驱动导致的内存泄漏问题的分析过程(meminfo-pmap-slabtop-alloc_calls)...

关键词&#xff1a;sqllite、meminfo、slabinfo、alloc_calls、nand、SUnreclaim等等。下面记录一个由于驱动导致的内存泄漏问题分析过程。首先介绍问题背景&#xff0c;在一款嵌入式设备上&#xff0c;新使用sqllite库进行数据库操作&#xff0c;在操作数据(大量读写操作)一段…

Java基础--awt详解以及简单应用

GUI 图形用户界面 CLI 命令行用户接口 Java为GUI提供的对象存在java.Awt和Javax.Swing两个包中. Java当中如何完成图形化界面的制作呢? AWT:abstract Window ToolKit.需要调用本地系统实现功能.属于重量级控件.依赖于平台.跨平台性不是特别好. Javax.Swing:在AWT基础上.建立一…

vxworks linux 多线程api,vxWorks多任务编程初探(转)

进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合&#xff0c;它本身没有任何运行的含义&#xff0c;只是一个静态实体。而进程则不同&#xff0c;它是程序在某个数据集…

Java图形化界面设计之容器(JFrame)详解

Java图形化界面设计之容器&#xff08;JFrame&#xff09;详解 Java图形化界面设计——容器&#xff08;JFrame&#xff09; 程序是为了方便用户使用的&#xff0c;因此实现图形化界面的程序编写是所有编程语言发展的必然趋势&#xff0c;在命令提示符下运行的程序可以让我们…

10个最受欢迎的JavaScript图表库

目前网上有很多用于绘制图表图形的免费JavaScript插件和图表库&#xff0c;技术学派在这里给大家推荐10个比较强大的绘制图表图形的JavaScript图表库。其中一些插件需要主流浏览器的支持&#xff0c;而另外一些经过整合后&#xff0c;也能在不同的平台和老版本的浏览器上工作。…