Fehler bei vacuumdb

Hallo,

ich bekomme bei einer meiner Datenbanken beim Aufruf von vacuumdb mit der Option -az (Analyse) folgende Fehlermeldung:

vacuumdb: vacuuming of database “XXX” failed: ERROR: function XXX does not exist

Die Funktion existiert im Public schema. Wenn ich in der Datenbank selber ein Vacuum Analyse aufrufe, geht das ohne Fehler durch.
Die Funktion, die das vacuumdb nicht findet gibt die Fehlermeldung mit den Parametern (xml, unknown) aus, definiert ist die aber mit (xml, character varying).

Habt Ihr eine Idee woran das liegen könnte? Zumal laut Doku vacuumdb ja nur ein Wrapper für vaccum ist.

klingt nach beschädigten Katalogen. An Deiner Stelle würde ich jetzt sehen, ob man einen kompletten Dump hinbekommt, der dann auch diese Funktion enthält.

Welche Version, welches OS?

Dump klappt und enthält auch die Funktion. Postgres ist Version 968, OS SLES 12.

Okay, 9.6.8 ist schon etwas betagt, aktuell wäre 9.6.16. SLES, okay, ich dachte schon Windows mit 42 unterschielichen Virenscannern :wink:

Gab es irgend etwas (crash, Platte voll, …), was das ausgelöst hat? Sind irgend welche Extensions drauf, die NICHT aus Contrib sind? Virenscanner?

Von einem Crahs weiss ich nichts, beim Plattenplatz gab es keine Probleme. Als Extensions sind pg_stat_statements und tablefunc drauf.

Ich wundere mich nur, das es beim Vacuum analyse in der Datenbank ohne Fehler klappt. Vacuumdb macht doch auch nichts anderes. Und an den Katalogen kann es dann ja eigentlich auch nicht liegen. Ich kann mich natürlich um ein Wartunsgfenster bemühen und dann die Db Dumpen und neu Einspielen, dann sollten die Kataloge ja sauber sein.

Hilft denn --verbose weiter?

Wieso stört sich VACUUM überhaupt an einer Funktion? Die werden doch normalerweise nicht weiter analysiert.

Hallo,

verbose hilft mir auch nicht weiter. bei Vacuumdb -vz kommt folgende Ausgabe:

INFO: analyzing “public.adresse”
INFO: “adresse”: scanned 2128 of 2128 pages, containing 24381 live rows and 0 dead rows; 24381 rows in sample, 24381 estimated total rows
vacuumdb: vacuuming of database “zbr” failed: ERROR: function zbr_xpath(xml, unknown) does not exist
LINE 1: SELECT (zbr_xpath(doc,‘boolean(//zbr:hausnummer[node() or @n
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT (zbr_xpath(doc,‘boolean(//zbr:hausnummer[node() or @nil=’‘true’’])’) = ‘true’)
CONTEXT: PL/pgSQL function public.zbr_adresse(xml) line 8 at assignment

bei vacuum analyse verbose das hier:

INFO: analyzing “public.adresse”
INFO: “adresse”: scanned 2128 of 2128 pages, containing 24381 live rows and 0 dead rows; 24381 rows in sample, 24381 estimated total rows

Und dann geht es mit der nächste Tabelle weiter.