一 問題描述
想給某個普通用戶授予殺掉自己會話的權限
二 解決辦法
2.1 用sys用戶創建殺會話的存儲過程
create or replace procedure scott_p_kill_session( v_sid number, v_serial number )asv_varchar2 varchar2(100);beginif v_sid is not null and v_serial is not null thenfor c in (select /*+ rule */s.username, s.inst_id, s.sid, s.serial#from gv$session swheres.sid = v_sidand s.serial# = v_serialand s.username='SCOTT') loopdbms_output.put_line('alter system kill session ''' || c.sid || ',' ||c.serial# || ',@' || c.inst_id ||''' immediate');execute immediate 'alter system kill session ''' || c.sid || ',' ||c.serial# || ',@' || c.inst_id || ''' immediate';??end loop;elseraise_application_error(-30000,'Wrong number or types of arguments in call to ''kill_block_session''.');end if;???end;
2.2 給該普通用戶授權調用剛創建的存儲過程
grant execute on scott_p_kill_session to scott;
2.3 殺會話示例
--用普通用戶登錄該會話所在數據庫節點殺會話
--語法
exec sys.scott_p_kill_session(會話號,序列號);
--示例
exec sys.scott_p_kill_session(46,51);
--本篇文章參考自
oracle-權限-授予普通用戶kill session權限-阿里云開發者社區
并做了些許改動。