电子商务网站建设心得苏州首页排名关键词优化
一 问题描述
想给某个普通用户授予杀掉自己会话的权限
二 解决办法
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权限-阿里云开发者社区
并做了些许改动。