oracle 12c 服务器 sql语句执行结束 但是 sql 会话一直存在

  1. 数据库连接池使用的是阿里的德鲁伊druid,超时时间30分钟。
  2. oracle 12c 数据库服务器
  3. 业务查询sql 在oracle 服务器执行了12分钟 但是 会话没有关闭一直存在。
  4. 会话超过30分钟业务代码提示连接超时断开连接。
  5. 手动关闭会话,但是重新执行业务代码还是会出现同样的问题
  6. 经分析问题如下:为什么oracle 数据库服务器执行sql 结束 会话没有关闭?
  7. 希望遇到类似问题的小伙伴来解答一下。

你这个问题第6点就已经错了,对于第4点

会话超过30分钟业务代码提示连接超时断开连接

这个只是你应用认为超时了,主动结束连接,而且并没有把结束指令发给数据库,数据库当然还是在执行这个sql

druid是连接池,连接池的意义就是保持一定数量的连接,每一个连接对应oracle里的一个会话
每一次执行sql的时候都会去连接池拿一个连接
sql执行完毕了,但是连接不会关闭的,会回到连接池,等待下一次使用

连接池的好处就是不用每次执行sql的时候都去打开会话,执行完再关闭会话,这样频繁操作会话开销很大.