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。
                    
                
                
            
        
浙公网安备 33010602011771号