0

我已经做了程序

create or replace PROCEDURE KILLSESSION AS 
BEGIN
for rec in (SELECT sid,serial# 
  FROM v$session 
 WHERE status = 'ACTIVE' 
   AND username ='NCMAIN' 
   AND sql_id ='bzq9gwv2qazpq' ) loop

execute immediate 'Alter System Kill Session '''|| rec.Sid || ',' || rec.Serial# || ''' IMMEDIATE';

 end loop;
END KILLSESSION

我收到表或视图不存在且使用循环变量rec 无效的错误。我在 DBA 模式中创建了过程。

4

1 回答 1

0

您需要对 V$SESSION 的 SELECT 权限。您需要这些直接(不是通过角色授予的)。

要检查您是否拥有必要的权限,您可以在 SQL/Plus 中使用“set role none”命令:

SQL> select count(*) from v$session;
23
SQL> set role none;
Role set
SQL select count(*) from v$session;
ORA-00942 table or view does not exist

要修复它,请运行

   GRANT SELECT ON v$session TO <my_dba_user>

作为 SYS

于 2013-10-21T10:28:10.250 回答