Muito Obriagdo.

Funcionou.



De: pgbr-geral [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de 
Matheus de Oliveira
Enviada em: terça-feira, 25 de agosto de 2015 09:17
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] Matar Usuario Postgresql 8l.2





2015-08-24 18:10 GMT-03:00 Agape World Informática Ltda 
<ag...@agapeworld.com.br>:

Como faço  para parar todos os usuarios do banco postgresql 8.2



Em 2015 e você usando a versão 8.2? Tem gente que gosta de sofrer mesmo... xP



Não estou achando.



Tenho que fazer o seguinte.



- drop no banco.

- create

- restaurar o banco.



Ah... Mais uma coisa que esqueci de mencionar e vou deixar aqui como 
referência. O que passamos aqui vai funcionar para a grande maioria dos casos, 
mas tem uma situação bem específica (e bem chata) onde um usuário pode conectar 
entre o kill e o DROP DATABASE. Mesmo renomeando a base isso pode acontecer em 
versões mais recentes por causa do autovacuum. Uma forma de se resolver isso é 
desabilitar a possibilidade de conexão na base fazendo um UPDATE na pg_database:

    UPDATE pg_database SET datallowconn = false WHERE datname = 'nome_da_base';

    -- Fazer o `kill -TERM <pid>`

    DROP DATABASE nome_da_base;

    ... faz o CREATE e a restauração aqui ...



Quanto à parte do kill manual na 8.2, você pode fazer via shell:

    $ psql -c "UPDATE pg_database SET datallowconn = false WHERE datname = 
'nome_da_base';"

    $ psql -AXtqc "SELECT procpid FROM pg_stat_activity WHERE datname = 
'nome_da_base';" | xargs kill -TERM



ATENÇÃO: em geral não é recomendado fazer atualização em tabelas de catálogo, 
mas sabe-se que as colunas datallowcon e datistemplate da pg_database são 
seguras de atualizar, tanto que na versão 9.5 criou-se as opções 
ALLOW_CONNECTIONS e IS_TEMPLATE no comando ALTER DATABASE para fazer essa 
operação, assim, na 9.5, ficaria:

    ALTER DATABASE nome_da_base WITH ALLOW_CONNECTIONS=false;

    SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 
'nome_da_base';

    DROP DATABASE nome_da_base;




Atenciosamente,

--

Matheus de Oliveira





---
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a