PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 16/01/2010 15:42:54

gilou974
Membre

[RÉSOLU] Probleme de verrou sur la base

Bonjour à tous.

VOilà je suis en train d'effectuer un programme de transfert de données en C++ et il me faudrait faire un DROP sur ma base. Problème il semblerait que lors de mes test j'ai mis des verrous sur la base (probablement des transactions implicitement crées mais pas libérées sur plantage de mon exe ).

Toujurs est-il que si je fais un ps -fu j'obtiens :

postgres@testserver:/etc/init.d$ ps -fu postgres
UID        PID  PPID  C STIME TTY          TIME CMD
postgres  4145 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(58826) idle in transaction
postgres  4149 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(58839) idle in transaction
postgres  4172 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(58874) idle in transaction
postgres  4178 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(44733) idle in transaction
postgres  4201 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(44776) idle in transaction
postgres  4207 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(44783) idle in transaction
postgres  4502 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(44812) idle in transaction
postgres  4844 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(44824) idle in transaction
postgres  4846 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(44828) idle in transaction
postgres  5584 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(53866) idle in transaction
postgres 12899     1  0  2009 ?        00:09:37 /usr/lib/postgresql/8.3/bin/postgres -D /var/lib/postgresql/8.3/mai
postgres 12901 12899  0  2009 ?        00:00:58 postgres: writer process
postgres 12902 12899  0  2009 ?        00:00:35 postgres: wal writer process
postgres 12903 12899  0  2009 ?        00:05:30 postgres: autovacuum launcher process
postgres 12904 12899  0  2009 ?        00:04:59 postgres: stats collector process
postgres 19494 12899  0 14:16 ?        00:00:00 postgres: pgsql postgres 192.168.1.90(3438) idle
postgres 20289 18682  0 14:22 pts/0    00:00:00 su postgres
postgres 20290 20289  0 14:22 pts/0    00:00:00 bash
postgres 21024 12899  0 14:25 ?        00:00:00 postgres: pgsql socaf 192.168.1.90(3450) idle
postgres 22646 12899  0 14:39 ?        00:00:00 postgres: pgsql socaf 192.168.1.90(3584) idle
postgres 24151 20290  0 14:48 pts/0    00:00:00 ps -fu postgres
postgres 25576 12899  0 Jan12 ?        00:00:03 postgres: postgres socaf 192.168.1.114(36412) idle in transaction
postgres 28355 12899  0 Jan12 ?        00:00:00 postgres: postgres socaf 192.168.1.114(39589) idle in transaction

Quelqu'un pourrait-il me guider pour libérer toutes les connections à la base.

Merci d'avance

Hors ligne

#2 16/01/2010 16:06:27

gilou974
Membre

Re : [RÉSOLU] Probleme de verrou sur la base

Bon j'ai trouvé une solution à la radical g fait un kill sur tous les PID  associés à idle in transaction.

Merci quand même de me répondre si quelqu'un à une solution plus élégante.

Hors ligne

#3 16/01/2010 18:46:26

gleu
Administrateur

Re : [RÉSOLU] Probleme de verrou sur la base

Ne JAMAIS faire un kill sur les processus, sauf cas extrême.

Il faut trouver les processus qui ont ouvert ces connexions et les arrêter. Dans le cas où ce n'est pas possible, un arrêt/redémarrage de PostgreSQL peut se révéler nécessaire. À savoir qu'en 8.4, il est aussi possible d'utiliser la commande pg_terminate_backend.


Guillaume.

Hors ligne

#4 19/01/2010 18:55:10

gilou974
Membre

Re : [RÉSOLU] Probleme de verrou sur la base

Merci pour la réponse et désolé de la mienne pour sa nature tardive.

Oui je me doutais bien que ce n'était pas une bonne idée de faire un Kill mais je devais faire au plus vite pour avancer.

Sinon pour la 8.4 je n'ai pas encore fait la bascule pour l'instant donc je garde la commande que vous m'avez donnée de côté pour la prochaine fois.

Merci en tout cas et encore désolé de ne répondre que maintenant.

Hors ligne

#5 19/01/2010 19:28:04

Marc Cousin
Membre

Re : [RÉSOLU] Probleme de verrou sur la base

Au passage, en 8.3 il y a au moins pg_cancel_backend, qui déclenche un rollback et libère la transaction d'une session, ce qui aurait suffi normalement à résoudre votre problème


Marc.

Hors ligne

#6 20/01/2010 16:35:14

gilou974
Membre

Re : [RÉSOLU] Probleme de verrou sur la base

Merci bcp pour l'info sur la 8.3 Marc Cousin je vais de ce pas tester parce que je suis justement encore dans le même cas que samedi.

Merci

Hors ligne

Pied de page des forums