Erro de Lock - ORA-01591

Publicado por Márcio de Souza Almeida em 31/07/2007

[ Hits: 20.157 ]

 


Erro de Lock - ORA-01591



Hoje tive um problema que resolvi compartilhar a solução que, embora simples, pode causar certo transtorno se não encontrada rapidamente.

Este erro é causado devido a uma transação distribuída onde houve queda de conexão ou qualquer outro processo que interrompa a transação e bloqueie a tabela.

Quando você vai efetuar uma consulta com agrupamento:

SQL> Select count(1), controle From tabela;
select count(1), controle from tabela
*
ERRO na linha 1:
ORA-01591: lock held by in-doubt distributed transaction 22.11.41636

Na página de erros da Oracle você encontra o seguinte:
ORA-01591: lock held by in-doubt distributed transaction string
Cause: Trying to access resource that is locked by a dead two-phase commit transaction that is in prepared state.
Action: DBA should query the pending_trans$ and related tables, and attempt to repair network connection(s) to coordinator and commit point. If timely repair is not possible, DBA should contact DBA at commit point if known or end user for correct outcome, or use heuristic default if given to issue a heuristic commit or abort command to finalize the local portion of the distributed transaction.

Não diz muita coisa, já que o processo já se foi...

Para conseguir o número do processo:

SQL> Select * From sys.pending_trans$ Order by local_tran_id ;

Aqui vão aparecer todos os processos pendentes. Na coluna STATE vai aparecer o processo como pending.

SQL> rollback force '22.11.41636';

Irá encerrar com rollback e liberar a tabela. O número 22.11.41636 foi obtido da coluna LOCAL_TRAN_ID.

SQL> Select count(1), controle From tabela;
  COUNT(1) C
---------- -
      1210 1
     21615
Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Descobrir se uma determinada tabela, sinonimo ou usuário existe no Oracle

Relatório de objetos inválidos no SGDB Oracle

Instalando um servidor Oracle (AsianUX 1.0)

Oracle 11g - erro: An unexpected error has been detected by HotSpot Virtual Machine

Oracle - Criar usuário com privilégio de DBA

  

Comentários
[1] Comentário enviado por rbrino em 28/07/2011 - 10:53h

Pessoal,
Existe um site http://www.ora-code.com.br/ muito bom para consultar os códigos de erro do Oracle 11g.
Abs



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts