Evento – Oracle para todos em 9/9/2018

Bom dia a todos,
nosso evento do mês de Agosto/Setembro será na Escola Estadual José Ermírio de Morais e os dados estão logo abaixo:

Tema: Instalação do Oracle 18C – Passo a Passo
Local: Escola Estadual José Ermírio de Morais
Data: 10/09/2018
Horário: 16:00 – Sala: 05
Palestrante: Leonardo Pedroso Costa

Espero vocês lá!

SQL Saturday – Brasília 2018

Utilizando o pacote DBMS_APPLICATION_INFO para inserir informações na V$SESSION

Um recurso pouco utilizado, porém muito útil no Oracle Database é setar informações da aplicação nas views de sistema V$SESSION / GV$SESSION. É comum alguma consulta estar impactando o ambiente e as informações contidas nas views de sistema e as informações não serem tão precisas a ponto de ir direto no problema. É possível, por exemplo, colocar o nome da aplicação ou da etapa do processo em que está sendo executado, e com isso você saberia se o processo que está impactando é o início ou o fim do processo.

Mãos á obra ..

Abra uma query no Oracle e execute a query abaixo. Nesse caso, eu estou informando que minha aplicação é o controle de estoque e que o procedimento que está sendo executado é a baixa de produtos devolvidos:


exec dbms_application_info.set_module(module_name => 'Controle de Estoque',action_name => 'Baixa dos produtos devolvidos');

PL/SQL procedure successfully completed.

Após execução do pacote acima, a query na v$session será populada com os dados:


select osuser, module, action from v$session where action is not null

noraldino <strong>Controle de Estoque Baixa dos produtos devolvidos</strong>


As informações contidas no pacote podem ser customizadas de acordo com sua necessidade. É recomendado que esse procedimento seja repassado ao time de desenvolvimento para que seja incluído esse pacote antes das execuções de procedimentos, pois na hora do troubleshooting essas informações podem ser muito úteis e poupar muito tempo dos envolvidos.

Enjoy !

Solucionando o erro ERROR at line 1: ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

Esse erro comum ocorre quando você tenta executar uma operação em uma tabela que foi alterada e a transação ainda está pendente. No nosso caso, estávamos tentando truncar uma tabela de B.I. e o erro era retornado instantaneamente: ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired !

O select abaixo ajudou a identificar a causa raiz, ele lista quais sessões estão aguardando commit ou roolback. No meu caso foi uma transação aberta há mais de 30 dias e, alinhando com a área, matamos a sessão:

SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, P.SPID, S.PROGRAM,S.USERNAME,
S.MACHINE,S.PORT , S.LOGON_TIME,SQ.SQL_FULLTEXT 
FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S, 
V$PROCESS P, V$SQL SQ 
WHERE L.OBJECT_ID = O.OBJECT_ID 
AND L.SESSION_ID = S.SID AND S.PADDR = P.ADDR 
AND S.SQL_ADDRESS = SQ.ADDRESS;

Dica: Em ambiente Oracle RAC troque o V$ por GV$ !

Faça bom uso do script.

Carregar mais

× Como posso te ajudar?