【异常信息】:

【原因分析】:
由于WebLogic内部设置了对于数据源超时非活动连接关闭机制,但是由于我们程序中执行SQL处理了数据量较大,最终导致我们程序执行的时间已经超出WebLogic内设置的数据源超时非活动连接时间,程序中SQL还没有执行完成,WebLogic就强制关闭了程序和数据库之间的连接。

【解决方案】:
1、首先打开所要设置的数据源。
2、然后设置非活动超时连接时间。
注意:要设置关闭非活动连接的总时间,除以4 就是这个参数所有填写值,此参数值单位为秒。

【参考资料】:
http://www.blogjava.net/fjin/archive/2013/10/10/404841.html
http://impradeep.com/forcibly-releasing-inactive-connection-weblogic-jdbc-wrapper-poolconnection_oracle_jdbc_driver_t4cconnectiond72/

【异常日志】:

【原因分析】:
1、线程执行时间过长,出现阻塞问题,分析日志查看出现的问题的线程类名。
2、sql语句执行时间过长。

【解决方法】:
可以通过以下几种方法解决:

1)修改StuckThreadMaxTime参数,将默认的600s改成1200s,或者其它适合的值。

2)增大线程数,防止线程阻塞问题。

3)优化程序,减少处理时间。

 

对sql语句进行优化处理:

1)对INFO_SIGN,PPMC等字段建立规范表,从数据库中进行查询,尽量减少in的使用

2)对<>等操作符不使用,使用> or <等方式来代替

3)尽量减少排序order by,rownum的使用,只在关键时刻进行使用,其他时刻能够不使用的就不进行使用。