oracle java跳不出来,JAVA JDBC连接打开不及时关闭导致Oracle报错ORA-00020ORA12516

JAVA JDBC连接打开不及时关闭导致Oracle报错ORA-00020ORA12516

JAVA JDBC连接打开不及时关闭导致Oracle报错ORA-00020&ORA12516

JAVA web项目JDBC连接池配置过大,或者JAVA数据源JDBC连接类编写不规范,打开链接不及时关闭,会导致数据库进

程数超过最大值而拒绝新连接。最近,一客户的遇到的问题就是典型的JDBC连接类打开会话不关闭导致应用链接报错:ORA-00020&ORA12516。

一、问题描述

? JAVA WEB应用前台报错数据库连接超时,web中间件后台报错ORA-12516,报错信息如下:

public void close() {

try {

conn.close();

c.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

System.out.println("Test is true!");

ResultSet newrs;

JDBCTest newjdbc = new JDBCTest();

System.out.println(newjdbc);

newrs = newjdbc.executeQuery("select * from dba_users");

try {

while (newrs.next()) {

System.out.print(newrs.getString("USER_ID"));

System.out.print("\t" + newrs.getString("USERNAME"));

System.out.println("\t"+newrs.getString("DEFAULT_TABLESPACE"));

}

} catch (Exception e) {

e.printStackTrace();

}

newjdbc.close();

}

}

操作结果如下:

ad54972080236e75c3f421821a630c52.png

在后续的问题追踪中,也发现WEB应用一启动就占用数据库470个会话连接:

da64d7f9c9067c014d6033666aa7d7e2.png

为了说明非数据库配置问题将数据库进程数调整到3000,会话连接数调整到4500:

646452f1e9fe0645768122a1e8ff401a.png

af38e5670a8c293282718115c7d1d811.png

但是,应用程序启动后,还是会报数据库连接异常,到这里问题基本确定,导致应用链接数据库异常的原因是超过数据库

最大进程数,数据库不能无限制的提供资源,最佳的解决方法是应用程序自身从根本上杜绝。

JAVA JDBC连接打开不及时关闭导致Oracle报错ORA-00020ORA12516相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值