Blog

Beenden von ungenutzten Verbindungen in PostgreSQL
pg_activity.png
 
Wenn man eine Datenbank in PostgreSQL kopieren möchte kann man das durch Anlegen einer neuen unter Verwendung der alten als Vorlage. Um eine Datenbank als Vorlage verwenden zu können, darf diese aber keine offenen Verbindungen mehr haben. Die eigenen Verbindungen, z.B. eigene Query-Fenster von pgAdmin III hat man schnell geschlossen. Auch die Verbindung zur Datenbank mit pgAdmin III kann man leicht schließen in dem man sich bei einer anderen anmeldet.
Wenn man dann aber nachsieht mit:

SELECT * FROM pg_stat_activity;

kann es sein, dass noch offene Verbindungen mit Status idle vorhanden sind. Diese lassen sich schließen mit:

SELECT pg_terminate_backend(pid);

pid ist der jeweilige Prozess, der inaktiv ist. Um alle inaktiven gleichzeitig löschen zu können kann man pg_stat_activity und pg_terminate_backend zusammen verwenden.

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE application_name = '' AND state = 'idle';

In unserem Falle waren alle Verbindungen im idle State ohne Anwendungsnamen.
  Datensatz auswählen
Blog alle auswählen
  • als Diagramm ausgeben