Процедура уничтожения сессий Oracle - PullRequest
0 голосов
/ 24 мая 2018

Я хочу создать процедуру, которая убьет всю сессию.После выполнения инструкции я получаю сообщение об ошибке:

[Предупреждение] 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 голосов
/ 24 мая 2018

Скорее всего, у вас нет прав для выбора вида v$session, потому что ваш пользователь получил эту привилегию с помощью роли.Привилегии внутри блока PL / SQL должны предоставляться непосредственно пользователю (т. Е. GRANT SELECT ON V$SESSION TO {username};).Роль (например, DBA ROLE) не применяется внутри PL / SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...