On Wed, Sep 17, 2014 at 9:19 AM, Eurides Baptistella <
[email protected]> wrote:
> Pessoal, estou com uma tabela que aparentemente está com um Lock mas
> não consigo encontrar quem fez isso.
> Em virtude do lock a tabela está indisponível, não responde mais a
> selects, inserts, deletes ou updates.
>
>
O que quer dizer com "não responde"? Um erro? Fica travado?
Para saber se está travado, faça uma consulta na visão pg_stat_activity e
verifique se a coluna waiting está como true.
> O que posso fazer para voltar essa tabela?
>
Se alguma transação realmente está bloqueando, deve finalizá-la.
> Como identificar que transação travou ela (isso se foi uma transação)?
>
Você pode usar a visão pg_locks. Uma forma simples e rápida de ver quem
está com locks abertos na tabela seria (conecte-se no banco onde está a
tabela primeiro):
SELECT * FROM pg_locks
WHERE relation = 'nome_da_tabela'::regclass WHERE granted;
É possível ver o que estes estão executando, cruzando isso com a
pg_stat_activity:
SELECT * FROM pg_stat_activity
WHERE pid IN (
SELECT pid FROM pg_locks
WHERE relation = 'nome_da_tabela'::regclass WHERE granted
);
Em seguida você pode usar a pg_cancel_backend ou pg_terminate_backend se
quiser finalizá-las.
> Aproveito para perguntar qual o nível de isolamento vocês costumam
> utilizar?
>
O que acha de iniciar outra discussão para isso?
Atenciosamente,
--
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral