本文主要是介绍立刻杀掉Oracle中的会话(session),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、需求描述
我们开发项目的过程中,涉及到连接oracle数据库的操作,正常来说我们执行完对应的sql语句后且关闭了连接,数据库的连接就会释放了;但是现实的情况是我们在查询数据库建立的会话时,发现存在大量的InAactive会话(我们需要找到原因,且将当前的会话立刻手动删除掉,不然会影响正常业务的运行),如下图所示:
select machine,COUNT(machine) from v$session GROUP BY machine ORDER BY COUNT(machine);
二、需求分析
数据库存在大量的会话,一般来说是由如下三种情况导致:
①程序打开数据库连接后没有关闭;
②使用了数据库的连接池且池的设置不合理;
③数据库表被死锁或者会话异常退出【比如执行了更新操作后,既没有提交(commit)也没有回滚(rollback),此时网络就断开了,就会造表或记录被锁住,只有等到超时后才会被解开】;
通过排查确定问题后;oracle数据库任然存在着前期异常导致的大量会话,此时就可以使用如下语句立刻杀掉指定会话:
--不是真正的杀死会话,它只是将会话标记为终止,等待PMON进程来清除会话
这篇关于立刻杀掉Oracle中的会话(session)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!