Para melhor visualização, recomendo resolução de no mínimo 1280 x 800 e navegador Mozilla Firefox


terça-feira, 2 de julho de 2019

Oracle - ALTER SYSTEM CANCEL SQL no Oracle 12 R2 (18c)

Por Eduardo Legatti

Olá,

A partir do Oracle 12c R2 (18c) temos a opção de abortar a execução de uma instrução SQL em andamento de uma sessão. Nas versões anteriores tínhamos apenas a opção de de matar a sessão (ALTER SYSTEM KILL SESSION). Segue abaixo um exemplo.

A sessão mais abaixo teve sua instrução em andamento interrompida após a execução do comando a seguir. Pode-se observar que a sessão continua conectada mesmo após a execução do comando ALTER SYSTEM CANCEL SQL.

C:\>sqlplus system/manager@linuxserver:1521/ORCLPDB1

SQL> ALTER SYSTEM CANCEL SQL '52, 43281';

Sistema alterado.

C:\>sqlplus scott/tiger@linuxserver/ORCLPDB1

Conectado a:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

SQL> select sid,serial# from v$session where sid in (select distinct sid from v$mystat);

                 SID              SERIAL#
-------------------- --------------------
                  52                43281

SQL> select count(*) from t1;
select count(*) from t1
                     *
ERRO na linha 1:
ORA-01013: o usuário solicitou o cancelamento da operação atual

SQL> select sysdate from dual;

SYSDATE
----------
02/07/2019

Caso queiramos realmente matar a sessão devemos proceder com o comando a seguir.


C:\>sqlplus system/manager@linuxserver:1521/ORCLPDB1

SQL> ALTER SYSTEM KILL SESSION '52, 43281';

Sistema alterado.

C:\>sqlplus scott/tiger@linuxserver/ORCLPDB1

Conectado a:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

SQL> select sid,serial# from v$session where sid in (select distinct sid from v$mystat);

                 SID              SERIAL#
-------------------- --------------------
                  52                43281

SQL> select count(*) from t1;
select count(*) from t1
*
ERRO na linha 1:
ORA-00028: a sessão foi cancelada

O comando ALTER SYSTEM CANCEL SQL pode receber outros parâmetros. Segue um resumo.

-- Instrução SQL corrente da sessão
ALTER SYSTEM CANCEL SQL '52, 43281';

-- Instrução SQL corrente da sessão em um ambiente RAC no node 1
ALTER SYSTEM CANCEL SQL '52, 43281, @1';

-- SQL_ID específico de uma sessão
ALTER SYSTEM CANCEL SQL '52, 43281, 12czs5bwerdfg';

-- SQL_ID específico de uma sessão em um ambiente RAC no node 1
ALTER SYSTEM CANCEL SQL '52, 43281, @1, 12czs5bwerdfg';



Nenhum comentário:

Postagens populares