ORA-04021: timeout occurred while waiting to lock object (timeout ao aguardar o lock de um objeto)
OracleO que significa?
Ocorreu um timeout ao aguardar a obtenção de um library cache lock/pin em um objeto (package, procedure, type etc.). Geralmente ocorre ao tentar compilar ou alterar um objeto PL/SQL enquanto ele está sendo executado ou bloqueado por outra sessão.
Por que acontece?
O objeto a ser alterado/compilado está em execução ativa em outra sessão ou está bloqueado por outro DDL, por isso o library cache lock exclusivo não pode ser obtido. Uma chamada de procedure de longa duração ou uma sessão travada pode estar mantendo o lock.
Como resolver
Encontre a sessão que bloqueia o objeto: SELECT * FROM dba_kgllock WHERE kgllkhdl IN (SELECT p1raw FROM v$session WHERE event LIKE 'library cache%'); ou identifique a sessão que usa o objeto com v$access e v$session. Repita o DDL/a compilação em uma janela de manutenção com pouca carga. Se necessário, encerre a sessão com segurança. Parar a aplicação brevemente facilita a obtenção do lock.
Mais entradas deste banco
- ORA-29913error in executing ODCIEXTTABLEOPEN callout (erro ao executar o callout ODCIEXTTABLEOPEN)
- ORA-19804cannot reclaim N bytes disk space from M bytes limit (não é possível recuperar N bytes de espaço em disco do limite de M bytes)
- ORA-00494enqueue held for too long by 'inst N, osid M' (enqueue mantido por tempo demais)
- ORA-04061existing state of package/procedure has been invalidated (o estado existente do package/procedure foi invalidado)
- ORA-01466unable to read data - table definition has changed (não é possível ler os dados; a definição da tabela mudou)
- ORA-08176consistent read failure; rollback data not available (falha de leitura consistente; dados de rollback indisponíveis)
- ORA-00020maximum number of processes (N) exceeded (número máximo de processos (N) excedido)