Oracle删除正在连接用户

方式一

-- 1、首先切换到 SYS 用户

-- 2、查询用户各进程相对应的 sid、serial#。注意:这里的 username 必须大写

SELECT sid,serial#,username FROM v$session WHERE username = 'POWER';

-- 下面是查询结果

SID SERIAL# USERNAME
---------- ---------- ------------------------------
120 61422 POWER
131 62682 POWER
133 45409 POWER
148 38527 POWER
157 21137 POWER

-- 3、根据上面的查询结果,将用户占用的所有进程杀掉。注意: sid 与 serial# 是一一对应的

ALTER SYSTEM KILL SESSION '120, 61422';
ALTER SYSTEM KILL SESSION '131, 62682';
ALTER SYSTEM KILL SESSION '133, 45409';
ALTER SYSTEM KILL SESSION '148, 38527';
ALTER SYSTEM KILL SESSION '157, 21137';

-- 4、删除用户

DROP USER POWER CASCADE;


方式二


-- 1、PL/SQL 下执行以下语句,杀掉用户占用的所有进程
DECLARE
u_sid varchar2(50);
u_serialnumber varchar2(50);
u_name varchar2(50);
CURSOR c1 IS select trim(s.sid),trim(s.serial#)
from v$session s,v$process p
where s.paddr = p.addr and (s.username=u_name);
BEGIN
-- 替换用户名 POWER,必须大写
u_name:='POWER';
OPEN c1;
LOOP
FETCH c1 INTO u_sid,u_serialnumber;
EXIT WHEN c1%NOTFOUND;
EXECUTE IMMEDIATE 'alter system kill session '||''''||trim(u_sid)||','||trim(u_serialnumber)||'''';
END LOOP;
END;


-- 2、OK,现在可以删除用户了

DROP USER POWER CASCADE


-- 此外,可以用下面的语句查看所有用户的连接信息
select s.username,s.osuser,s.program,s.MACHINE, s.sid, s.serial#, p.spid,
'alter system kill session '||''''||trim(s.sid)||','||trim(s.serial#)||''';' as killSentence
from v$session s,v$process p
where s.paddr = p.addr and s.username is not null;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值