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:
Postar um comentário