【问题标题】:Oracle kill sessions procedureOracle 终止会话过程
【发布时间】: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};

标签: oracle plsql


【解决方案1】:

很可能您没有选择查看v$session 的权限,因为您的用户通过角色获得了此权限。 PL/SQL 块内的权限必须直接授予用户(即GRANT SELECT ON V$SESSION TO {username};)。角色(例如 DBAROLE)不适用于 PL/SQL。

【讨论】:

  • GRANT SELECT ON V_$SESSION TO {username}; 如所述here
猜你喜欢
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多