数据库
首页 > 数据库> > 【Oracle错误处理】java JDBC连接oracle数据库报错,提示java.sql.SQLRecoverableException:IO 错误:Socket read timed out

【Oracle错误处理】java JDBC连接oracle数据库报错,提示java.sql.SQLRecoverableException:IO 错误:Socket read timed out

作者:互联网

客户内网测试环境,平台一直是好的(用了好几年了),今天要部署集成代码,需要在测试环境进行接口联调,还没部署,平台服务突然就挂了,提示错误如下

 

#原因分析
一.平台部署包数据配置有问题

二.Oracle数据库有问题
第一种原因排查:
啥,初始化数据连接池失败,第一反应是数据库配置有问题,打开配置文件,从url,账号,密码,及连接池配置全部检查了3遍,而且问过客户,自从测试环境搭建好,配置文件从来没改过,确实没毛病。
第二种原因排查:
  然后推测可能是oracle数据库的问题,打开plsql,一会提示无监听,一会提示监听配置有无法识别的描述,一会又能连上一次,反正不管哪种,点连接的那一刹那,plsql小窗口都会卡白屏,趁着plsql能连的时候,又启服务,
还是一样的错误,百度一下,全是说监听有问题,删除监听,重新配置,还是好那么一小会plsql能连接,但服务依然起不来,懵逼了,手动修改监听文件 listener.ora和tnsnames.ora之后重启监听依然如此,原因还是不明。
   那换个连接软件吧,使用oracle自带的SQL Developer,打开配置好连接地址,账号,密码,实例名,多次点击测试连接,然后出现连接中的遮罩,也是时好时坏,好的时候一下子连上,不好的时候也是一直在连接。于是又去找,
这次的关键字是oracle连接特别慢,然后看到一位大佬说可能是监听日志文件(listener.log)超过上限4G,就会慢,于是去目录下检查,果然已经超过4G,于是决定清理下试试,果然就好了,
操作步骤如下

1.进入windows服务管理,找到并手动停止OracleOraDb11g_home1TNSListener服务(该服务会占用listener.log文件)

2.进入 D:\app\你的pc用户账号\diag\tnslsnr\你的主机名\listener\trace目录下,重命名listener.log为listener+当前时间.log,并手动新建listener.log文件

3.重启OracleOraDb11g_home1TNSListener服务,重启当前使用的实例服务(OracleServiceORCL)

4.稍等半分钟,重新使用plsql,SQL Developer测试,已恢复正常

附listener.log文件目录

D:\app\你的pc用户账号\diag\tnslsnr\你的主机名\listener\trace

 

ps:有类似问题的朋友可作为参考

 

标签:java,log,连接,listener,报错,oracle,错误处理,监听,plsql
来源: https://www.cnblogs.com/lingyu0702/p/16382933.html