On 09-07-2012 17:34, Aldrey Galindo wrote: > Flavio, > > O que ocorreu é que a Aplicação por algum motivo prendeu a transação. > Eu tentei apagar a tabela que estava *travada*, mais ele não alertou > sobre nada. Já quando tentei renomear o banco foi que obtive a mensagem > que ajudou na solução.
Uma trava (lock) faz tudo isso que você passou. Em transações preparadas essas travas são bastante silenciosas. Já passei por dificuldades por causa delas uma vez. Aprendi muito naquele momento. E eu não tinha a opção que você teve de copiar o banco pra outro lugar. Tive de achar a trava e removê-la. > Me pergunto, se eu tentasse realizar alguma mudança em uma tabela > envolvida em um *prepared*, não seria o caso do Banco informar que a > mesma está *ocupada*? A trava (lock) é parte do funcionamento normal de um banco ACID, caso do PostgreSQL. Travas em transações preparadas são inclusive parte do funcionamento avançado do PostgreSQL, que aceita trabalhar em 2PC desde várias versões atrás. O detector de deadlocks é capaz de fazer isso com transações concorrentes, emitindo para o usuário e no log aquela mensagem "Processo A aguardando liberação de trava na relação B..." mas ele não faz isso para preparadas (ou se faz nunca vi). Você poderia sugerir isso na lista hackers e ver se alguém topa implementar (ou você mesmo ajuda a implementar). Eu só pesquisaria antes pra ver se a discussão já não existe e já não deram motivos para não implementação ou se já não está prevista implementação em versão futura. []s Flavio Henrique A. Gurgel Consultor e Instrutor 4Linux Tel: +55-11-2125-4747 www.4linux.com.br _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral