Seltsames Verhalten beim Upgrade von 8.2.6 auf 8.3.5

Datenbank Migration (z. B. von MySQL auf PostgreSQL)
Antworten
Gisman
Erfahrener Benutzer
Beiträge: 1148
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Seltsames Verhalten beim Upgrade von 8.2.6 auf 8.3.5

Beitrag von Gisman »

Zum Anfang: ich hab das schon 2x auf diese Weise gemacht und es hat fehlerfrei geklappt. Wie übolich hab ich den neuen Server installiert, mit dem neuen pg_dump/pg_dumpall die alte DB ausgelesen und in die neue gepiped. Dabei trat bei einem zugegebener Massen sehr grossen Geometriefeldern (Binärformat) folgender Fehler auf der jeweils die ganze Transaktion zum Erliegen brachte:

Code: Alles auswählen

ERROR:* out of memory
DETAIL:* Cannot enlarge string buffer containing 0 bytes by 1597848223 more bytes.


Ich habe das dann auf verschieden Arten und Weisen mal mit zwischenspeichern, mal erst Schema erzeugen, dann Daten einspielen versucht mit immer demselben Ergebnis. Dier Lösung war schliesslich, statt dem Copy-Befehl, den pg_dump verwendet inserts zu machen.
Was ist der Grund für dieses Verhalten? Kann man das irgendwie umgehen? >200GB Geodaten per Insert upzugraden ist , nunja, ermüdened ;)

Grüssle Uwe
Have a lot of fun!

akretschmer
Erfahrener Benutzer
Beiträge: 7715
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Beitrag von akretschmer »

Gisman hat geschrieben:Zum Anfang: ich hab das schon 2x auf diese Weise gemacht und es hat fehlerfrei geklappt. Wie übolich hab ich den neuen Server installiert, mit dem neuen pg_dump/pg_dumpall die alte DB ausgelesen und in die neue gepiped. Dabei trat bei einem zugegebener Massen sehr grossen Geometriefeldern (Binärformat) folgender Fehler auf der jeweils die ganze Transaktion zum Erliegen brachte:

Code: Alles auswählen

ERROR:* out of memory
DETAIL:* Cannot enlarge string buffer containing 0 bytes by 1597848223 more bytes.


Ich habe das dann auf verschieden Arten und Weisen mal mit zwischenspeichern, mal erst Schema erzeugen, dann Daten einspielen versucht mit immer demselben Ergebnis. Dier Lösung war schliesslich, statt dem Copy-Befehl, den pg_dump verwendet inserts zu machen.
Was ist der Grund für dieses Verhalten? Kann man das irgendwie umgehen? >200GB Geodaten per Insert upzugraden ist , nunja, ermüdened ;)

Grüssle Uwe



Ich würde mal an den Speichereinstellungen drehen, aber 1597848223 Bytes ist ne Menge Holz. Sind die Einstellungen bzgl. Speicher in beiden postgresql.conf - Dateien gleich?


Andreas
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Gisman
Erfahrener Benutzer
Beiträge: 1148
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Beitrag von Gisman »

akretschmer hat geschrieben:Ich würde mal an den Speichereinstellungen drehen, aber 1597848223 Bytes ist ne Menge Holz. Sind die Einstellungen bzgl. Speicher in beiden postgresql.conf - Dateien gleich?


Andreas


Ja, beides auf default, da wird sich wohl nichts geändert haben. Bisher traten solche Probleme auch nicht auf, in Ermangelung von Polygonen aus x00000 Punkten...
Ursprünglich eingelesen wurden sie mit shp2pgsql, das per default auch inserts generiert. Gibts da einen signifikanten Unterschied wie Copy und Insert so ein Feld mit Binärdaten behandeln?

Grüssle Uwe
Have a lot of fun!

hkocam
Benutzer
Beiträge: 79
Registriert: Do 31. Mai 2007, 23:45

Beitrag von hkocam »

Hallo,

wie es ausschaut liegt hier das Problem:
PostgreSQL Source Code: src/backend/lib/stringinfo.c Source File
Zeile 242ff

MaxAllocSize ist so definiert
#define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */

zu finden in
PostgreSQL Source Code: src/include/utils/memutils.h Source File
Zeile 38

Wenn ich es Recht verstehe, ensteht der Fehler, weil auf einmal mehr als 1 GB Speicher reserviert werden soll.

Ob das ein Problem des Server oder von pg_restore ist, kann ich leider nicht nachvollziehen, habe nur nach deiner Fehlermeldung in Google gesucht.

Freundliche Grüße
hkocam

Gisman
Erfahrener Benutzer
Beiträge: 1148
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Beitrag von Gisman »

Danke für die Links. Leider liefert er keine Erklärung, warum Copy und Insert unterschiedliches Verhalten zeigen beim gleichen Datensatz. Naja, nu gehts ja und ich bin glücklich und zufrieden :)

Gruß Uwe
Have a lot of fun!

Antworten