同事反映某个客户的ERP UAT环境数据库登录不上。连接时超时,同时出现错误:
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 6月 8 11:44:55 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-03135: 连接失去联系
进程 ID: 0
会话 ID: 0 序列号: 0
一开始认为是网络问题,但是当我SSH到主机时,本机登录也有这个问题。
但是当我检查监听以及实例状态时,并未发现问题。
同时在alert_INSTANCE_ID.log中发现了大量TNS有关的错误。
如:
WARNING: inbound connection timed out (ORA-3136)
Fatal NI connect error 12170.
VERSION INFORMATION:
TNS for Linux: Version 11.2.0.4.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
Time: 08-JUN-2017 12:37:52
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: TNS:operation timed out
ns secondary err code: 12606
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=58888))
怀疑是TNS TIMEOUT设置问题。修改了 sqlnet.ora,修改参数:SQLNET.INBOUND_CONNECT_TIMEOUT=0
listener.ora: INBOUND_CONNECT_TIMEOUT_LISTENER=0
重启监听之后依旧无果,错误依旧存在
尝试用scott用户去登录,却能够正常登录数据库
这时候,想去做个oradebug, 同时,脑子里也想应该登录是被什么等待事件阻塞了。
查询v$session_blockers, 发现了3000多条记录,等待事件都是library cache lock。
同时发现会话都是来自于jdbc客户端, 于是停止了java应用。于是等待事件开始消失,同时也能够开始正常登录。
使用java应用的数据库用户名,密码登录数据库时,一直提示密码错误。 难道是密码错了?
将用户密码修改为配置文件中配置的用户密码,同时启动java应用,没有发现其他异常。
进一步看alert日志,也没有发现有新的TNS或者登录相关的错误。
获得的经验:不要一开始就认为这个是网络问题导致, alert日志中的告警肯定都有来源。
基本上从等待事件能发现很多问题的蛛丝马迹
MOS相关BUG,文档: 文档 ID 19867671.8
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 6月 8 11:44:55 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-03135: 连接失去联系
进程 ID: 0
会话 ID: 0 序列号: 0
一开始认为是网络问题,但是当我SSH到主机时,本机登录也有这个问题。
但是当我检查监听以及实例状态时,并未发现问题。
同时在alert_INSTANCE_ID.log中发现了大量TNS有关的错误。
如:
WARNING: inbound connection timed out (ORA-3136)
Fatal NI connect error 12170.
VERSION INFORMATION:
TNS for Linux: Version 11.2.0.4.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
Time: 08-JUN-2017 12:37:52
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: TNS:operation timed out
ns secondary err code: 12606
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=58888))
怀疑是TNS TIMEOUT设置问题。修改了 sqlnet.ora,修改参数:SQLNET.INBOUND_CONNECT_TIMEOUT=0
listener.ora: INBOUND_CONNECT_TIMEOUT_LISTENER=0
重启监听之后依旧无果,错误依旧存在
尝试用scott用户去登录,却能够正常登录数据库
这时候,想去做个oradebug, 同时,脑子里也想应该登录是被什么等待事件阻塞了。
查询v$session_blockers, 发现了3000多条记录,等待事件都是library cache lock。
同时发现会话都是来自于jdbc客户端, 于是停止了java应用。于是等待事件开始消失,同时也能够开始正常登录。
使用java应用的数据库用户名,密码登录数据库时,一直提示密码错误。 难道是密码错了?
将用户密码修改为配置文件中配置的用户密码,同时启动java应用,没有发现其他异常。
进一步看alert日志,也没有发现有新的TNS或者登录相关的错误。
获得的经验:不要一开始就认为这个是网络问题导致, alert日志中的告警肯定都有来源。
基本上从等待事件能发现很多问题的蛛丝马迹
MOS相关BUG,文档: 文档 ID 19867671.8
Bug 19867671 "library cache lock" caused by wrong password login - superseded
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8520577/viewspace-2140433/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8520577/viewspace-2140433/