开发A在测试环境操作时有时会遇到阻塞问题,需要找DBA帮忙查看阻塞会话及kill session,后来觉得太麻烦想要个kill会话的权限,查了下Oracle授予普通用户kill session权限的方法。
1. 授予alter system权限
官方文档查到,kill session需要ALTER SYSTEM权限,但是这个权限非常大,不能直接给
GRANT ALTER SYSTEM TO <username>;
2. 创建存储过程
后来查到了可以自己创建存储过程实现,还能加各种限制条件,例如写入日志,记录是谁在什么时候发起的、kill了谁,视需要而定。简单的实现方法如下:
-- sys执行
create or replace procedure kill_session
( v_sid number, v_serial number )
as
v_varchar2 varchar2(100);
begin
execute immediate 'ALTER SYSTEM KILL SESSION '''
|| v_sid || ',' || v_serial || '''';
end;
/
-- 授权:
grant execute on kill_session to username;
-- 普通用户使用:
exec sys.kill_session(161,14502);
标签:--,SYSTEM,session,kill,Oracle,权限,ALTER
From: https://blog.51cto.com/u_13631369/6202539