日期:2014-05-16  浏览次数:20461 次

Oracle会话数量查询及结束会话方法
一、数据库会话数量查询
  查询当前数据库会话数量:select * from v$session
  修改数据库最大会话数量:alter system set processes=500 scope=spfile  (在命令模式下执行)
  查看当前数据库最大会话上限:show parameters processes;

  查看当前数据库DBLINK最多可打开的连接数量:show parameters open_links;

二、删除被锁住的Session
1、一般的话只要下面两条命令就可以:
(1)select t1.sid,t1.serial#,t1.username,t1.logon_time from v$session t1,v$locked_object t2 where t1.sid=t2.session_id order by t1.logon_time;
(2)alter system kill session  'sid, serial#';
备注:其中(2)中的sid和serial#是(1)中查询出来的。
2、有时这种方法还是删不掉,就要用ORAKILL命令了
(1)select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l.object_id=o.object_id and l.session_id=s.sid;
(2)select spid ,osuser,s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=93;
(3)orakill sid spid(unix 系统下,root身份:kill sid spid)
说明:
第一条2(1)和1(1)效果是一样的,只是查出的内容更多,我们要的,关键是这个sid,
第二条中的93,就是第一条中查询出的sid;
第三条要在系统下进行,cmd下直接使用,spid就是第二条中查出来的spid。
另外,unix下的,没实际使用,原例子是这么写的 kill -9 12345(12345是spid,前面-9个人估计是数据库的sid吧。。。)