今天使用数据库时突然发现无法连接了,然后发原来是连接满了,我居然不能使用了,可恶。最大连接数300,某个用户占了168,一大半蛋糕都被它吃了。
但是这时使用的人并不多,一猜就是某些程序里的连接没释放。本来想重启数据库,考虑到有人正在着急使用,所以还是先暂时杀掉一些其他用户连接。
为了保险起见,还是先去查询一番。。。
顺便记录一下:
查看每个用户分别有多少连接:
select username,count(username) from v$session where username is not null group by username;
当前的数据库连接数:
select count(*) from v$process ;
查询某个用户下的连接的sidhe serial#
select sid,serial#,status from v$session where username='大写用户名';
根据sid和 serial#杀掉连接
网上好多都是下面这句话:
alter system kill session 'sid,serial#';
但是发现删除后只是给这个session标记了一个killed的标记,并没有真的删除.
看来都是复制来的.
后来gg了一下,发现要加一个IMMEDIATE,就是立即断开连接:
alter system kill session 'sid,serial#' IMMEDIATE;
嗯,这个还是好使的,呦西。
还有别的一些方法,感兴趣的看这里:贴下别人文章,人家也不容易,点击查看
参考了别人的东西, 顺便感谢这些大神仔细的研究,还详细的记录下来,让我们可以站在他们的肩膀上撒尿,毕竟站的越高,尿的越远。