Restart einer einzelnen Datenbank

Hallo Wissende,
ich habe (vermutlich) durch fehlerhafte Triggerprogrammierung eine (einzelne) Datenbank in den DeadLock “geschickt”, dh. sie reagliert auf keine Anforderung mehr.
Die anderen Datenbanken des PG-Servers funktionieren noch, nur die eine ist “tod”.

Kann ich die einzelne Datenbank irgendwie “neu starten” ohne den gesamten Datenbankserver lahm zu legen?

Gruß Steffen

Nein, du könntest aber das Backend killen. Schau in pg_stat_activity, und dann pg_cancel_backend.

Hallo,
Dank für die schnelle Antwort.
Also das Problem war richtig böse :-(.
Ich arbeite unter Windows. Das Programm (also die Mainpulation des Dienstes) zum Restart des PG-Servers als auch das zum Stop des PG-Servers hat nicht funktioniert.
Letztendlich habe ich den hängenden Postgres-Prozess gekillt (lillen lassen). Danach war der PG-Server tod und konnte dann allerdings neu gestartet werden.
Die Manipulation der Dienste/Prozesse ist allerdings arg unschön, da ich selbst keinen Zugriff auf den Windowserver habe.

Alles extrem unbefriedigend … :frowning:

du könntest aber das Backend killen.
Das schaue ich mir mal an.[*]

… so ich konnte das Problem in einer lokalen Installation nachstellen und somit auch deinen Vorschlag testen:

SELECT d.oid AS datid, d.datname, pg_stat_get_backend_pid(s.backendid) AS
procpid, pg_stat_get_backend_userid(s.backendid) AS usesysid, u.usename,
pg_stat_get_backend_activity(s.backendid) AS current_query,
pg_stat_get_backend_activity_start(s.backendid) AS query_start,
pg_stat_get_backend_start(s.backendid) AS backend_start,
pg_stat_get_backend_client_addr(s.backendid) AS client_addr,
pg_stat_get_backend_client_port(s.backendid) AS client_port
   FROM pg_database d, ( SELECT pg_stat_get_backend_idset() AS backendid) s,
pg_shadow u
  WHERE pg_stat_get_backend_dbid(s.backendid) = d.oid AND
pg_stat_get_backend_userid(s.backendid) = u.usesysid;

Diese Abfrage zeigt die Aktionen.

und mit

select pg_cancel_backend(<procpid>);

Lässt sich dann die Problemaktion beenden.

Gruß Steffen

Besten Dank - für die nächste “Aktion” bin ich jetzt gerüstet.