Páginas

sexta-feira, 15 de julho de 2011

ADRCI - Purga de arquivos trace e dump

A partir do Oracle 11g, temos a introdução de uma nova estrutura de logs: ADRCI (Doc Oracle). Além da nova estrutura de diretórios, o ADRCI apresenta várias funcionalidades interessantes. Uma muito útil é a remoção automática de arquivos trace e dump, que é feita pelo MMON.
Dois parâmetros do ADRCI são responsáveis por isso:


LONGP_POLICY:  default de 365 dias (8760 horas) e se refere a coisas como Incidentes e Health Monitor warnings
SHORTP_POLICY: default de 30 dias (720 horas) e se refere a traces e core dump files.

Os parâmetros (representados em horas) pode ser exibidos a partir do comando SHOW CONTROL e alterados a usando SET CONTROL:

set control (SHORTP_POLICY =360)
set control (LONGP_POLICY =2160)


Além da purga automática, podemos purgar manualmente através do comando purge (mais info: help purge):

purge -age 24 -type ALERT


Referência: http://gavinsoorma.com/2010/09/purging-trace-and-dump-files-with-11g-adrci/

terça-feira, 5 de julho de 2011

Oracle Kill Session

Um método alternativo ao famoso "ALTER SYSTEM KILL SESSION" é o uso do commando Disconnect, que é praticamente o equivalente a matar o processo diretamente no sistema operacional. A sintaxe é igual ao "kill" tradicional, adicionando a cláusula POST_TRANSACTIONAL (aguarda o término da transação) ou IMMEDIATE ao final.

SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' POST_TRANSACTION;
SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;

Se mesmo assim a sessão ficar presa, é necessário matá-la a nível de sistema operacioanal. Para encontrar o número do processo, precisamos da v$process. Como geralmente as informações que temos é sobre a sessão, precisamos fazer um join entre a v$session e a v$process. No exemplo abaixo, procuramos todos os processos das sessões do USUARIO.

select 'kill -9 '||spid from v$session s,v$process p where s.paddr=p.addr and s.username='USUARIO';