oracle怎样给某个普通用户授予杀自己用户会话的权限

一 问题描述

想给某个普通用户授予杀掉自己会话的权限

二 解决办法

2.1 用sys用户创建杀会话的存储过程

create or replace procedure scott_p_kill_session

( v_sid number, v_serial number )

as

v_varchar2 varchar2(100);

begin

if v_sid is not null and v_serial is not null then

    for c in (select /*+ rule */

               s.username, s.inst_id, s.sid, s.serial#

                from gv$session s

               where

                s.sid = v_sid

                 and s.serial# = v_serial

                 and s.username='SCOTT'

                 ) loop

      dbms_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;

  else

    raise_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权限-阿里云开发者社区

并做了些许改动。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值