oracle中ORA-3136,ORA-609

Fatal NI connect error 12170.

  VERSION INFORMATION:
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production
  Time: 01-11月-2011 16:46:57
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
   
TNS-12535: TNS: 操作超时
    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=192.168.3.53)(PORT=2950))
WARNING: inbound connection timed out (ORA-3136)

 

Fatal NI connect error 12560, connecting to:
 (LOCAL=NO)

  VERSION INFORMATION:
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production
  Time: 09-11月-2011 11:22:32
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12560
   
TNS-12560: TNS: 协议适配器错误
    ns secondary err code: 0
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
opiodr aborting process unknown ospid (21388) as a result of ORA-609
Wed Nov 09 11:22:49 2011

ora-3136的这个报错,在大部分情况下,我们是可以忽略的,因为这个报错一般是由于客户端由于梅雨正确的密码,连接超时导致。举个很简单的例子,我们用sqlplus user/password@tnsname,但是输入的密码是错误的,oracle提示:ORA-01017: invalid username/password; logon denied,之后,什么都别做,连接挂在那里,等一分钟之后,就可以在alertlog中看到这个报错了。

因此,ora-3136报错的一种可能性是客户端使用率错误的密码登录,但是之后没有退出连接。

但是ora-3136的报错不仅仅是这一种可能,另外还有当收到来自恶意客户端的连接,如Dos攻击,另外,还有当数据库负载比较重的时候,也会有这样的报错。具体可见metalink 《Troubleshooting ORA – 3136 WARNING Inbound Connection Timed Out [ID 465043.1]》里面说的3种可能性:

There can be three main reasons for this error -
 
   1. Server gets a connection request from a malicious client which is not supposed to connect to the database , in which case the error thrown is the correct behavior. You can get the client address for which the error was thrown via sqlnet log file.
   2. The server receives a valid client connection request but the client takes a long time to authenticate more than the default 60 seconds.
   3. The DB server is heavily loaded due to which it cannot finish the client logon within the timeout specified.
根据我的理解,总之,在oracle的侦听接受到一个来自客户端的请求,当fork到服务器进程的时候,如果在这个过程中发现意外,如密码错误,如数据库负载太重,都会参数ora-3136的报错。

 

有可能是数据库服务器压力大,也有可能是应用服务器压力大,只要是这60秒内这个认证过程没有完成,就会报这个错误。

跑awr,发现shared pool撑的比较大,library cache latch和shared pool latch 与swap发生置换,page in增高 cpu的wio增高,现象和我们系统的几次情况完全一样,经过几次调优,我们分析主要是这么个流程 :1 ,分析业务连接,主要通过监听日志和交换机防火墙,确定每秒连接次数,确定是哪些业务连接过来,经过确认有业务连接池有问题,在被其他站点爬虫抓取之后,压力非常大,限制连接池,业务连接问题解决; 分析是否无绑定变量,经过分析,系统代码良好,全部使用绑定变量 ; 3,分析shared pool配置,经查,使用自动内存配置,10g的不能解决的问题就是当自动配置后,会有bug造成池不断增大,修改为手动配置, 4,分析机器内存参数配置,发现剩余内存较小,设置内存保留,确保当系统压力大时,系统仍能分配出内存,而不是把内存使用为cache,oracle 反而去从swap中取地址造成系统无响应造成报错ORA-01017,分析os内存分配主要看共享内存和各进程内存,发现耗费内存的主要还是共享池撑的过大,降低之,os的cache耗费过高,设置为directio后,降低cache使用内存,之后此情况没有再出现过。如performance所说,小荷你还得看看机器中内存到底是被什么给消耗掉了,pin住sga不是最关键的,如果内存够用,sga被转到swap的概率很低,而且很快就会回来,所以我觉得还是得分析到底内存被用在哪里了。

swap严重

与swap发生置换,page in增高->hdisk0繁忙100%->整体系统负载高->fork服务器进程失败->ora-3136错误
与swap发生置换,page in增高->hdisk0繁忙100%->整体系统负载高->library cache latch和shared pool latch

但是本案例没有找到swap很高的原因

时间: 2024-10-20 08:23:16

oracle中ORA-3136,ORA-609的相关文章

ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)

        不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册.与单实例相同,RAC非缺省端口的监听器也是通过设置参数local_listener来达到目的.除此之外,还可以对实例进行远程注册,以达到负载均衡的目的.这是通过一个参数remote_listener来实现.   有关Oracle 网络配置相关基础以及概念性的问题请参考:      配置ORACLE 客户端连接到数据库   配置非默认端口

ORACLE RAC 监听配置 (listener.ora tnsnames.ora)

    Oracle RAC 监听器的配置与单实例稍有不同,但原理和实现方法基本上是相同的.在Oracle中 tns进程用于为指定网络地址上的一个或多个Oracle 实例提供服务注册,并响应来自客户端对该服务提出的连接请求.一旦连接请求到达,并派生出一个服务器进程建立服务器与用户端之间的连接(专有服务器dedicated server)或转发服务请求(共享服务器模式shared server).如果监听器知道多于一个实例提供所请求的服务,则可能会根据客户端与服务器端相关配置将请求定位到较低负载的

listener.ora,tnsnames.ora中一个空格的威力

最近几天被网络监听配置搞得焦头烂额,有时候配置没问题,有时候就出莫名其妙的问题,今天专门花时间总结了一下,希望对大家有所帮助. listener.ora,tnsnames.ora有时候没有netca,netmgr这样的图形工具来创建的时候,只能手工来做,手工做的时候会有一些格式的问题,多加一个空格,或者少一个空格,就会有不同的结果. 案例一 下面是一个监听的基本配置,我故意在前面多加了一个空格(黄色标记所示).  LISTE1=   (DESCRIPTION=     (ADDRESS_LIST

在ORACLE中移动数据库文件

在ORACLE中移动数据库文件 ---- ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成.由于磁盘空间的变化,或者基于数据库磁盘I/O性能的调整等,数据库管理员可能会考虑移动数据库文件.下面以UNIX平台为例,分别讨论三种数据库文件的移动方法. ---- 一.移动数据文件: ---- 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件. ---- 1. ALTER DATABASE方法: ---- 用此方法,可以移动任何表空间的数据文件.

ORACLE中一些问题的解决方法

oracle|解决|问题  ORACLE中一些问题的解决方法 在ORACLE管理和应用中,难免出现一些问题.通常,ORACLE会显示错误标号和简短说明,我们可以根据显示的信息去处理问题.但有时显示的信息很少,处理起来有些麻烦.本文讨论了这样几个问题,根据一些资料和经验,提出了解决方法.   一.             ORA-00604 error occurred at recursive SQL level 这个信息表明,在数据库执行内部SQL语句时,发生了错误.比如,要往表中插入一行数据

Oracle中password file的作用及说明

oracle|word  在数据库没有启动之前,数据库内建用户是无法通过数据库来验证身份的. 口令文件中存放sysdba/sysoper用户的用户名及口令,允许用户通过口令文件验证,在数据库未启动之前登陆,从而启动数据库. 如果没有口令文件,在数据库未启动之前就只能通过操作系统认证. 使用Rman,很多时候需要在nomount,mount等状态对数据库进行处理所以通常要求sysdba权限如果属于本地DBA组,可以通过操作系统认证登陆如果是远程sysdba登陆,需要通过passwordfile认证

Oracle中如何远程访问ASM

一.动态监听 1.监听文件 [oracle@node1 admin]$ more /u01/oracle/network/admin/listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/oracle) (PROGRAM = extproc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADD

oracle中如何创建表空间

ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户 对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额. 因此,在创建对象之前,首先要分配存储空间. 分配存储,就要创建表空间: 创建表空间示例如下: CREATE TABLESPACE "SAMPLE" LOGGING DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SI

ORACLE中死锁的知识点总结

  死锁的概念       什么是死锁呢? 其实我们生活中也有很多类似死锁的例子. 我先举一个生活中的例子:过年回家,父亲买了一把水弹枪,儿子和侄子争抢着要先玩,谁也不让谁,拆开包装后,一个抢了枪, 一个逮住了子弹和弹夹.两个都争着要先玩,但是都互不相让.结果两个人都玩不了.如果儿子要先玩,就必须让侄子把子弹和弹夹给他,如果侄子要先玩,就必须让儿子把枪给侄子.他们就这样对峙了十几分钟,互不相让. 我出来调停,让儿子把枪先给侄子玩,每个人玩十分钟.然后两个人开开心心一起玩起来.其实这就是一个活生生