Oracle杀死会话程序

时间:2018-05-24 10:47:17

标签: oracle plsql

我想创建会杀死所有会话的过程。运行语句后,我收到错误:

  

[警告] 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;
    /

渔获物在哪里? 感谢

1 个答案:

答案 0 :(得分:2)

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