Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 24/07/2012 15:57:35
- ouilhe
- Membre
ERROR: could not access status of transaction... Could not open file
Bonjour,
je tourne sur un environnement linux avec un postgresql 8.4.
J'ai eu des soucis de place sur le disque dur, et j'ai ceci dans les logs :
DETAIL: Could not open file "pg_subtrans/0000": No such file or directory.
CONTEXT: automatic analyze of table "database2.pg_catalog.pg_opclass"
ERROR: could not access status of transaction 21374
Ce message apparait plein de fois dans les logs, et le pb semble venir de 5 transactions (21371 ... 21375).
Le fichier pg_subtrans/0000 était bien absent.
J'ai alors tenté de faire le fameux :
dd bs=8k count=1 < /dev/zero >> $PGDATA/pg_data/0000
voici le retour de la commande :
1+0 records in
1+0 records out
8192 bytes (8.2 kB) copied, 7.9429e-05 s, 103 MB/s
puis j'ai fait un chown postgres:postgres sur le fichier.
Maintenant, les logs sont les suivantes :
CONTEXT: automatic analyze of table "database2.pg_catalog.pg_index"
ERROR: could not access status of transaction 21373
DETAIL: Could not read from file "pg_subtrans/0000" at offset 81920: Success.
Il semble qu'il y ait toujours ces pb de transactions "suspendues" ...
Je sèche vraiment ...
Z'auriez des lumières à m'apporter plizzzz ??
Merci
Hors ligne
#2 24/07/2012 16:01:06
- ouilhe
- Membre
Re : ERROR: could not access status of transaction... Could not open file
PS : J'ai aussi tenté de faire un VACUUM standard sur la base, ça a pris prêt de 5h (mais la base est conséquente), et je n'ai pas vu de pb dans le rapport. Merci
Hors ligne
#3 24/07/2012 16:24:36
- ouilhe
- Membre
Re : ERROR: could not access status of transaction... Could not open file
Voici le retour de "ps -ef | grep postgres" :
postgres 21880 1 0 07:54 ? 00:00:01 /usr/lib/postgresql/8.4/bin/postgres -D /srv/host-app/pgdata/main -c config_file=/etc/postgresql/8.4/main/postgresql.conf
postgres 21883 21880 0 07:54 ? 00:00:14 postgres: writer process
postgres 21884 21880 0 07:54 ? 00:00:03 postgres: wal writer process
postgres 21885 21880 0 07:54 ? 00:00:00 postgres: autovacuum launcher process
postgres 21886 21880 0 07:54 ? 00:00:02 postgres: stats collector process
admin 21930 1 1 07:54 ? 00:07:36 java -javaagent:/srv/host-app/myapp/myapptools/myapphome-21/play/framework/play.jar -Duser.timezone=GMT -Xmx512m -Xms512m -server ...
postgres 21952 21880 0 07:54 ? 00:01:40 postgres: myapp database2 127.0.0.1(46869) idle
postgres 21953 21880 0 07:54 ? 00:00:43 postgres: myapp database2 127.0.0.1(46870) idle
postgres 21954 21880 0 07:54 ? 00:01:26 postgres: myapp database2 127.0.0.1(46871) idle
postgres 21988 21880 0 07:58 ? 00:01:29 postgres: myapp database2 127.0.0.1(43760) idle
postgres 21989 21880 0 07:58 ? 00:00:05 postgres: myapp database2 127.0.0.1(43761) idle
postgres 21990 21880 0 07:58 ? 00:00:29 postgres: myapp database2 127.0.0.1(43762) idle
Je trouve qu'il y a beaucoup de monde ...
Dois je killer les processus notés "idle" ?
Merci
Hors ligne
#4 24/07/2012 17:32:11
- gleu
- Administrateur
Re : ERROR: could not access status of transaction... Could not open file
Je n'ai pas trop le temps de regarder, mais juste un message très rapide : killer les processus postgres est certainement l'idée la pire qui soit. Si vous faites un kill -9, c'est tout le système qui s'arrête puis redémarre.
Guillaume.
Hors ligne
#5 24/07/2012 21:29:40
- gleu
- Administrateur
Re : ERROR: could not access status of transaction... Could not open file
Vous êtes sûr du fait que le fichier non trouvé est bien situé dans pg_subtrans ? il me semblerait plus logique que ce soit pg_clog.
Si c'est bien dans pg_subtrans, je ne vois qu'une chose à faire : arrêter PostgreSQL, renommer pg_subtrans, recréer pg_subtrans (attention aux droits et propriétaires), puis redémarrer PostgreSQL. Ceci fait, ré-essayer le VACUUM.
Guillaume.
Hors ligne
#6 24/07/2012 21:38:55
- ouilhe
- Membre
Re : ERROR: could not access status of transaction... Could not open file
Merci Guillaume pour ta réponse si rapide ! Je tente ça dès demain. Pour te répondre, oui, oui, c'est bien dans pg_subtrans ... et c'est bien le fichier 0000. Merci pour le tuyau.
Hors ligne
#7 25/07/2012 16:47:41
- ouilhe
- Membre
Re : ERROR: could not access status of transaction... Could not open file
Finalement, je ne peux pas faire la manip aujourd'hui ... Je te tiens informé quand je l'aurai fait. Merci
Hors ligne
#8 20/12/2012 09:38:46
- ouilhe
- Membre
Re : ERROR: could not access status of transaction... Could not open file
Je suis parti sur la réinstall de la base à partir d'un dump, merci pour ton aide gleu.
Hors ligne
#9 20/12/2012 11:51:57
- sphax
- Membre
Re : ERROR: could not access status of transaction... Could not open file
Bonjour,
J'ai exactement la même erreur sur un postgres 9.1
Caused by: org.postgresql.util.PSQLException: ERROR: could not access status of transaction 65426205
Detail: Could not open file "pg_subtrans/03E6": No such file or directory.
J'ai aussi fait un
dd bs=49152 count=1 < /dev/zero > 03E6
1+0 records in
1+0 records out
49152 bytes (49 kB) copied, 0.000233787 s, 210 MB/s
(je lui ai donné la même taille qu'un autre fichier situé au même endroit)
et j'ai
Caused by: org.postgresql.util.PSQLException: ERROR: could not access status of transaction 65426205
Detail: Could not read from file "pg_subtrans/03E6" at offset 81920: Success.
J'imagine qu'il ne peut pas lire a l'offset indiqué car le fichier n'est pas assez grand.
Si j'augmente la taille de ce fichier de manière trop importante, est-ce que cela peut avoir des impactes?
Merci d'avance.
Hors ligne
#10 20/12/2012 12:40:43
- Marc Cousin
- Membre
Re : ERROR: could not access status of transaction... Could not open file
Dans tous les cas, c'est de la bidouille. pg_subtrans et pg_clog contiennent des informations sur la visibilité des données. Recréer ces fichiers avec des zéros à l'intérieur, c'est encore plus dangereux que de mettre des zéros dans un fichier de données pour recréer des blocs corrompus.
Si vous avez des fichiers qui disparaissent comme ça du système de fichiers, il faut que vous trouviez la cause (probablement un problème disque)
Marc.
Hors ligne
#11 20/12/2012 12:45:18
- sphax
- Membre
Re : ERROR: could not access status of transaction... Could not open file
Mmm oui je pense bien.
Cependant c'est une base pour sonar, on a pas de dump, on pourrait tout casser et refaire la base de zero mais je cherchais une solution plus rapide
Si comme la dit Gleu je supprime le dossier pg_subtrans et que je lance un VACUUM ça va recréer le fichier?
Merci
Hors ligne
#12 20/12/2012 12:47:22
- Marc Cousin
- Membre
Re : ERROR: could not access status of transaction... Could not open file
Jamais essayé. J'en doute, mais ça ne vous coûte rien d'essayer. Plutôt que de le supprimer, renommez le. Et surtout, faites un backup de vos fichiers avant de commencer à faire ces manipulations, qui sont assez dangereuses.
Marc.
Hors ligne