Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renato_2009

[Resolvido] ORA-00054: resource busy and acquire with NOWAIT spec

Recommended Posts

Olá

Bom Dia Galera..!! B)

 

Estou com um problema e não sei como resolver.

Se alguém já passou por isso e puder ajudar. :joia:

 

Estou tentando deletar ou dropar uma tabela no oracle, porém ele não deixa e me retorna a seguinte mensagem:

 

 

ORA-00054: resource busy and acquire with NOWAIT specified

 

Parece que a tabela esta locada no Banco de Dados e não consigo realizar o processo acima. :huh:

 

Outra coisa, tem uma procedure que é executada que insere dados nesta tabela e também não consigo dropar. :(

 

 

Já procurei na net, mas tive muitas dúvidas com relação a esse assunto.

Qual o procedimento que tenho que tomar para dropar a tabela e a procedure e criar novamente? :clap:

 

Muito Obrigado..!! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguma tabela ficou locada.

 

Esta query retorna alguma coisa ?

 

 

select substr(o.object_name,1,25) 	objeto,
      l.session_id 			session_id,
      l.oracle_username		ora_user,
      l.os_user_name			os_user
from   dba_objects o, v$locked_object l
where  l.object_id = o.object_id
order by 1,3,4

 

Não dando solução tente um shutdown/startup

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta..!!

Tudo Bem?

 

Apareceu 4 registros conforme abaixo.

 

 

1 PCWMSPEDI 952 EMPRESA oracle

2 SH_TMP_AUX7 936 EMPRESA oracle

3 SH_TMP_AUX7 912 EMPRESA oracle

4 SH_TMP_AUX7 962 EMPRESA oracle

 

Olá Motta..!! :)

 

 

Só para concluir..!!

Após encontrar os registros locados, como eu faço para excluí-los. :joia:

 

Muito Obrigado..!! :D

 

Renato :clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro precisa dealocar, uma saída pode ser matar a session que está fazendo a bagaça.

 

Use um Gerenciador Enterprise Manager / Sql Developer para fazer isto é mais fácil.

Se não tiver nenhum programa assim tente isto.

 

Se o problema voltar a se repetir talvez a aplicação tenha de ser revista, pois não é normal este tipo de lock.

 

Se nada mais funcionar Shutdown/Startup.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta..!! :D

 

Peguei esta dica em outro forum e resolveu..!! :joia:

 

Pega o spid e mata a sessão a nivel de S.O.

 

Select p.spid, p.addr, s.sid, s.serial#, s.username, s.osuser, s.status, s.server, s.logon_time, s.sql_hash_value, TO_CHAR (s.last_call_et / 3600, '009.99') inatividade, s.machine, s.program, p.pga_used_mem, p.pga_alloc_mem, p.pga_freeable_mem, pga_max_mem, sql.sql_text

From v$session s, v$process p, v$sql sql

Where s.username is not null

And s.paddr = p.addr (+)

And s.sql_address = sql.address

-- and s.sid = 1082

Order by s.last_call_et desc;

 

 

Se for linux já gera o comando:

 

Select 'kill -9 '|| p.spid, || ' dados:' || p.addr ,s.status,osuser

From v$session s, v$process p

Where s.username is not null

And s.paddr = p.addr (+)

and s.status in ('KILLED')

and s.osuser not in ('oracle')

Order by s.last_call_et desc;

 

um abraço..!! :clap:

 

Renato :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.