Considerando a declaração do Oracle ALTER SYSTEM KILL SESSION ...
como... até certo ponto comparável à declaração do PostgreSQL SELECT pg_terminate_backend()
:
Você conhece alguma analogia do Oracle (melhor que ALTER SYSTEM KILL SESSION
) para o PostgreSQL SELECT pg_cancel_backend()
?
Referência: 9.26. Funções de administração do sistema (Documentação do PostgreSQL)
pg_terminate_backend
Encerrar um back-end. Você pode executar isso em outro back-end que tenha exatamente a mesma função do usuário que está chamando a função. Em todos os outros casos, você deve ser um superusuário.
pg_cancel_backend
Cancelar a consulta atual de um back-end . Você pode executar isso em outro back-end que tenha exatamente a mesma função do usuário que está chamando a função. Em todos os outros casos, você deve ser um superusuário.
Versões abaixo de 18c:
DBMS_RESOURCE_MANAGER
Procedimento SWITCH_CONSUMER_GROUP_FOR_SESS
A partir de 18c:
ALTERAR SISTEMA
Exemplo:
Dependendo da versão do Oracle que você está usando, a resposta é:
Oracle 12c ou anterior
Estou corrigido: De acordo com a resposta de Balazs Papp, existe uma maneira de cancelar uma consulta em execução no Oracle por meio do pacote DBMS_RESOURCE_MANAGER .
Oracle 18c ou mais recente
Sim , existe um equivalente do
pg_cancel_backend()
comando no Oracle 18c .É o comando:
Isso está documentado no artigo Novos recursos do Oracle Database Release 18c da seguinte forma:
...e o recurso também está documentado no Guia do Administrador na seção 5.10.5 Cancelando uma Instrução SQL em uma Sessão da seguinte forma:
Não consegui https://dba.stackexchange.com/a/206907/48347 funcionando.
No entanto, rastreando o erro que ...
... (proposto em https://dba.stackexchange.com/a/206907/48347 ) estava rendendo na minha milhagem, cheguei aqui vinculado daqui e com a ajuda disso finalmente consegui um pipeline de comandos funcionando para o meu caso.