Alain Peyrat wrote:
Hello,
System: Red Hat Linux 4 64bits running postgres-7.4.16 (production)
Initial problem:
# pg_dump -O dbname -Ft -f /tmp/database.tar
pg_dump: query to get table columns failed: ERROR: invalid memory alloc
request size 9000688640
After some research, it seems to be related to a corruption of the
database. Running a vacum crashes the db:
-bash-3.00$ vacuumdb -z -a
vacuumdb: vacuuming database "template1"
vacuumdb: vacuuming of database "template1" failed: PANIC: corrupted
item pointer: offset = 3336, size = 20
It would be nice if it's just template1 that is damaged, but I'm not
sure that's the case.
1. Have you had crashes or other hardware problems recently?
2. Can you vacuum the other databases?
3. Can you just dump the schema for your selected database with
--schema-only? (your pg_dump seemed to fail fetching column details)
4. Can you dump individual tables with --table=? (it might just be one
table that's damaged)
http://www.postgresql.org/docs/7.4/static/app-pgdump.html
Can someone help me to track down the problem ?
Can I recover the datas (last backup failed) ?
How much can be recovered will depend on what corruption has occurred.
If it's just a damaged index, then reindexing will fix it.
If it's a damaged system catalogue we might be able to fix the catalogue
then read the data.
If data files are damaged we'll need to locate the damage and work
around it. You will probably lose data on any damaged pages.
--
Richard Huxton
Archonet Ltd