Zabijanie zapytań
Czasem trafia się przypadek, że trzeba zabić jakiś długo wiszący proces.
Logowanie do Postgresa
Najlepiej zalogować się z konsoli za pomocą psql'a i logowania użytkownikiem i haslem. Np:
psql -U sowa -h localhost -W postgres
I już jesteśmy na konsoli Postgresa w bazie "postgres".
Listowanie działających zapytań
Możemy wylistować wszystkie zapytania,
SELECT state,datname,usename,pid,client_addr,query_start,query FROM pg_stat_activity ;
lub tyko zapytania dla konkretnej bazy, jeśli na serwerze jest wiele baz:
SELECT state,usename,pid,client_addr,query_start,query FROM pg_stat_activity where datname = 'db_nazwa_bazy_ks';
W wyniku dostajemy coś np. takiego:
usename | pid | client_addr | query_start | query ---------+-------+--------------+-------------------------------+---------------------------------------------------------------------------------------------- sowa | 30163 | 192.168.1.61 | 2018-03-09 08:59:45.926053+01 | set client_encoding to win1250; sowa | 4556 | 192.168.1.61 | 2018-03-09 10:22:28.544199+01 | END; sowa | 4558 | 192.168.1.61 | 2018-03-09 10:22:28.264697+01 | SELECT fld_ipub_id FROM tbl_linkage WHERE fld_rec_type = 'U' AND fld_rec_id = '56049' LIMIT 1 sowa | 30168 | 192.168.1.61 | 2018-03-09 08:59:47.897656+01 | set client_encoding to win1250; sowa | 30169 | 192.168.1.61 | 2018-03-09 08:59:47.837634+01 | set client_encoding to win1250; sowa | 30186 | 192.168.1.61 | 2018-03-09 08:59:55.337295+01 | LISTEN oai_pmh_change (6 wierszy)
Zabijanie procesu
Gdy już wiemy, który proces chcemy "ubić", sprawdzamy jego "pid" i wykonujemy polecenie:
select pg_terminate_backend(4558);