[pgbr-geral] Registro tava e pronto

2013-04-12 Thread Marcelo da Silva
Pessoal, tem hora que um registro trava e quem diz que consigo fazer algo
nele
Eu não uso Lock em nada

As vezes por uma queda de rede, sei lá
Só sei que um tal registro tarava e não consigo deletar, update, só select

COmo destravar nessa situação ?

Eu estou tendo que reiniciar o postgres pra conseguir dar um update no
registro


Marcelo Silva
---
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Registro tava e pronto

2013-04-12 Thread Jean Pereira


On 04/12/2013 15:25, Marcelo da Silva wrote:
Pessoal, tem hora que um registro trava e quem diz que consigo fazer 
algo nele

Eu não uso Lock em nada


Bom, tens como detalhar um pouco melhor, fica mais fácil para te ajudar.


As vezes por uma queda de rede, sei lá
Só sei que um tal registro tarava e não consigo deletar, update, só select

COmo destravar nessa situação ?

Eu estou tendo que reiniciar o postgres pra conseguir dar um update no 
registro



Marcelo Silva
---


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Registro tava e pronto

2013-04-12 Thread JotaComm
Olá,


Em 12 de abril de 2013 15:25, Marcelo da Silva  escreveu:

> Pessoal, tem hora que um registro trava e quem diz que consigo fazer algo
> nele
> Eu não uso Lock em nada
>

O que você considera um registro travar? Você não consegue fazer nenhuma
operação de escrita com este registro?


> As vezes por uma queda de rede, sei lá
> Só sei que um tal registro tarava e não consigo deletar, update, só select
>

Você não esta com alguma transação concorrente aberta para este registro
que esta esperando um COMMIT ou ROLLBACK, ai quando você reinicia o banco,
automaticamente um ROLLBACK é executado e por isso você consegue manipular
o registro.

>
> COmo destravar nessa situação ?
>
> Eu estou tendo que reiniciar o postgres pra conseguir dar um update no
> registro
>
>
> Marcelo Silva
> ---
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>

Abraços
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Registro tava e pronto

2013-04-12 Thread Marcone
Em 12 de abril de 2013 15:25, Marcelo da Silva  escreveu:
> Pessoal, tem hora que um registro trava e quem diz que consigo fazer algo
> nele

Pouca informação...

> Eu não uso Lock em nada

Não usar locks não significa que um registro nunca será "lockado".

> As vezes por uma queda de rede, sei lá
> Só sei que um tal registro tarava e não consigo deletar, update, só select
>
> COmo destravar nessa situação ?
>
> Eu estou tendo que reiniciar o postgres pra conseguir dar um update no
> registro
>

Quando isso acontecer, verifique se existem alguma transação aberta na
view pg_stat_activity[1].

Geralmente, nesses casos, na coluna current_query aparece a indicação
"in transaction".

Possivelmente (com certeza) devido ao fato de uma aplicação ter
iniciado uma transação e não ter finalizado a mesma.

1 - http://www.postgresql.org/docs/9.2/static/monitoring-stats.html

--
Marcone Peres - DBA
http://www.linkedin.com/in/marconeperes
oraculogeo.blogspot.com
@marconeperes
(61) 8146-0028
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Registro tava e pronto

2013-04-12 Thread Marcelo da Silva
Veja a tela do PGAdmin

http://imagebin.org/253758

Quando ele trava eu só consigo parar a sessão pelo PGAdmin nesta tela aí,
mas se eu tentar alterar o registro seja pelo pgadmin ou pela minha
aplicação ele trava denovo, ou seja, tenho que mandar todo mundo sair do
sistema, reiniciar o postgres pra ele liberar o tal registro.
Tenho notado que isso ocorre quando dá uma queda de conexão, mas não
necessariamente trava um registro, mas quando trava é este transtorno.
Bem, as maquinas com cabo fisico é tranquilo, não dá problema pois não cai,
mas as com wireless sempre me causam isso.

Como liberar o tal registro pra não ter que parar todos, tem um esquema ?

Se desse pra eu fazer algo pela aplicação que travou o registro eu daria um
Rollback e beleza, mas ele chega a perder a conexão, aí já era.

To na luta pra achar uma solução amigável...


Marcelo Silva
---


Em 12 de abril de 2013 15:44, Marcone  escreveu:

> Em 12 de abril de 2013 15:25, Marcelo da Silva 
> escreveu:
> > Pessoal, tem hora que um registro trava e quem diz que consigo fazer algo
> > nele
>
> Pouca informação...
>
> > Eu não uso Lock em nada
>
> Não usar locks não significa que um registro nunca será "lockado".
>
> > As vezes por uma queda de rede, sei lá
> > Só sei que um tal registro tarava e não consigo deletar, update, só
> select
> >
> > COmo destravar nessa situação ?
> >
> > Eu estou tendo que reiniciar o postgres pra conseguir dar um update no
> > registro
> >
>
> Quando isso acontecer, verifique se existem alguma transação aberta na
> view pg_stat_activity[1].
>
> Geralmente, nesses casos, na coluna current_query aparece a indicação
> "in transaction".
>
> Possivelmente (com certeza) devido ao fato de uma aplicação ter
> iniciado uma transação e não ter finalizado a mesma.
>
> 1 - http://www.postgresql.org/docs/9.2/static/monitoring-stats.html
>
> --
> Marcone Peres - DBA
> http://www.linkedin.com/in/marconeperes
> oraculogeo.blogspot.com
> @marconeperes
> (61) 8146-0028
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Registro tava e pronto

2013-04-12 Thread Marcone
Em 12 de abril de 2013 15:58, Marcelo da Silva  escreveu:
> Veja a tela do PGAdmin
>
> http://imagebin.org/253758

A imagem tá chei de " in transaction"... cara isso só dá dor de
cabeça como essa que você tá tendo agora.

> Quando ele trava eu só consigo parar a sessão pelo PGAdmin nesta tela aí,
> mas se eu tentar alterar o registro seja pelo pgadmin ou pela minha
> aplicação ele trava denovo, ou seja, tenho que mandar todo mundo sair do
> sistema, reiniciar o postgres pra ele liberar o tal registro.

Se você tá com moral de mandar todo mundo sair do sistema no meio do
expediente para reiniciar o banco, é bom você canalizar isso para ser
feita uma alteração urgente nessa aplicação para ela começar a
terminar as transações (commit ou rollback)!!

> Tenho notado que isso ocorre quando dá uma queda de conexão, mas não
> necessariamente trava um registro, mas quando trava é este transtorno.
> Bem, as maquinas com cabo fisico é tranquilo, não dá problema pois não cai,
> mas as com wireless sempre me causam isso.
>
> Como liberar o tal registro pra não ter que parar todos, tem um esquema ?

Um solução sintomática e paliativa seria você terminar o processo do
postgres que está causando o lock com a função pg_terminate_backend[1]
- USE COM EXTREMA CAUTELA para não matar quem não tem culpa!

> Se desse pra eu fazer algo pela aplicação que travou o registro eu daria um
> Rollback e beleza, mas ele chega a perder a conexão, aí já era.
>
> To na luta pra achar uma solução amigável...
>
>
> Marcelo Silva
> ---



1 - http://www.postgresql.org/docs/9.2/static/functions-admin.html


--
Marcone Peres - DBA
http://www.linkedin.com/in/marconeperes
oraculogeo.blogspot.com
@marconeperes
(61) 8146-0028
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Registro tava e pronto

2013-04-12 Thread Marcelo da Silva
Com toda humildade possivel :)

Não vejo como, no meu caso que preciso de transações concorrentes (tempo
real), abrir e fechar as transações sem um malabarismo excepcional.
Por exemplo, meu cadastro de clientes se o usuário abre, não posso abrir
pegar X registros e fechar a transação, eu trabalho com componentes DBWare
(conexão direta com a tabela), eu tenho um controle manual por assim dizer,
quando um registro está em uso e outro tenta abri-lo o sistema não deixa...
funciona de boa.
 O Financeiro tem que ver uma venda que acabou de ser efetivada e dar o
aval, se não retorna ao vendedor e por ai vai... é bem dinâmico mesmo, é
atendimento ao público (balcão).
Esse meu problema não acontece toda hora, é bem exporádico, mas quando
acontece me dá esse transtorno.
Na minha aplicação enquanto um formulario está aberto tenho que manter a
transação aberta senão ele limpa as informações.

Quanto a terminar somente o processo do tal registro eu consigo fazer isso
pelo pgadmin mas ele trava o registro mesmo sem a conexão, isso que estou
achando estranho.

Eu pedi pra todos sairem, vi que não havia mais conexão, só a minha, então
tentei alterar o tal registro, mas não foi, ele só liberou depois que
restartei o postgres.

Só a título de comparação, quando usava o MySQL nesse mesmo conceito que
trabalho não ocorria isso, um colega disse aqui na lista que o modo do
MySQL trabalhar é diferente, é tipo um espelho, tanto é que posso alterar
uma tabela colocando ou inserindo novos campos que ele não grita. No
postgres já vi que isso não é possível, mas compreendo que são arquiteturas
diferentes.
Só preciso compreender melhor o postgres pra lidar com essas situações

A ajuda dos colegas aqui tem me ajudado muito, mais uma vez agradeço!


Marcelo Silva
---


Em 12 de abril de 2013 16:15, Marcone  escreveu:

> Em 12 de abril de 2013 15:58, Marcelo da Silva 
> escreveu:
> > Veja a tela do PGAdmin
> >
> > http://imagebin.org/253758
>
> A imagem tá chei de " in transaction"... cara isso só dá dor de
> cabeça como essa que você tá tendo agora.
>
> > Quando ele trava eu só consigo parar a sessão pelo PGAdmin nesta tela aí,
> > mas se eu tentar alterar o registro seja pelo pgadmin ou pela minha
> > aplicação ele trava denovo, ou seja, tenho que mandar todo mundo sair do
> > sistema, reiniciar o postgres pra ele liberar o tal registro.
>
> Se você tá com moral de mandar todo mundo sair do sistema no meio do
> expediente para reiniciar o banco, é bom você canalizar isso para ser
> feita uma alteração urgente nessa aplicação para ela começar a
> terminar as transações (commit ou rollback)!!
>
> > Tenho notado que isso ocorre quando dá uma queda de conexão, mas não
> > necessariamente trava um registro, mas quando trava é este transtorno.
> > Bem, as maquinas com cabo fisico é tranquilo, não dá problema pois não
> cai,
> > mas as com wireless sempre me causam isso.
> >
> > Como liberar o tal registro pra não ter que parar todos, tem um esquema ?
>
> Um solução sintomática e paliativa seria você terminar o processo do
> postgres que está causando o lock com a função pg_terminate_backend[1]
> - USE COM EXTREMA CAUTELA para não matar quem não tem culpa!
>
> > Se desse pra eu fazer algo pela aplicação que travou o registro eu daria
> um
> > Rollback e beleza, mas ele chega a perder a conexão, aí já era.
> >
> > To na luta pra achar uma solução amigável...
> >
> >
> > Marcelo Silva
> > ---
>
>
>
> 1 - http://www.postgresql.org/docs/9.2/static/functions-admin.html
>
>
> --
> Marcone Peres - DBA
> http://www.linkedin.com/in/marconeperes
> oraculogeo.blogspot.com
> @marconeperes
> (61) 8146-0028
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Registro tava e pronto

2013-04-12 Thread Flavio Henrique Araque Gurgel

Tome top post...


Em 12-04-2013 16:33, Marcelo da Silva escreveu:

Com toda humildade possivel :)

Não vejo como, no meu caso que preciso de transações concorrentes (tempo
real), abrir e fechar as transações sem um malabarismo excepcional.
Por exemplo, meu cadastro de clientes se o usuário abre, não posso abrir
pegar X registros e fechar a transação, eu trabalho com componentes
DBWare (conexão direta com a tabela), eu tenho um controle manual por
assim dizer, quando um registro está em uso e outro tenta abri-lo o
sistema não deixa... funciona de boa.
  O Financeiro tem que ver uma venda que acabou de ser efetivada e dar o
aval, se não retorna ao vendedor e por ai vai... é bem dinâmico mesmo, é
atendimento ao público (balcão).
Esse meu problema não acontece toda hora, é bem exporádico, mas quando
acontece me dá esse transtorno.
Na minha aplicação enquanto um formulario está aberto tenho que manter a
transação aberta senão ele limpa as informações.


Isso se chama lock pessimista.
É um conceito antigo, mas muita aplicação funciona assim até hoje, e 
posso até chutar que sua aplicação é Delphi.




Quanto a terminar somente o processo do tal registro eu consigo fazer
isso pelo pgadmin mas ele trava o registro mesmo sem a conexão, isso que
estou achando estranho.


Provavelmente o PostgreSQL não detectou a queda da conexão.
Você falou em Wireless, isso pode acontecer mesmo.


Eu pedi pra todos sairem, vi que não havia mais conexão, só a minha,
então tentei alterar o tal registro, mas não foi, ele só liberou depois
que restartei o postgres.

Só a título de comparação, quando usava o MySQL nesse mesmo conceito que
trabalho não ocorria isso, um colega disse aqui na lista que o modo do
MySQL trabalhar é diferente, é tipo um espelho, tanto é que posso
alterar uma tabela colocando ou inserindo novos campos que ele não
grita. No postgres já vi que isso não é possível, mas compreendo que são
arquiteturas diferentes.


Isso é possível sim.
E o MySQL com InnoDB também tem locks semelhantes.


Só preciso compreender melhor o postgres pra lidar com essas situações


Seu servidor de banco de dados é Linux.
Considere usar keep alives. Veja em [1].

Eu uso em alguns servidores:
tcp_keepalives_idle=60
tcp_keepalives_interval=30
tcp_keepalives_count=2

Isso faz com que conexões fechadas pela ponta remota (o que inclui 
problemas em rede, firewalls e nats malucos) serem detectadas pelo 
servidor PostgreSQL e em até 2 minutos a conexão morre por força do 
servidor.


[1] http://www.postgresql.org/docs/9.2/static/runtime-config-connection.html

[]s

__
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
__
FREE SOFTWARE SOLUTIONS
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral