Käivitasin PostgreSQLis skripti/päringu/andmemuudatuse, mis "jooksis kinni". Nüüd töötab andmebaasisüsteem aeglaselt ning protsess on lukustanud tabeli/vaate/andmebaasi, mille tulemusena ei saa ma seda muuta ega kustutada. Kuidas "rippuma jäänud" PostgreSQL kasutamise sessioonidest ja nendes algatatud ressursse blokeerivates serveriprotsessidest lahti saada?

Postitas Erki Eessaar
Lahendust kirjeldatakse siin.

Kokkuvõtlikult:

Tuleb leida konkreetse andmebaasiga seotud sessioonid e seansid. Järgneva päringu võite käivitada tegelikult mistahes PostgreSQLi andmebaasis - st kui oma andmebaasis päringu käivitumisel jääb see toppama, siis ühenduge mõne teise andmebaasi külge.

SELECT *
FROM pg_stat_activity
WHERE datname='andmebaasi nimi väiketähtedega';

Katkesta serveriprotsess ja lõpeta selle algatanud sessioon.

SELECT pg_terminate_backend(pid);

Kõige selle automatiseerimiseks võib psqlis käivitada järgneva skripti, asendades eelnevalt t990999 selle andmebaasi nimega, kus on kinni jooksnud päring.

SELECT format('SELECT pg_terminate_backend(%1$s)', pid) AS statements
FROM pg_stat_activity
WHERE datname='t990999'
\gexec

Skript koostab päringu tulemuse põhjal format funktsiooni kasutades dünaamiliselt SQL laused ja käivitab need automaatselt gexec käsu abil.

Hinda postitust:

Keskmine hinne : Pole veel hinnanguid!