sqlplus hang
环境:ubuntu,10.2.0.1 oracle db
现象:客户端连接数据库时长时间无响应
处理:
以oracle用户登录ubuntu主机,ps -ef | grep pmon查看后台进程,没有问题;
尝试用sqlplus / as sysdba方式登录数据库,失败,同样无响应;
top查看系统资源占用情况,cpu user20%,sys70%,oracle用户进程平均占4%左右cpu;
怀疑由于cpu繁忙导致无响应;尝试杀掉所有oracle进程,重启数据库;
在杀掉oracle进程后;cpu资源得到释放,恢复正常,再次尝试sqlplus / as sysdba,仍然无响应;
strace sqlplus后,发现进入死循环:
times(NULL) = -2144584792
times(NULL) = -2144584792
……
跟bug:338461.1非常相像
$ strace /oracle/home/bin/sqlplus -V 2>&1 |less
……
old_mmap(NULL, 385024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×41794000
gettimeofday({1122996561, 411035}, NULL) = 0
access(“/usr/local/UD/conf/sqlnet.ora”, F_OK) = -1 ENOENT (No such file or directory)
access(“/usr/local/UD/lib/oracle/network/admin/sqlnet.ora”, F_OK) = -1 ENOENT (No such file or directory)
access(“/usr/local/UD/conf/sqlnet.ora”, F_OK) = -1 ENOENT (No such file or directory)
access(“/usr/local/UD/lib/oracle/network/admin/sqlnet.ora”, F_OK) = -1 ENOENT (No such file or directory)
fcntl64(-1218313656, F_SETFD, FD_CLOEXEC) = -1 EBADF (Bad file descriptor)
times(NULL) = -1825782405
times(NULL) = -1825782405
times(NULL) = -1825782405
times(NULL) = -1825782405
times(NULL) = -1825782405
times(NULL) = -1825782405
times(NULL) = -1825782405It is looping on the times() function.
解决:1. 重启主机 or 2. 打10.2.0.2补丁。