ORA-3136报错
当使用错误的用户名或密码登陆数据库时,会提示如下报错内容:
bash-4.1$ sqlplus a/a@test
SQL*Plus: Release 10.2.0.4.0 - Production on Sun Sep 15 17:06:51 2013
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
此时不要做任何操作,然后等待一分钟,从alert日志中可以查到如下内容:
WARNING: inbound connection timed out (ORA-3136)
从MOS的465043.1:Troubleshooting ORA-3136: WARNING Inbound Connection Timed Out,这篇文章找到一些端倪:
这个报错指出客户端连接没有在规定的时间内通过认证,这个时间是由SQLNET.INBOUND_CONNECT_TIMEOUT参数决定的。
此时在sqlnet.log($ORACLE_HOME/network/log)中可以看到有ORA-12170或TNS-12535的报错(服务端)。信息中应该包含连接的客户端地址,这将有助于判断这个问题。但是一些应用或者JDBC thin driver的应用可能没有此类信息。默认情况下,在11g以后的版本中,sqlnet.log日志不会产生。
从10.2.0.1以后的版本,参数SQLNET.INBOUND_CONNECT_TIMEOUT的默认设置是60秒。如果客户端没能在60秒内完成验证,在alert日志中就会出现Warning信息,客户端连接被终止。
这种超时限制主要用于阻止Dos(Denial of Service)服务攻击,防止大量的恶意客户端请求涌向数据库服务器,以消耗其资源。
对于这种报错的几种可能的原因:
1. 服务器接收到来自于不支持连接此数据库的大量客户端恶意请求。这种情况下,需要抛出这种错误以及相应的行为。通过sqlnet.log中记录的客户端地址,找到错误根源。
2. 服务器接收到一个合法的客户端连接请求,但是客户端花费了比默认60秒更长的时间来完成验证。
3. 数据库服务器当前负载很重,以至于不能在规定的时间内完成客户端登陆验证。
为了了解这种错误的原因,可能需要如下的检查:
默认60秒的值在大多数数据库服务器验证客户端请求的情况下是合适的。如果这个过程时间太长,那么在寻找解决方法之前可以先检查如下选项:
1. 检查数据库服务器的本地连接是否正常,速度是否合适。
2. 如果本地连接比较快,那么可以在网络管理员的帮助下检查网络延迟。
3. 检查数据库性能是否下降。
4. 检查alert日志中是否有其它严重的报错,例如ORA-600或ORA-7445,如果有,那么先解决它们。
这些严重的报错可能引发数据库服务器的缓慢。
为了解决这个问题,通常有必要增加监听和数据库的INBOUND CONNECT TIMEOUT的取值。通常建议设置数据库取值(sqlnet.ora)比监听取值(listener.ora)略高。验证过程更依赖于数据库而不是监听。
可以遵照如下说明并重启监听,来设置这些参数取值为大于默认60秒。不需要重启数据库:
编辑服务端的sqlnet.ora文件,添加这个参数:
SQLNET.INBOUND_CONNECT_TIMEOUT=<n>
<n>代表秒。
例如:
SQLNET.INBOUND_CONNECT_TIMEOUT = 120
编辑listener.ora文件,添加这个参数:
INBOUND_CONNECT_TIMEOUT_<listenername> = <n>
<n>代表超时的秒。
例如:
INBOUND_CONNECT_TIMEOUT_LISTENER = 110
从10.2.0.1以后,INBOUND_CONNECT_TIMEOUT_<listenername>默认值是60秒。之前的版本,默认值是0或关闭。
如何检查监听和数据库服务器的inbound超时:
例如INBOUND_CONNECT_TIMEOUT_<listener_name> =110,可以通过telnet监听端口来检查这个参数是否生效。
$ telnet <database server IP> <listener port>
例如:
$ telnet 123.23.23.23 1521
telnet的session应该在110秒后断开连接,那么就表明监听的inbound连接超时生效。
另外,也可以检查LSNRCTL提示:
LSNRCTL>set current_listener <listener_name>
LSNRCTL>show inbound_connect_timeout
如何检查数据库服务器的SQLNET.INBOUND_CONNECT_TIMEOUT参数生效:
例如:SQLNET.INBOUND_CONNECT_TIMEOUT=120
a. 对于专享服务器,打开support level sqlnet server tracing,将会展示如下超时参数值:
niotns: Enabling CTO, value=120000 (milliseconds) <== 120 seconds
niotns: Not enabling dead connection detection.
niotns: listener bequeathed shadow coming to life...
b. 对于共享服务器,
$ telnet <database server IP> <dispatcher port>
例如:
$ telnet 123.23.23.23 51658
telnet的session将会在120秒后断开连接,表明sqlnet.inbound_connect_timeout参数生效。
如下两个方式还可以继续参考关于这个3136问题:
a. Client and matching server traces generated at support level.
Note 395525.1 How to Enable Oracle Net Client,Server,Listener,Kerberos and External procedure Tracing from Net Manager (netmgr):
Note 374116.1 How to Match Oracle Net Client and Server Trace Files
b. Upload sqlnet.ora, listener.ora Sqlnet.log, & Alert_<sid>.log from database server
不过@eygle也指出(http://www.eygle.com/archives/2006/07/sqlnet_inbound_connect_timeout.html),修改监听参数后不用重启监听,只需要reload。这个有待尝试。另外小荷在(http://www.oracleblog.org/working-case/deal-with-ora3136/)也讨论过这个问题。总结来讲,3136的报错可能是客户端输入错误验证信息,也可能是遭受到Dos攻击,或者有可能是数据库负载较严重的情况下客户端的连接也会出现这个报错。
ORA-3136报错的更多相关文章
- Oracle ORA 12541 报错解决过程
Oracle 导入全库之后使用plsql登陆时报错 版本12C版本2 ORA-12541: TNS: No Listener 再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法 ...
- Oracle 12c报错:ORA-01078和LRM-00109的解决办法
Oracle 12c报错:ORA-01078和LRM-00109的解决办法 2017-12-17 10:25:30 lemon_love1 阅读数 4336 收藏 更多 分类专栏: oracle ...
- DG环境恢复同步遇到报错ORA-00353ORA-00334以及ORA-00600[2619], [47745]
问题说明 客户环境主库4节点RAC11.2.0.4,单实例DG环境,DG由于空间不足,导致同步中断,由于DG备库未应用的归档主库都再,本次恢复的方式,是开启dg mrp进程,自动同步追上主库. 以下遇 ...
- Oracle 12.2 报错:ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_7458"
alert报错 2019-01-12T10:10:11.499130+08:00Errors in file /u01/app/oracle/diag/rdbms/rac1/rac112/trace/ ...
- Linux 启动数据库报错:could not open parameter file init**.ora
sqlplus /nolog.conn /as sysdba.startup命令后显示 SQL> startupORA-01078: failure in processing system p ...
- alert日志报错:ERROR: failed to establish dependency between database RACDB and diskgroup resource ora.DATA.dg
一.打开数据库alert日志,发现有报错 ERROR: failed to establish dependency between database RACDB and diskgroup reso ...
- expdp报错ora 39126
11.2.0.2,expdp报错: ORA-39126: Worker unexpected fatal error in KUPW$WORKER.GET_TABLE_DATA_OBJECTS []O ...
- 11gRAC报错CRS-4535, CRS-4000解决
环境:AIX6.1 + Oracle11.2.0.4 RAC(2 nodes) 1.故障现象 2.定位问题 3.处理问题 1.故障现象 使用crsctl查看集群各资源状态,在任一节点都会直接报错CRS ...
- 10gRAC vip启动报错CRS-1006 CRS-0215
为测试一个迁移方案,装了一套10g rac环境,可能是很久没有装过10g的RAC了,整个过程情况不断. 1.在把集群软件和数据库软件都装好之后,用crs_stat检测状态的时候,发现vip的状态不对, ...
随机推荐
- [转]ubuntu14.04安装好用的google拼音输入法
原文网址:http://jingyan.baidu.com/article/219f4bf7d4a183de442d38f2.html 装了ubuntu14.04后感觉自带的拼音输入法不好用的有没有, ...
- 黑马程序员_Java面向对象_内部类
6.面向对象_内部类 1.内部类定义 内部类:将一个类定义在另一个类里面,对里面那个类就称为内部类.(内置类.嵌套类)内部类可以被私有修饰. 2.内部类访问规则 访问特点: 内部类可以直接访问外部类中 ...
- poj2429:因数分解+搜索
题意:给定gcd(a,b)和lcm(a,b) 求使得a+b最小的 a,b 思路:结合算数基本定理中 gcd lcm的质因子表示形式 把lcm(a,b)质因数分解 以后 通过dfs找到 a+b最小的a ...
- 转:Excel转换XML工具<一>
http://blog.csdn.net/candle806/article/details/7441695最近在整理测试用例,所以想找一个合适的工具来完成对测试需求.测试用例的管理.对比了一翻,发现 ...
- qt下面例子学习(部分功能)
from aa import Ui_Formfrom PyQt4.Qt import *from PyQt4.QtCore import *from PyQt4.QtGui import *from ...
- 我所理解的设计模式(C++实现)——中介者模式(Mediator Pattern)
概述: 假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片.但是我们不能把所有的功能罗列到一个ta ...
- how tomcat works 读书笔记(一)----------一个简单的webserver
http协议 若是两个人能正常的说话交流,那么他们间必然有一套统一的语言规则<在网络上server与client能交流也依赖与一套规则,它就是我们说的http规则(超文本传输协议Hypertex ...
- [计算机组成原理][实验十.R-I-J型指令CPU设计实验总结]
总算解决一大心头之患了,比想象中容易,通宵两夜,刷完了十个实验,这个实验就是最后的了.感慨颇多.特地写篇总结. 想做一件事,就立马去做把.你会发现没那么困难,往往最大的困难,是心里的困难. 培养了HD ...
- nignx日志格式
web-master的nginx格式: log_format web_format '$remote_addr $remote_port $remote_user [$time_local] ' '& ...
- ListVeiw新增记录及 滚动条移动到指定位置
C# 自带的ListView控件的滚动条移动到指定位置. lvwList为ListView控件 lvwList.EnsureVisible(lvwList.Items.Count - 1); 新增记录 ...