问题描述:
开发人员报告,用myeclipse连接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。
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。
参考资料:
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
例如:
SQLNET.EXPIRE_TIME = 20
可以设置为任意数值,单位分钟。
相关推荐
您可能感兴趣的文章:常用的Oracle doc命令(收藏)Oracle 多行记录合并/连接/聚合字符串的几种方法Oracle中字符串连接的实现方法php连接oracle数据库及查询数据的方法plsql连接oracle数据库报ora 12154错
ERwin连接oracle报ORA-01041内部错误,hostdef扩展名不存在解决办法,实验可解决问题。
win 8 升级 win 10 后,oracle 11g 无法启动及客户端连接,命令行sqlplus登录,startup 时报 ORA-00119 和 ORA-00132 的错误。 1. sqlplus /nolog 2. conn / as sysdba 3. startup 报错: ORA-00119 和 ORA-00132
在程序中连接Oracle数据库的方式与其他常用数据库,如:MySql,Sql Server不同,这些数据库可以通过直接指定IP的方式连接,但是Oracle则需要通过Oracle客户端配置网络服务名的方式来连接。否则就会出现“ORA-12154: ...
连接Oracle 10g时ORA-12514 TNS 监听进程不能解析在连接描述符中给出的 SERVICE_NAME 错误的解决
解决使用Navicat Premium连接oracle的时候出现错误:ORA-28547:connection to server failed,probable Oracle Net admin error
最近在操作oracle11g的使用出现错误的现象:ora-28000 the account is locked,既用户无法登录问题,如何解决此问题呢?下面小编给大家带来了oracle11g用户登录时被锁定问题的解决方法,感兴趣的朋友一起看看吧
oracle 10g 导入 9i 00003 错误解决.txt
Navicat Premium 连接oracle ORA-28547:connection to server failed,probable Oracle Net admin error错误,在Navicat安装目录中创建instanrclient_11_2目录,将下载的压缩文件解压到instanrclient_11_2目录中,...
安装了Oracle11g整整数据库,以前正Oracle都是安装好修改配置NET Manager就可以连接了。可是今天出现了一点小意外,这里总结一下。 (一) 安装检查的问题 在Win7中安装Oracle11g 企业版,在安装的过程中出现一个问题: ...
主要为大家详细介绍了oracle 11g配置,为大家分整理了解决启动连接数据库出现ora错误的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2.ORA-12560TNS:协议适配器错误 1.监听服务没有起起来。windows平台个一如下操作:开始—程序—管理工具—服务,打开服务面板, 启动OracleOraDb11g_home1TNSlistener服务。 2.database instance
delphi与ORACLE数据库连接控件odac 安装说明 1.找到ODAC_5.70.0.30_FS\Source\Delphi7. 2.Make.bat右键编辑,填入delphi7安装路径. 3.然后运行Make.bat生成bpl文件. 注意: 在安装的时候会出现一个错误: [Fatal ...
奉上Toad for Oracle 11.6 64位,32位,所有版本注册机,以及无法连接64bitOracle 11g的错误解决方案. 由于只能上传小于60M的文件,所以Toad安装包就只上传下载地址了。
本篇文章通过两种方案帮大家解决Oracle SQL Developer连接报错(ORA-12505),需要的朋友可以参考下
5、 ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME 错误的解决 3 6、 完全卸载oracle的过程 4 7、 数据库服务的启动 4 8、 配置oracle内存 5 9、 查看Oracle版本号 5 10、 数据导入、导出 5 ...
Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...
由于oracle.exe占用内存过高,修改SGA的大小后导致监听服务不能启动,数据库不能连接等一系列问题和错误,希望此资源能够帮你解决问题,或者给你带来帮助!