下面的是这个网站我回答的博客的原文:写了一段代码想测试连接池的效率。发现在没有使用连接池的情况下对数据库执行100次连接查询的时候,就会报ORA-12519(TNS:no appropriate service handler found),并发连接数过大。而使用连接池就不会报错。疑问的是:我在不使用连接池进行每一次连接数据表查询时,都会及时关闭流,应该是每次都释放连接的吧(也就是用了一个连接就释放一个连接,下次循环再开一个连接,那这样连接数不都应该一直是1个吗),而且没有写多线程代码呀,为什么存在并发连接?这么循环操作后为什么还会得不到连接呢?
代码块如下:
Java代码
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
String username ="system";
String password = "admin";
startTime = System.currentTimeMillis();
for(int i=0;i<100;i++){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
Connection conn = DriverManager.getConnection(url,username,password);
Statement stmt = conn.createStatement();//创建陈述对象
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
//执行指定代码段
}
rs.close();
stmt.close();
conn.close();
}
System.out.println("经过100次循环调用,不使用连接池所花费的时间为"+(System.currentTimeMillis()-startTime)+"ms");
报错信息:
Exception in thread "main" java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
127.0.0.1:1521:xe
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at ConnectionPoolTest.main(ConnectionPoolTest.java:50)
------------------------------------------------------------------------------------------------------------------
问题补充:
neitheraaa 写道
试试吧 这个东西不好说 实际上你是释放了资源 但是由于你连接释放的只是你这个层面上的 真正的oracle设置项中的 数值太小
我想知道的是 难道我这么写的代码不是连接数失踪保持为1个连接的吗?因为我每次连接都释放了资源啊 如果真是自由一个连接的话?如何来的并发连接 ?就一个main主线程,哪里来的并发环境
--------------------------------------------------------------------------------
该问题已经关闭: 吞吞吐吐
我今天上网来看了看 是不是真的一定会出现这个问题,wo 把代码拷贝过来试了一下 首先不说代码的质量问题 有点垃圾,这个在我的电脑上运行就是没有问题的 这个说明什么呢一定是oracle的配置项问题 参数的修改 ,我倒是没有别的意思 只是请这位仁兄能不能不要这么心浮气躁,这样能写出好的程序,解决问题嘛;我总结出来出现问题解决要分析可能出现的问题 ,大致找出解决的方向,至少是排查的方向,这样才能真正的学到解决问题的方法和思路。谢谢读者听我唠叨 有问题留言!肖辉 neitheraaa@126.com
分享到:
相关推荐
错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...
ORA-12518 TNS:监听程序无法分发客户机连接,在您安装好数据库后配置连接数据库的过程中遇到这类问题应该很头疼吧,不过,当您还是四处查资料来解决您遇到的另你头疼的问题时,如果不经意间看到了这则贴子,那请您升...
ORA-12154: TNS: 无法解析指定的连接标识符的解决方法
oracle报错ora-12541:TNS无监听程序
### 数据库优化后遇到ORA-00838错误的处理方法 在对Oracle数据库进行优化的过程中,可能会遇到ORA-00838错误。这一错误通常发生在调整内存分配参数时,例如`MEMORY_TARGET`。本文将详细介绍如何解决这个问题,并...
用oracle数据库新建连接时遇到ora-12505,此问题解决后又出现ora-12519错误,郁闷的半天,经过一番折腾问题解决,下面小编把我的两种解决方案分享给大家,仅供参考。 解决方案一: 今天工作时在新建连接的时候遇到...
在Oracle数据库管理过程中,经常会遇到各种各样的错误提示,其中“ORA-12560 TNS: 协议适配器错误”是较为常见的一种。这种错误通常发生在客户端尝试连接到Oracle服务器时,表明网络通信出现了问题。本文将详细介绍...
### Oracle报错ORA-12516:TNS:listener could not find available handler with matching protocol stack #### 报错概述 在Oracle数据库环境中遇到ORA-12516错误时,通常意味着监听器无法找到与请求协议栈匹配的...
总之,"ORA-28040:没有匹配的验证协议"是一个常见的Oracle连接问题,需要结合Kettle的配置和Oracle数据库的设置来解决。通过以上分析和解决方案,你应该能够找到解决问题的方法,顺利连接到Oracle 12c数据库。
### ORA-12514 TNS 监听程序当前无法识别连接描述符中请求的服务 #### 知识点一:理解ORA-12514错误代码 ORA-12514错误通常发生在尝试连接Oracle数据库时,表明TNS(Transparent Network Substrate)监听程序无法...
然而,有时在使用Navicat连接Oracle数据库时可能会遇到各种问题,如"ORA-12737 InstantClientLight"错误。本文将深入探讨这个错误及其解决方案,同时也会涉及Navicat与Oracle的集成以及InstantClient的相关知识。 ...
在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$SESSION`时。该错误的出现意味着在查询结果中存在一些多字节字符(通常是...
解决ORACLE TNS: 无法解析指定的连接标识符; 里面有步骤
ora-12170 tns 连接超时问题解决方案 在本文中,我们将讨论 ora-12170 tns 连接超时问题的解决方案,该问题常见于客户端无法连接到服务器的情况。本文将从三个方面入手,分别是 tns 配置文件、服务器防火墙和路由...
最近在工作中遇到了一个问题,错误是Oracle dbca时报错:ORA-12547: TNS:lost contact,通过查找相关的资料终于找到了解决的方法,下面分享给大家,话不多说了,来一起看看详细的介绍吧。 环境: OS:RHEL6.5 x86-...
ORA-12541 TNSno listener 的解决方案 ORA-12541 TNSno listener 的解决方案
在Red Hat Enterprise Linux Server Releae 5.5 成功安装ORACLE 10g 后,在客户端配置TNS后,测试是否可以连接到数据块服务器,结果报错:ORA-12170:TNS:连接超时
ora-12514:TNS:监听程序当前无法识别连接描述符中请求的服务bug,解决文档.
主要介绍了连接Oracle数据库时报ORA-12541:TNS:无监听程序的图文解决教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下