今天本人在一台新的服务器上,使用sqlplus命令时,连接时间特别长。
[oracle@DXT-APP-2 ~]$ sqlplus
# 输入以上命令后,等待了将近10~30秒,才出现下面的内容
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jul 1 15:09:22
2015
Copyright (c) 1982, 2009, Oracle. All rights
reserved.
Enter user-name:
我使用了strace命令,看了一下问题可能存在的原因:
[oracle@DXT-APP-2 ~]$ strace sqlplus
。。。。。。
connect(8, {sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.167.1")}, 28) = 0
fcntl(8,
F_GETFL) = 0x2 (flags O_RDWR)
fcntl(8, F_SETFL,
O_RDWR|O_NONBLOCK) = 0
poll([{fd=8, events=POLLOUT}], 1,
0) = 1
([{fd=8, revents=POLLOUT}])
sendto(8, "\303\34\1\0\0\1\0\0\0\0\0\0\tDXT-APP-2\vlocaldoma"...,
39, MSG_NOSIGNAL, NULL, 0) = 39
poll([{fd=8, events=POLLIN}], 1, 5000) = 0
(Timeout)
# 命令在上面的内容,停留了几秒钟,继续显示下面的内容。
poll([{fd=8, events=POLLOUT}], 1,
0) = 1
([{fd=8, revents=POLLOUT}])
sendto(8, "\303\34\1\0\0\1\0\0\0\0\0\0\tDXT-APP-2\vlocaldoma"...,
39, MSG_NOSIGNAL, NULL, 0) = 39
poll([{fd=8, events=POLLIN}], 1, 5000) = 0
(Timeout)
close(8) = 0
。。。。。。
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) =
0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x2aead40d8000
write(1, "\n", 1
) = 1
write(1, "SQL*Plus: Release 11.2.0.1.0 Pro"..., 67SQL*Plus: Release
11.2.0.1.0 Production on Wed Jul 1 14:17:29 2015
) = 67
write(1, "\n", 1
) = 1
write(1, "Copyright (c) 1982, 2009, Oracle"..., 56Copyright (c)
1982, 2009, Oracle. All rights reserved.
) = 56
write(1, "\n", 1
) = 1
lseek(4, 4608,
SEEK_SET) = 4608
上面的内容,具体的意思我不是非常清楚。但是,在调试内容中,出现了一个IP地址:192.168.167.1。因此,我查找了一下系统的配置文件,发现在/etc/resolv.conf文件中,含有一条含有此地址的信息:
[root@DXT-APP-2 etc]# cat /etc/resolv.conf
search localdomain
nameserver 192.168.167.1
我百度了一下,发现有以下对于/etc/resolv.conf与sqlplus关系的说明:
我们的服务器上配置了名字解析服务器nameserver,但是配置的地址是错误的,或者是不可用的。oracle11g后,如果配置了nameserver,那么oracle就要先验证nameserver,失败超时之后,才会用别的办法连接,超时时间就是十几秒到30秒左右。
在linux环境下,可以将/etc/resolv.conf中的nameserver信息注释掉就可以了。
我注释了此文件中的nameserver:
[root@DXT-APP-2 etc]# cat /etc/resolv.conf
search localdomain
#nameserver 192.168.167.1
然后,再次使用sqlplus命令:
[oracle@DXT-APP-2 ~]$ sqlplus
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jul 1 14:19:39
2015
Copyright (c) 1982, 2009, Oracle. All rights
reserved.
Enter user-name:
就很快连接上去了。
Jesus love you!