Oracle如何删除已连接用户

来源:互联网 发布:echo linux命令 编辑:程序博客网 时间:2024/06/06 01:04

思路

  1. 杀掉所有当前用户已连接的session
  2. 使用drop user 命令删除用户

【注】由于已连接的session杀掉后,客户端会迅速重连,上面两步在同一个代码段中执行

实现

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   -- 将要删除的用户名[大写]   u_name:= 'PE';   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;   EXECUTE IMMEDIATE 'drop user ' || u_name || ' cascade';END;

EOF