求教oracle出现ORA-03135后程序不能重新连接数据库的问题!!! 提交频率是多少。看一下log有没有对应的日志,看一下监听日志的大小如果出现错误,如何解决,重启库? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 提交记录,如果捕获到异常,为什么要不断的重新连接数据库,又不是连接的问题。不断的relog,是不是超出了数据库连接上限了。 谢谢楼上两位大哥的回复!有记录的话,提交频率是100ms左右,如果当前没有记录,则不执行提交。监听日志文件有234M。出现错误时,在另外一台机器上运行程序可以正常连接;在出错的机器上重启程序也可以正常连接,不需要重启数据库。 谢谢这位大哥的回复!在出错的机器上,用netstat -a | find "1521"查看连接,只有3个,是正常的。在数据库服务器上查看的结果是12个(有两台客户端在连此数据库)。连接断开时提交异常的一个原因(如服务被停止或网络中断),这里直接重连算是偷懒了,应该有更好的方法,但是程序在重连前有做断开连接(logoff)的操作。if (1 == otlConnect.connected) { otlConnect.logoff(); }Retry:... 这位大哥,你的问题解决了吗》??我的软件最近也是经常报ORA-03135的错误,每次都让线程卡死一样我按照网上的方法将SQLNET.EXPIRE_TIME=20,都还是依旧希望可以通过你那边获取到一些解决方法信息 这个问题我也跟OTL的作者联系了,我给了他一份测试代码,但是他在LINUX上测试的没有问题(我这边在Windows),他说应该是Windows下OCI的问题,但是根本原因也没有找到。你如果需要看他的回复,请留个邮箱,我转发给你。我现在采取了一个不得已的方法:开启一个线程专门用于检查连接是否存活,若发现在指定时间内线程没有反应则重启程序。 最近也碰到这个问题,请将otl作者的邮件转我看下,谢谢啦[email protected] 我也在用OTL,程序是跨平台(Linux/Windows),没有发现楼主的问题,建议把异常信息写到日志文件中,这样也好知道是什么错误。我的重连函数跟你差不多: /***************************************************************** Function : CConnection::Reconnect Description : 重新连接数据库 Input : @ bForce : 强制重练标识,如果为false则判断是否已经连接上,是则返回 Output : 无 Return : 成功 : true 失败 : false ******************************************************************/ bool CConnection::Reconnect(bool bForce /* = false */) { if( m_db.connected == 1 && !bForce ) return true; try { m_db.logoff(); m_db.rlogon(m_strConn.c_str()); } catch( otl_exception & e ) { GetErrFromException(e); } return ( m_db.connected == 1 ) ? true : false; } 另外,最好别在某个中间层用死循环,要改变策略。我建了一个连接池,目前的策略是如果执行SQL失败了,不重新连接再执行,而是等那下一次调用连接时,判断上一次的错误码,需要的话就重连。下面是我收集的需要重连的错误码:ORA-03113: 通信通道的文件结尾ORA-03114: 未连接到 ORACLEORA-03135: 失去联系ORA-12170: TNS: 连接超时ORA-12541: TNS: 无监听程序(需要启动监听后再重新连接)ORA-12543:TNS: 无法到达目的主机ORA-12545: TNS: 因目标主机和对象不存在,连接失败Oracle错误太多了,欢迎补充啊! 关注linux不会出现此问题,windows却会。 有没可能是防火墙的问题?空闲连接被防火墙禁掉。我也遇到过这种现象,连接上oracle后,长时间没有访问oracle,后来需要访问的时候阻塞在访问oracle的接口上,后来加了个心跳,就没再出现了 oracle数据库如何设置密码强度策略、数据库连接超时时间? 关于两张表联合起来update oracle安装到第三张光盘,开始在复制数据库时停电,要怎么把剩下的安装完 一关联修改语句问题~! 在oracle中,如何查看在一张表上建立了哪些触发器? 请教!!oracle和SQL SERVER的区别? 请问那儿可以下到Oracle9i或者Oracle8i企业版?? 求高效率统计方法 数据库链问题,大家请看。 Oracle portal是来做什么的? oracle联合查询后的排序问题 存储过程输入日期型参数带入SQL语句
不断的relog,是不是超出了数据库连接上限了。
有记录的话,提交频率是100ms左右,如果当前没有记录,则不执行提交。
监听日志文件有234M。出现错误时,在另外一台机器上运行程序可以正常连接;在出错的机器上重启程序也可以正常连接,不需要重启数据库。
谢谢这位大哥的回复!在出错的机器上,用netstat -a | find "1521"查看连接,只有3个,是正常的。在数据库服务器上查看的结果是12个(有两台客户端在连此数据库)。连接断开时提交异常的一个原因(如服务被停止或网络中断),这里直接重连算是偷懒了,应该有更好的方法,但是程序在重连前有做断开连接(logoff)的操作。
if (1 == otlConnect.connected)
{
otlConnect.logoff();
}Retry:
...
这位大哥,你的问题解决了吗》??
我的软件最近也是经常报ORA-03135的错误,每次都让线程卡死一样
我按照网上的方法将SQLNET.EXPIRE_TIME=20,都还是依旧
希望可以通过你那边获取到一些解决方法信息
这个问题我也跟OTL的作者联系了,我给了他一份测试代码,但是他在LINUX上测试的没有问题(我这边在Windows),他说应该是Windows下OCI的问题,但是根本原因也没有找到。你如果需要看他的回复,请留个邮箱,我转发给你。我现在采取了一个不得已的方法:开启一个线程专门用于检查连接是否存活,若发现在指定时间内线程没有反应则重启程序。
最近也碰到这个问题,请将otl作者的邮件转我看下,谢谢啦
[email protected]
我的重连函数跟你差不多: /*****************************************************************
Function : CConnection::Reconnect
Description : 重新连接数据库
Input :
@ bForce : 强制重练标识,如果为false则判断是否已经连接上,是则返回
Output : 无
Return :
成功 : true
失败 : false
******************************************************************/
bool CConnection::Reconnect(bool bForce /* = false */)
{
if( m_db.connected == 1 && !bForce )
return true; try
{
m_db.logoff();
m_db.rlogon(m_strConn.c_str());
}
catch( otl_exception & e )
{
GetErrFromException(e);
} return ( m_db.connected == 1 ) ? true : false;
}
ORA-03113: 通信通道的文件结尾
ORA-03114: 未连接到 ORACLE
ORA-03135: 失去联系
ORA-12170: TNS: 连接超时
ORA-12541: TNS: 无监听程序(需要启动监听后再重新连接)
ORA-12543:TNS: 无法到达目的主机
ORA-12545: TNS: 因目标主机和对象不存在,连接失败Oracle错误太多了,欢迎补充啊!