Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: lelo
Por iucas
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Erro de Lock - ORA-01591
Linux user
Publicado por Márcio de Souza Almeida em 31/07/2007

Login: marcio68almeida, 26578 pontos
[ Hits: 5892 ]

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
   Dica Linux recomendada Recuperando a senha SYS do Oracle
   Dica Linux recomendada Instalando um servidor Oracle (AsianUX 1.0)
   Dica Linux recomendada Startup e shutdown automático do Oracle 9i e 10g no Linux, rápido e prático
   Dica Linux recomendada Instalando Oracle 10g xE no Ubuntu
   Dica Linux recomendada Oracle: quando usar índices B*Tree e Bitmap

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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.