监听trace
查看监听trace是否打开
Trace Level 为off表示监听trace的状态为关闭
也可以通过show trc_level查看
lsnrctl show trc_level
LSNRCTL> show trc_level
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
LISTENER parameter "trc_level" set to off
The command completed successfully
开启监听trace
如果有多个监听,需要set监听名
set current_listener LISTENER_TEST
然后开启监听(默认监听是LISTENER则不需要set current_listener)
set trc_level 16
$ lsnrctl set trc_level 16
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 16-OCT-2018 15:16:04
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
LISTENER parameter "trc_level" set to support
The command completed successfully
监听trace开启来后,用status或者show trc_file查看监听文件名
注意:监听trace文件会产生大量的trc信息,导致监听trace文件会很大,在开启监听trace后应及时关闭
关闭监听trace
把trace等级设置为0就关闭了
set trc_level 0
$ lsnrctl set trc_level 0
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 16-OCT-2018 15:17:06
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
LISTENER parameter "trc_level" set to off
The command completed successfully
格式化监听trace文件
trcasst是oracle自带的格式化trace工具
trcasst lsnr2.trc > aa.txt
格式化后的文件看不到ip
监听trace意外删除
我在测试监听trace的过程中,手动删掉了trace文件(此时trace level为16,打开状态),本以为会自动生成一个trace文件,但是并没有。
这里的监听trace是不正常的状态,即监听trace打开,但没有写入trace信息到文件中。
想了3个办法:
1.手动建一个trace文件(文件名跟trc_file一致),这文件也没有写进新的trace信息
2.更改trc_file的名称,看是否会继续写trace。
LSNRCTL> set trc_file /grid/app/grid/diag/tnslsnr/xxxx/listener/trace/lsnrctl_01_181015.trc
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
TNS-01251: Cannot set trace/log directory under ADR
在ADR特性开启的状态下不能手动设置trace文件的名称
3.重启监听(短暂影响业务连接)
3.1 lsnrctl reload (亲测无效)
重启监听后trace关闭
手动开启trace,没有产生新的trc文件名,也没有在旧的trc文件上写入trace信息
3.2 lsnrctl stop lsnrctl start (有效)
重启监听后trace关闭
手动开启trace,产生新的trc文件名,正常产生trace信息