Oracle 终止会话过程
Posted
技术标签:
【中文标题】Oracle 终止会话过程【英文标题】:Oracle kill sessions procedure 【发布时间】:2018-05-24 10:47:17 【问题描述】:我想创建将终止所有会话的过程。运行语句后,我得到错误:
[警告] 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;
/
问题在哪里? 谢谢
【问题讨论】:
你没有v$session
的权限
只是我无法在 V$SESSION TO username 上执行 GRANT SELECT;相反,我确实将 V_$SQL 上的选择授予 username;
【参考方案1】:
很可能您没有选择查看v$session
的权限,因为您的用户通过角色获得了此权限。 PL/SQL 块内的权限必须直接授予用户(即GRANT SELECT ON V$SESSION TO username;
)。角色(例如 DBA
ROLE)不适用于 PL/SQL。
【讨论】:
GRANT SELECT ON V_$SESSION TO username;
如所述here以上是关于Oracle 终止会话过程的主要内容,如果未能解决你的问题,请参考以下文章