用系统管理员,查看当前数据库有几个用户连接:
SQL> select username,sid,serial# from v$session;
如果要停某个连接用
SQL> alter system kill session 'sid,serial#';
如果这命令不行,找它UNIX的进程数
SQL> select pro.spid from v$session ses,v$process pro where ses.sid=
&sid and ses.paddr=pro.addr;
然后用 kill 命令杀此进程号。
-------------------------------------------------------------------------------------
如何查看unix下某个oracle OS的进程在做什么操作
2004-12 余枫
今天一个网管问我,为什么unix下一个oracle OS的进程消耗了那么多的CPU?
登录上服务器,果然发现了那个进程,是一个用户连接oracle的进程.
根据OS进程号(我这里用的直连方式),应该可以查到它正在执行什么SQL语句.
-- 查到oracle OS进程的sid编号:
select ses.sid from v$session ses,v$process pro where pro.spid=&spid and ses.paddr=pro.addr;
-- 查到此sid连接用户正在执行的SQL语句:
select sql_text from v$sqltext_with_newlines where (hash_value,address)
in (select sql_hash_value,sql_address from v$session where sid=&sid) order by address,piece;
原来是一个条件复杂的分组统计的SQL