oracle中,要刪除乙個使用者,必須保證該使用者的所有連線都已斷開,才能進行刪除。
所以在用sql指令碼刪除使用者時,就必須先保證該使用者的所有session都已被清除掉,請看下面的指令碼
create or replace procedure dropuser(user_name in varchar2) authid current_user is
cnt integer;
sqlstr varchar2(1000);
begin
sqlstr := 'alter user ' || user_name || ' account lock';
execute immediate sqlstr;
for x in (select * from v$session where username=user_name)
loop
--清除使用者session
sqlstr := 'alter system disconnect session ''' || x.sid || ',' || x.serial# || ''' immediate';
begin
execute immediate sqlstr;
exception when others then
null;
end;
end loop;
loop
select count(*) into cnt from v$session where username=user_name;
exit when cnt=0;
dbms_lock.sleep(3);
end loop;
sqlstr := 'drop user' || user_name || 'cascade';
end dropuser;
/exec dropuser('user1');
尋找正在連線中的網路連線
尋找正在連線中的網路連線,並開啟網路連線的網路連線共享功能。注意 要設定為管理員許可權啟動工程。否則enablesharing會失敗。include include include include pragma comment lib,iphlpapi.lib pragma comment lib,...
尋找正在連線中的網路連線
尋找正在連線中的網路連線,並開啟網路連線的網路連線共享功能。注意 要設定為管理員許可權啟動project。否則enablesharing會失敗。include include include include pragma comment lib,iphlpapi.lib pragma comment...
Oracle刪除當前連線使用者
當你使用pl sql developer刪除使用者時,經常會出現這樣的提示 無法刪除當前連線的使用者 解決方法我直接貼出sql語句 刪除當前連線使用者 1 首先切換到 system 使用者 2 查詢使用者各程序相對應的 sid serial 注意 這裡的 username 必須大寫 select s...