Oracle11g 使用Sql ID的过程终止会话

Oracle11g 使用Sql ID的过程终止会话,oracle11g,oracle10g,Oracle11g,Oracle10g,我已经做了手术 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 '''||

我已经做了手术

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模式中创建了过程。

您需要在V$SESSION上具有选择权限。您需要这些直接(不是通过角色授予的)

要检查您是否具有必要的权限,可以使用SQL/Plus中的“设置角色无”命令:

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>
将v$session上的选择授予
作为SYS

的可能副本