我想创建会杀死所有会话的过程。运行语句后,我收到错误:
[警告] ORA-24344:编译错误成功10/13 PL / SQL: ORA-00942:表或视图不存在6/6 PL / SQL:SQL语句 忽略15/31 PLS-00364:循环索引变量' V_KILL'使用无效 15/9 PL / SQL:忽略语句(1:0):警告:已编译但有 编译错误
CREATE OR REPLACE PROCEDURE KILL_ORACLE_SESSIONS
IS
BEGIN
FOR v_kill IN
(SELECT
'alter system kill session '''
||sid||','||serial#||',@1'|| ''' immediate;' as statement
FROM
v$session
WHERE
sql_id='sql_id_here'
)
LOOP
dbms_output.put_line (v_kill.statement);
END LOOP;
END;
/
渔获物在哪里? 感谢
答案 0 :(得分:2)
您很可能无权选择查看v$session
,因为您的用户已通过ROLE获得此权限。必须直接向用户授予PL / SQL块内的权限(即GRANT SELECT ON V$SESSION TO {username};
)。角色(例如DBA
ROLE)不适用于PL / SQL。