Como listar conexões ativas no PostgreSQL?

150

Existe um comando no PostgreSQL para selecionar conexões ativas para um determinado banco de dados?

psqldeclara que não posso descartar um dos meus bancos de dados porque há conexões ativas , por isso gostaria de ver quais são as conexões (e de quais máquinas)

Tregoreg
fonte
Ótimo! procuro (mal) e não encontrei nada. Posso fazer algo para fechar outras conexões ociosas?
Orador

Respostas:

262

Acabei de encontrar esse comando no fórum do PostgreSQL:

SELECT * FROM pg_stat_activity;
Tregoreg
fonte
14
Se você deseja limitá-lo a apenas um banco de dados, pode usar SELECT * FROM pg_stat_activity WHERE datname = 'dbname';
user2182349
1
Como posso obter a conexão ativa do banco de dados a partir do serviço de backup específico?
precisa
E depois da execução, pg_terminate_backende meu aplicativo ainda pode executar consultas no banco de dados, mas não pude ver as novas conexões no pg_Stat_activity?
takacsot 25/09/19
37

A seguir, você fornece conexões / consultas ativas no postgres DB-

SELECT 
    pid
    ,datname
    ,usename
    ,application_name
    ,client_hostname
    ,client_port
    ,backend_start
    ,query_start
    ,query
    ,state
FROM pg_stat_activity
WHERE state = 'active';

Você pode usar 'inativo' em vez de ativo para obter conexões / consultas já executadas.

Neeraj Bansal
fonte
1
Ocioso significa que a conexão está ativa? Se eu estiver liberando a conexão, ela ainda será listada como ociosa?
Shivam Kubde
1
Sim, @ShivamKubde, mas como 'inativo', e a consulta acima mostra apenas conexões 'ativas'; remova a WHERE ...cláusula e, para poder ver quais conexões estão ativas ou inativas, adicione a coluna stateà SELECTcláusula
Mariano Ruiz em
6
SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';

Como pg_stat_activitycontém estatísticas de conexão de todos os bancos de dados com qualquer estado, idleou active, o nome do banco de dados e o estado da conexão devem ser incluídos na consulta para obter a saída desejada.

Abdollah
fonte