ORACLE数据库大量生成trace文件排查过程
现场彩铃业务环境,创建有USDP测试用数据库用户ring,割接前需要drop掉该用户并重新创建用户,创建应用数据库环境。SYS登陆数据库sqlplus后执行SQL>drop user ring cascade;
遇到如下错误:
反复尝试各种方法drop该用户,每次都遇到相同的报错,提示该用户正在使用。提单到oracle原厂,其专家提供以下方法尝试drop该用户:
SQL>alter user ring account lock;
再次执行SQL>drop user ring cascade, 发现可以成功的把ring用户drop掉了。
取数据库AWR报告,检查发现EVENT中top 1 是row cache wait;研发怀疑存在某个应用进程在不断的尝试链接数据库,现场检查了业务相关的所有网元中与数据库相关的配置部分,并没有发现错误的账号/密码配置内容。
2. 在logonaudittable有数据后执行如下命令删除触发器及新建的表
drop TRIGGER tr_log_errors;
drop table TABLE logonaudittable;
从logonaudittable表中发现反复尝试连接数据库的客户端信息如下;
EVENT
SID
SERIAL#
TIMESTAMP
USERNAME
OSUSERID
MACHINENAME
IP
LOGERR
1006
36385
5/21/2012 1:38:11 AM
aipcti
FC1A
192.168.108.133
LOGERR
1007
12729
5/21/2012 1:38:11 AM
aipcti
FC1A
192.168.108.133
LOGERR
1007
12734
5/21/2012 1:38:11 AM
aipcti
FC1A
192.168.108.133
LOGERR
1006
36495
5/21/2012 1:38:12 AM
aipcti
FC1A
192.168.108.133
LOGERR
1006
36499
5/21/2012 1:38:12 AM
aipcti
FC1A
192.168.108.133
LOGERR
1006
36503
5/21/2012 1:38:13 AM
aipcti
FC1A
192.168.108.133
192.168.108.133 是现网CTI主机的fabric平面地址,业务应用上考虑CTI到数据库的链接是由Aplogic来发起的。所以首先需要检查aplogic的配置。登陆WEB配置台检查,确认aplogic连接数据库对应的用户名,密码是完全正确的。需要继续排查是哪个进程在反复发起到数据库的连接。
root用户登陆CTI主机(192.168.108.133)检查主机与外部网元建链情况:
</home/aipcti/icddir/config>netstat -anp | grep 192.168.108.133
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 192.168.108.133:427 0.0.0.0:* LISTEN -
tcp 0 0 192.168.108.133:8849 0.0.0.0:* LISTEN 4079/netcheck
tcp 0 0 192.168.108.133:8888 0.0.0.0:* LISTEN 3854/icdcomm
tcp 1 0 192.168.108.133:33066 192.168.108.155:8080 CLOSE_WAIT 4071/ui
导致ring用户一直无法drop掉的根本原因在于WAS依然使用ring账户链接数据库。检查数据库/opt/oracle/diag/rdbms/instancename/SID/trace/ 下已经不再大量产生trace文件,制作ARW报告检查确认EVENT中top 1 已经不再是row cache wait了。如下; 至此可以确认问题解决。
Event
Waits
Time(s)
Avg wait (ms)
% DB time
Wait Class
db file sequential read
105,302
816
8
50.29
User I/O
DB CPU
687
42.38
log file sync
54,104
49
1
3.01
Commit
SQL*Net message to client
1,174,626
1
0
0.08
Network
db file scattered read
226
1
4
0.05
User I/O
总结:
在数据库部署触发器,检查是哪个客户端在反复尝试建立链接是解决这个问题的关键。之前有尝试过多次探寻到底是哪个网元/进程还在连接数据库,一直没有找到很好的方法,曾经重启数据库,主机,业务各个组件都无法解决。
附件: ORACLE数据库大量生成trace文件问题排查.docx ( 106.56 KB ,11 downs )作者: fengerapple 时间: 2013-1-25 17:21
Thank you very much for sharing!The good man!The good life of peace!