代码之家  ›  专栏  ›  技术社区  ›  civesuas_sine

Oracle终止会话过程

  •  0
  • civesuas_sine  · 技术社区  · 7 年前

    我想创建一个过程,它将杀死所有会话。在运行语句后,我得到错误:

    [警告]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 回复  |  直到 7 年前
        1
  •  2
  •   Wernfried Domscheit    7 年前

    很可能您没有选择视图的权限 v$session 因为您的用户收到了某个角色的此权限。pl/sql块内的特权必须直接授予用户(即 GRANT SELECT ON V$SESSION TO {username}; )角色(例如 DBA 角色)不在pl/sql内部应用。