sqlplus登录缓慢的解决

 

    一台测试数据库,sqlplus登陆的时候,总是非常慢,按说这种sqlplus as sysdba本地操作系统认证登录,应该很快才对。

[oracle@bisal ~]$ sqlplus  as sysdba
开始卡顿,大约等待5秒

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Dec 17 20:57:48 2020
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

登陆其他的库,都很快,几乎秒出,这就怪了,但是事出必有因,网上学习了下,通过strace看下能给我们什么信息,strace会记录进程的系统调用和这个进程接收的信号值,
每次系统调用的名称、参数、返回值,都会打印到标准输出或者-o选项指定的文件

man strace可以看到具体可用的参数,打印出调用时间

执行如下指令,

[oracle@bisal ~]$ strace -T -t -o sqlplus.trc sqlplus  as sysdba

打开sqlplus.trc,一堆内容,眼花缭乱,至少对我来说,确实不太能看懂,但是我们能看懂每行记录的时间,这两步操作之间,间隔了5秒,和实际操作等待很像,

就是这条,等待了5秒,出现超时,

21:17:21 poll([{fd=9, events=POLLIN}], 1, 4991) = 0 (Timeout) <4.991529>

从上下文看,这段内容是建立了一个socket,看到有个IP,

sin_addr=inet_addr("192.168.15.2")}, 16)

这个IP是DNS服务器的,

[root@bisal ~]# vi etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.15.2

但是我们这台机器上没配置/etc/hosts,光是要个DNS,好像没什么用?

尝试注释resolv.conf中的IP,再次登录,这次秒出了,而且看strace的记录,socket请求的是127.0.0.1,直接访问本地了,

同理,我们如果配置DNS,

[root@bisal ~]# vi etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.15.2

同时配置/etc/hosts,

[root@bisal ~]# vi etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.15.128  bisal.com       bisal

sqlplus还是很快,但是strace记录中,没出现sin_addr=inet_addr调用的IP。

posted @ 2020-12-29 10:02  harrison辉  阅读(676)  评论(0)    收藏  举报