点击上方"蓝字"
关注我们,享更多干货!
一、问题描述
近日在某客户现场进行巡检,发现有一个系统在进行sqlplus / as sysdba登录的时候特别缓慢。多次测试,最长时间可以达到近10s才能成功登录。此时,对主机的CPU、内存、IO以及网络等参数进行查看,发现使用率均不高,远远没有达到瓶颈,且在登录之前和登录之后,所有操作均非常顺滑,没有任何卡顿。因此,判断该系统就是在sqlplus登录的时候才可能出现卡顿。
由于客户的业务并未反馈使用有问题,所以当时仅将该问题记录到日常错误处理日志中。但是过了几天后,突然客户的业务使用人员说,他们的某功能经常出现连接超时问题。这个时候,我就很肯定业务也受到了sqlplus登录缓慢所带来的影响。于是专门翻出这个问题进行进一步的分析和排查。
二、问题分析过程
在此之前,其实也遇到过很多次sqlplus登录缓慢的问题,而造成该问题的原因就是客户使用了DNS进行IP解析。sqlplus在登录的时候会解析DNS,而在解析这一步耗费的时间较长,从而影响了sqlplus登录过程所消耗的时间。
所以,本次就先入为主,查看是否在服务器环境中存在DNS的配置:
cat /etc/resolv.conf
# Generated by NetworkManager
可以发现,主机上并没有DNS配置,所以造成sqlplus登录缓慢的常见原因也不是这个造成的。
那么,我们则需要进行进一步的原因排查。
首先,我们需要了解到,针对于Oracle数据库的异常排查有一些很有用的方式,比如oradebug、event分析、hanganalyze、strace等等,只有我们选对了异常排查方式,才能够事半功倍。
而对于sqlplus登录缓慢的问题,由于起初不知道是因为数据库原因造成,还是因为命令调用原因造成,所以我们可以考虑