Cette réponse SO explique magnifiquement (citation complète de araqnid entre les règles horizontales, puis moi à nouveau):
Pour marquer la base de données 'applogs' comme n'acceptant pas de nouvelles connexions:
update pg_database set datallowconn = false where datname = 'applogs';
Une autre possibilité serait de révoquer l'accès 'connect' à la base de données pour le(s) rôle(s) client.
Déconnecter les utilisateurs de la base de données = tuer le backend. Pour déconnecter tous les autres utilisateurs de la base de données "applogs", par exemple:
select pg_terminate_backend(procpid)
from pg_stat_activity
where datname = 'applogs' and procpid <> pg_backend_pid();
Une fois que vous avez fait ces deux opérations, vous êtes le seul utilisateur connecté à 'applogs'. Bien qu'il puisse y avoir un délai avant que les backends ne se soient effectivement déconnectés?
Mise à jour de MarkJL: Il y a effectivement un délai avant que les backends ne soient effectivement déconnectés.
Maintenant, moi à nouveau: Cela dit, veuillez noter que la colonne procpid
a été renommée en pid
dans PostgreSQL 9.2 et ultérieur.
Je pense que c'est beaucoup plus utile que la réponse de Milen A. Radev qui, bien que techniquement similaire, ne s'accompagne pas d'exemples d'utilisation et de suggestions concrètes.