问题描述:

  oracle使用过一段时间,连接断开,报ORA-03135错误。

  问题挖掘:

  用pl/sql和sqlplus连接oracle,也存在该问题,确定该问题与连接方式无关。

  查看服务器,发现没有防火墙,防火墙因素排除。

  ping -t 服务器地址,发现没有丢包,都100%收到,网络通畅。

  基本可以肯定问题出在oracle参数配置上。但也不排除其他因素。

  解决过程:

  根据ora-03135查询到oracle官方的解决方案:

  ORA-03135: connection lost contact

  Cause: 1) Server unexpectedly terminated or was forced to terminate. 2) Server timed out the connection.

  Action: 1) Check if the server session was terminated. 2) Check if the timeout parameters are set properly in sqlnet.ora.

  查询相关资料,发现该问题可能与sqlnet.ora设置参数SQLNET.EXPIRE_TIME 有关。因此在server上面的sqlnet.ora设置参数SQLNET.EXPIRE_TIME = 5(需在服务器监听reload一下使参数生效:lsnrctl reload),而在client不设置该参数,。等待一段时间后,没有出现该问题了,问题解决。

  知识扩展:

  在server端的sqlnet.ora文件中设置SQLNET.EXPIRE_TIME这一参数可以启用DCD功能,DCD是Dead Connection Detection的缩写,用于检查死掉但没有断开的session。

  例如:

  SQLNET.EXPIRE_TIME = 20

  可以设置为任意数值,单位分钟。

  重启listener

  bash-2.05$ lsnrctl reload

  ……

  The command completed successfully

  DCD可以用于防止防火墙的timeout。

  当新连接建立的时候,会读取sqlnet.ora中的这一设定,当20分钟间隔到达时,对inactive的session发送”probe” SQL*NET packet来确认client是否活着。如果已经死掉,那么相对应的resource会被自动清除。

  如果client和server中间有防火墙,防火墙设有timeout参数,例如设置为一个小时,当一个小时中client和server间没有数据传输的时候,防火墙会断开连接。开启DCD后,通过设置SQLNET.EXPIRE_TIME的值小于防火墙的timeout参数可以避免这一情况。 “probe” package确保防火墙不会断开idle的session。

  大多数情况下,这样操作就好了,要是还是不行就进行停止oracle实例和重启操作

  1、启动数据库:

  oracle@suse92:~> sqlplus /nolog

  SQL*Plus: Release 9.2.0.4.0 - Production on Fri Jan 20 02:29:37 2006

  Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

  SQL> connect /as sysdba

  Connected to an idle instance.

  SQL> startup

  ORACLE instance started.

  Total System Global Area 135352820 bytes

  Fixed Size 455156 bytes

  Variable Size 109051904 bytes

  Database Buffers 25165824 bytes

  Redo Buffers 679936 bytes

  Database mounted.

  2、关闭数据库:

  oracle@suse92:~> sqlplus /nolog

  SQL*Plus: Release 9.2.0.4.0 - Production on Fri Jan 20 02:29:37 2006

  Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

  SQL> connect /as sysdba

  Connected to an idle instance.

  SQL> shutdwon abort;

  3、启动监听器

  oracle@suse92:~> lsnrctl start

  4、停止监听器

  oracle@suse92:~> lsnrctl stop

  5、查看监听器状态

  lsnrctl">oracle@suse92:~>lsnrctl

  LSNRCTL> status

  LSNRCTL> exit

  参考资料:

  sqlnet.ora http://www.orafaq.com/wiki/Sqlnet.ora

  oracle DCD http://www.dbafan.com/blog/?p=174

  sqlnet.expire_time and IDLE_TIME http://space.itpub.net/10687595/viewspace-420407

  SQLNET.EXPIRE_TIME 的官方说明

  Purpose

  Use parameter SQLNET.EXPIRE_TIME to specify a the time interval, in minutes, to send a probe to verify that client/server connections are active. Setting a value greater than 0 ensures that connections are not left open indefinitely, due to an abnormal client termination. If the probe finds a terminated connection, or a connection that is no longer in use, it returns an error, causing the server process to exit. This parameter is primarily intended for the database server, which typically handles multiple connections at any one time.

  Limitations on using this terminated connection detection feature are:

  · It is not allowed on bequeathed connections.

  · Though very small, a probe packet generates additional traffic that may downgrade network performance.

  · Depending on which operating system is in use, the server may need to perform additional processing to distinguish the connection probing event from other events that occur. This can also result in degraded network performance.

  Default

  0

  Minimum Value

  0

  Recommended Value

  10

  Example

  SQLNET.EXPIRE_TIME=10(编辑:雷林鹏 来源:网络)

oracle10g连接自动断开,报ORA-03135错误的更多相关文章

  1. SSH连接自动断开的解决方法(deb/rpm)

    ######### 修改后的: ## # tail -f -n 20 sshd_config#MaxStartups 10:30:60#Banner /etc/issue.net # Allow cl ...

  2. 【原创】大叔经验分享(22)securecrt连接自动断开

    securecrt一段时间没有操作连接就会自动断开(xshell就没有这个问题),提示信息为:信号灯超时时间已到,解决方法为: Options -- Session Options -- Termin ...

  3. [大数据技术]Kettle初次连接MySQL数据库 报错问题 错误连接数据库 Error occured while trying to connect to the database Exception while loading class org.gjt.mm.mysql.Driver

    报错内容如下: 错误连接数据库 [foodmartconn] : org.pentaho.di.core.exception.KettleDatabaseException: Error occure ...

  4. 升级Ubuntu 16.04 LTS后 DSL拨号上网(ppp)连接自动断开解决办法

    原本在Ubuntu 15.10用拨号上网没有问题,但升级了16.04 LTS后发现原来的DSL连接不上了.主要表现为: 1.在NetworkManager里面选择DSL Connection能够尝试拨 ...

  5. 转: xshell远程连接自动断开的问题解决办法

    转:http://blog.csdn.net/haijiaoqihao20160106/article/details/50623431 2.客户端的配置 Keep Alive修改.我的xshell的 ...

  6. linux ssh连接自动断开问题

    场景描述:云上的虚拟机使用public ip连接ssh时,一直提示已经连接,但是就会自动关闭 1. 通过正常虚拟机作为跳板,能够连接到目标机子上,检查发现进程正常,但是就一直连接不上 [root@te ...

  7. 使用navicat连接mysql要报10038的错误

    1.mysql的设置 (1)授权mysql>grant all privileges on *.*  to  'root'@'%'  identified by 'youpassword'  w ...

  8. 关于oracle 11g导出数据时 报 ORA 1455错误的处理

    因为导出的该用户的表可能存在空数据表,那么可能就会出现此其异常. 首先:  查看:     SQL>show parameter deferred_segment_creation;  假设为T ...

  9. plsql 连接oralce数据库,报ora 12557 tns 协议适配器不可加载错误

    使用plsql 连接oracle 数据库报ora 12557 错误: 解决方案: 1:首先确保服务中的service以及监听器都开启 2:F:\app\Administrator\product\11 ...

随机推荐

  1. JAVA学习基础知识总结(原创)

    (未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...

  2. 重新来认识你的老朋友Spring框架

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  3. 奔小康赚大钱---hdu2255(最大带权匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 带权匹配问题的模板: 运用KM算法: #include<stdio.h> #incl ...

  4. Git学习-->关于Jenkins编译时候,如何获取Git分支的当前分支名?

    一.背景 因为代码都迁移到了Gitlab,所以Jenkins编译的时候我们都需要将之前的SVN信息换成现在的Git信息.最近编译一个Lib库的时候,因为团队规定上传Release版本的AAR到Mave ...

  5. Linux下编译安装MySQL5.6

    [准备工作] 所有操作需要在root用户下 本机测试案例系统信息:centos7.3 安装路径:/usr/local/mysql [安装MySQL] 先安装如下依赖包: $ yum -y instal ...

  6. jenkins下搭建c++持续集成环境

      运行环境为centos 5.8 1.下载tomcat,并解压 2.下载jenkins,把jenkins.war放到tomcat的webapp目录下 3.在tomcat的bin目录下执行./star ...

  7. hashset和treeset的区别

    hashset 和 treeset的区别 hashset 和 treeset的区别 1.TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值. 2.HashSet ...

  8. 了解Flask 信号机制

    Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为. pip3 install blinker 1. 内置信号 request_started = ...

  9. javascript日期字符串和日期对象相互转换

    HTML页面间需要传递日期和时间参数的时候,如果需要对日期字符串进行时间的运算,就需要先将日期字符串转换成JS日期对象. 在js中,yyyy-MM-dd HH:mm:ss格式的日期字符串不能用来直接构 ...

  10. python openpyxl 封装Execl常用操作的方法

    封装Excel操作方法:先装openpyxl:pip install openpyxl==2.4.5(可以指定版本) 封装脚本:#encoding=utf-8 from openpyxl import ...