pg_restore: Nach Abschluss von pg_restore keine Fehler, aber auch keine DB

Hallo zusammen.

ich habe folgendes Problem:
ich versuche, mit dem Befehl pg_restore ein Datenbankbackup wieder einzuspielen. Das Backup wurde auf Maschine A erstellt,
und soll auf Maschine B wieder eingespielt werden.
Beide Maschinen sind baugleich, gleiche Baureihe und gleicher Softwarestand.
Bei dem Befehl

pg_restore --clean <Backupfile>

schreibt mir pg_restore eine ganze menge auf den Bildschirm. Es werden keine Fehlermeldungen und keine Warnungen ausgegeben,
in der Logdatei steht auch nichts drinnen. Wenn der Restore abgeschlossen ist, steht in der letzten Zeile: restore complete.
ein

psql -l

zeigt mir aber keine Datenbanken an. Es ist nur template0 und template1 vorhanden. Die Datenkbank test_db aber nicht.
Der User, dem die db zugeordnet sein sollte, wurde vorher mit

createuser -a <username>

erstellt.
Der betreffende User hat vollen Zugriff auf die DB.
Das OS ist ein SLES 9 und installiert ist die Software mit Versionsstand 8.0
Weis jmd. von euch einen Rat?
Dank im voraus.

Welche Inhalte sind in dem Restore enthalten? -l und -L sind da sehr gesprächig. Wird dabei eine eigene Datenbank erstellt oder werden die Daten in template1 eingespielt?

Hallo ads,

der Restore enthält eine komplette DB, die wiederhergestellt werden soll.
der Aufruf psql -l soll mir ja eig. nur zeigen, welche Datenbanken installiert sind. Wenn ich z.B. von Hand eine db mit dem createdb anlege, wird diese auch anschließend angezeigt.
Ich habe jetzt mal mit dem Befehl pg_restore --dbname=<test_db> den restore angestoßen, nachdem ich die db manuell erstellt habe.
Dabei kam unter anderem folgender Fehler:

pg_restore: [archiver (db)] could not execute query: ERROR:  could not access file "$libdir/plperl": No such file or directory
    Command was: CREATE FUNCTION plperl_call_handler() RETURNS language_handler
    AS '$libdir/plperl', 'plperl_call_handler'
    LANGUAGE c;

Kann es sein, dass Perl als Sprache noch manuell installiert werden muss, und zwar mit dem Befehl:

 ./createlang plperl -L /<librarypfad>/lib/  test_db

?
Dann müsste zumindest die oben genannte Fehlermeldung weg sein, richtig?
Dank im voraus, Gruß, J.

Probier es aus.

Und wie gesagt, schau bitte mal mit pg_restore -l nach, was überhaupt an Objekten in dem Restore auftaucht - und ob dort eine Datenbank erstellt wird.

Die Create Anweisung ist ganz oben in den ersten Zeilen des Restore.
Es hat tatsächlich an der Sprache gelegen. Was mich nur wundert:
mit createlang habe ich die Sprache eingefügt für eine Datenbank, die ich mit dem Aufruf ./pg_restore --clean wieder lösche, aber jetzt legt er die db neu an, ohne Fehler zu erzeugen und spielt den restore dort ein.
Weis einer von euch, wo postgres die Einstellungen abspeichert, die mit createlang eingetragen werden?

Gruß, J.

Eigentlich in der Datenbank, da man die jeweilige Sprache pro Datenbank freischaltet.

In der DB, in der sie erstellt wurde. Es ist vielleicht sinnvoll, dies gleich in template1 zu machen.

Andreas

Eigentlich müsste die entsprechende Anweisung mit exportiert in der Datei stehen …