ORA-3136报错

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 当使用错误的用户名或密码登陆数据库时,会提示如下报错内容:bash-4.1$ sqlplus a/a@testSQL*Plus: Release 10.

当使用错误的用户名或密码登陆数据库时,会提示如下报错内容:

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攻击,或者有可能是数据库负载较严重的情况下客户端的连接也会出现这个报错。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
10月前
|
安全 Ubuntu Linux
Linux重要知识点
掌握以上Linux重要知识点可以帮助你高效地使用和管理Linux系统。这些知识不仅在日常使用中非常重要,而且在系统维护、网络配置和安全管理等方面也非常关键。通过不断实践和深入学习,可以进一步提高对Linux系统的理解和掌握。
215 22
|
10月前
|
消息中间件 调度
如何区分进程、线程和协程?看这篇就够了!
本课程主要探讨操作系统中的进程、线程和协程的区别。进程是资源分配的基本单位,具有独立性和隔离性;线程是CPU调度的基本单位,轻量且共享资源,适合并发执行;协程更轻量,由程序自身调度,适合I/O密集型任务。通过学习这些概念,可以更好地理解和应用它们,以实现最优的性能和资源利用。
339 11
|
消息中间件 分布式计算 DataWorks
DataWorks常见问题之sap haha数据同步kafka如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
392 6
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp微信小程序的社区养老服务平台的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的社区养老服务平台的详细设计和实现
245 1
|
机器学习/深度学习 人工智能 搜索推荐
【AI 初识】解释推荐系统的概念
【5月更文挑战第3天】【AI 初识】解释推荐系统的概念
|
传感器 大数据 物联网
大数据类型与特征
【4月更文挑战第9天】大数据包含交易、人为、移动及机器传感器数据,特征表现为大量、高速、多样、可变、真实、复杂和有价值。它影响商业决策、市场分析和科学研究,展现巨大潜力。
493 3
|
存储 监控 安全
【亮剑】指导初学者如何搭建和使用网络视频监控系统。
【4月更文挑战第30天】本文指导初学者如何搭建和使用网络视频监控系统。核心设备包括摄像头(如固定、PTZ、多目、夜视)、存储选项(NVR、DVR、云存储)及网络交换机等。安装配置步骤涉及规划布局、安装摄像头、设置存储设备和软件配置。实时监控包括实时查看、接收警报和录像回放。理解设备功能、合理布局并细心操作,就能建立稳定监控体系。随着技术进步,未来监控系统将更智能、高效,保障安全。
1417 0
|
弹性计算 大数据 测试技术
阿里云服务器4核8GB的价格多少钱?2024年阿里云4核8G服务器评测
2024年阿里云服务器4核8GB的价格会根据所选的实例类型有所不同。一般来说,阿里云服务器4核8G配置的价格在955.58元至2944.79元之间一年。其中,通用算力型u1实例的价格为955.58元一年,而计算型c7实例的价格为2944.79元一年。对于性能评测,不同实例类型的性能参数和适用场景会有所不同。例如,通用算力型u1实例适合大多数场景下的应用需求,具有较高的性价比。而计算型c7实例则适用于对计算能力有较高要求的应用,如科学计算、大数据分析等。
697 0
|
存储 弹性计算 数据库
阿里云服务器购买,常见四种购买方式图文教程
阿里云服务器可以通过云服务器ECS购买页自定义购买,也可以通过活动页面购买,这两种是用的最多的购买方式,另外还有通过云市场镜像购买和快速购买,后两种方式一般为已经买过云服务器的用户使用比较多,本文为大家展示这常见的四种购买具体流程,以供大家了解不同购买方式的区别及主要适合群体。
阿里云服务器购买,常见四种购买方式图文教程
|
XML C++ 数据格式
[√]vld的安装和使用
[√]vld的安装和使用
323 0