El Matador…

Serial Killer virou brinquedo.Olá DBA! Bom dia! Boa Tarde! Boa Noite!!!
Antes de mais nada gostaria de me desculpar. Sei que estou em grande débito com vocês, quebrei a constância (letra minúscula tá?!?! Portanto não é que eu matei alguém com nome de Constância não. hahaha).
Estou deixando muito a desejar, eu sei disso. Faço aqui uma “mea culpa” (acho este termo bonito.kkk) e admito que os últimos dias realmente foram muito corridos e acabei negligenciando aqui o blog.
Para aqueles que me conhecem pessoalmente já sabem, estou envolvido em um projeto grande em SC atuando como DBA e como AD e isso tem consumido bastante. Afinal de contas Administrador de Dados envolve conhecimento da regra de negócios além de banco de dados. Mas sem dúvida é um desafio muito interessante.

Porém hoje estou de volta com um assunto interessante. E pretendo retomar os posts como antes. Ou, melhor que antes.
Portando aproveite que o assunto de hoje está para bandoleiro nenhum botar defeito.

EL MATADOR…
Não! Nem adianta pensar que estou incitando atentado terrorista, destruição coisa do gênero, até pelo contrário, aqui comento como derrubar sessões que estejam causando problemas. Então poderíamos modificar facilmente o título para EL SALVADOR e assim acho que não corro o risco de acordar com a Polícia Federal na minha porta. hehehehe.

Vamos lá!
Sabe aquela situação, em que temos uma busca frenética por dados em uma determinada tabela no banco e esta busca é tão grande que começa a causar lentidões indesejadas?
Pois é, muitas vezes o dano é muito grande ao sistema como um todo e precisamos rapidamente derrubar estas sessões. E não tem forma mais rápida de fazer isso que matar no próprio sistema operacional. O famoso comando kill. Caramba dá até nome de filme né? O COMANDO KILL… Vou passar esta idéia para o Silvester… É ele mesmo aquele que STALONGE.

Hehehe “tontices” a parte vamos à solução.
O comando kill é executado a nível de sistema operacional, e é isso que o faz muito mais rápido. Para derrubar uma conexão com ele precisaremos apenas ter o SPID do processo.
Este código é a identidade única de cada conexão no banco de dados, sendo assim não terá risco de derrubada  de sessão inadvertidamente. Apenas lembrando que um kill em um processo de background poderá ocasionar a derrubada da instância de banco de dados. Portanto todo cuidado.

Porém com este script não teremos problemas. Ele irá detectar todos os SPIDs que estão utilizando um determinado objeto.

Para utilizar em ambiente RAC (adaptação simples para ambiente single que não tem inst_id)

select /*+ rule */  ‘kill -9 ‘ || p.spid, s.inst_id, s.username from gv$process p, gv$session s
where s.inst_id = p.inst_id
and s.paddr = p.addr
AND S.SID IN (select /*+ rule */ a.SID from gv$access a, gv$session s
where object = ‘NOME_TABELA
and s.inst_id = a.inst_id
and s.sid = a.sid);

Para utilização dele é muito simples. Ele gerará o script de kill que deverá ser copiado e rodado no sistema operacional.

Ahhh!! Ele só serve para ambiente base UNIX, ou seja, NÃO serve para WINDOWS.

Bem meu amigo! Era isso que tinha pra hoje. Espero que tenha curtido, e mais uma vez me desculpe pela ausência, mas Vida de DBA não é fácil.

Sobre raul andrade

DBA e Instrutor Oracle, apaixonado pela minha família e por ensinar.
Esta entrada foi publicada em DBA Oracle, Scripts. Adicione o link permanente aos seus favoritos.

Deixe uma resposta