pgdump: could not open relation...

Hallo,

Die Ausführung von Pgdump (PG 8.2) produziert diese Fehlermeldung:


inetcar: SQL command failed
inetcar: Error message from server: ERROR: could not open relation 1663/17566/2611: No such file or directory
inetcar: The command was: SELECT inhrelid, inhparent from pg_inherits

Die Daten sind trotzdem bei meiner Applikation und pgadmin lesbar.

Ich habe in dieser Forum gesucht und folgendes gefunden:
http://www.pg-forum.de/allgemeines/2225-tabelle-nicht-exportierbar-nicht-vacuumbar.html
http://www.pg-forum.de/allgemeines/1602-hilfe-kein-backup-mehr-m-glich.html

Gibt es irgendwo anderen Informationen? Oder muss ich annehmen dass pgdump nicht zuverlässig ist und meinen eigenen Backup selber programmieren?

Hubert Rétif.

Sicher? Vollständig?

Ich habe in dieser Forum gesucht und folgendes gefunden:
http://www.pg-forum.de/allgemeines/2225-tabelle-nicht-exportierbar-nicht-vacuumbar.html
http://www.pg-forum.de/allgemeines/1602-hilfe-kein-backup-mehr-m-glich.html

Gibt es irgendwo anderen Informationen? Oder muss ich annehmen dass pgdump nicht zuverlässig ist und meinen eigenen Backup selber programmieren?

Hubert Rétif.

Meldungen dieser Art deuten auf Probleme mit dem Filesystem hin.

Was liefert ein 'select * from pg_class where relfilenode = ‘17566’? (ich vermute mal, daß das eine refilenode ist, bin mir aber nicht sicher). Möglicherweise handelt es sich ‘nur’ um eine TOAST-Tabelle. Wie dem auch sei, vermutlich ein Filesystemfehler. Welches Filesystem ist denn im Einsatz?

Andreas

Danke Andreas für den Antwort.

Ja, lesen und schreiben


Keine Fehlermeldung, aber keine Record

Hubert.

Kannst Du die Tabelle via COPY ausgeben?

Wie geht es? Bis jetzt nie gemacht…

Ich kann allerdings erst Morgen machen, wenn mein Kunde wieder da ist.

Hubert

So oder so:

test=*# copy pg_inherits to stdout;
87064   87060   1
88033   88017   1
33402   33395   1
88036   88017   1
88039   88017   1
test=*# copy pg_inherits to '/tmp/pg_inherits.copy';
COPY
Time: 1.579 ms
test=*#

copy pg_inherits: could not open relation 1663/10819/2611

copy pg_class: siehe Anhänge.

Hubert.

Ja. Du solltest irgendwo eine Datei mit dem Namen 2611 haben. Diese enthält die Daten für pg_inherits. In Deiner pg_class, Zeile 127, 6. Spalte steht das auch. Und diese Datei fehlt Dir offensichtlich.

Also, unter $PG_DATA sollte es eine /10819/2611 bei Dir geben, prüfe das mal. Die 1663 steht für tablespace, 10819 ist die OID der Datenbank, 2611 die OID der Tabelle. Datenbank und Tabelle bildet sich 1:1 im Filesystem ab.


Andreas

Danke für den wertvolle Informationen.

Es gibt den Ordner 10819 und die dateien 2610 und 2612 aber kein Spur von 2611. Wie kann es sein dass ausgerechnet nur diese fehlt? Ich kann momentan mich nicht vorstellen dass der Anwender in dieser Ordner gegangen wäre und den Datei gelöscht hätte (obwohl ich kann mich schwach errinern dass evtl. von anfang an pgdump nach PG Installation nicht funktioniert hatte).

Wenn ich 2611 nicht wieder finden kann, heisst es dass ich keine Chance habe ein Backup zu machen?

Hubert.

Okay, erst einmal meine Vermutung bestätigt.

Tja, was nun tun? Um ehrlich zu sein, ich weiß es nicht. Vielleicht würde es gehen, diese Datei aus einer der Template-Datenbanken zu kopieren. Falls Du keine Vererbungen nutzt, dann wäre ja die Tabelle eh leer, so wie in den Templates. Aber ob das gut geht, möchte ich nicht garantieren.

Andreas

Interressant auch ist dass diese Datei in alle Ordner von “base” fehlt.

Hubert

Das erklärt dann auch:

(obwohl ich kann mich schwach errinern dass evtl. von anfang an pgdump nach PG Installation nicht funktioniert hatte).

Andreas

Problem gelöst! Ich habe die 2611 (leer) aus meiner eigener DB dort kopiert, in alle Ordner die in “base” sind.

Es ist noch nicht gegangen weil 2612 und 2613 haben auch gefehlt.

Gleiche Prozedur wie bei 2611. Und jetzt läuft pgdump prima.

Vielen Dank für deine Hilfe.
Hubert.