We have some serious issues with our PostgreSQL-Server (Version 8.4). Our webapplication uses jdbc to connect to the PostgreSQL Server. Suddenly our webapplication cant connect to the PostgreSQL Server. We get the PSQLException: Broken Pipe. Cause of this, i tried to connect via pg_admin. This works, but i'm getting errors like this:
ERROR: could not read block 32570 of relation base/16390/2663: read only 0 of 8192 bytes
I tried to make a dump to backup the data and this doesnt work too: (Look on the edit at the bottom of the side)
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: could not read block 32570 of relation base/16390/2663: read only 0 of 8192 bytes
pg_dump: The command was: LOCK TABLE public.results_233_top100_disease_state_karyotype IN ACCESS SHARE MODE
I tried to get some information with
SELECT oid, relname FROM pg_class WHERE oid=2663
The result was this:
2663 ; "pg_class_relname_nsp_index"
During my effort of collecting some information, i read, that recreating that specific index could help. So reindexed it with the following command:
REINDEX INDEX pg_class_relname_nsp_index
This didnt helped at all, and now i'm pretty helpless. Has somebody an idea what i can do ? Another point is, that we do weekly backups. Is it possible to overwrite the data folder: /var/lib/postgresql/8.4./main
with our data from the backup?
EDIT: I fixed the problem with reindexing the table that had the error. Now i'm getting another error:
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: invalid page header in block 1047 of relation base/16390/16398
pg_dump: The command was: COPY public.data_1 (sampleid, feature, value) TO stdout;
SELECT oid, relname FROM pg_class WHERE oid=2663
always showed empty results. The select below gave the correct resultsselect oid, relfilenode, relname from pg_class where relfilenode = 2663
- note the 2663 is from the above example.set zero_damaged_pages = on;
. This way Postgres will skip rows that are corrupted and keep fetching forward instead of aborting query with error. I've had such corruption and recovered over 99% data.ERROR: missing chunk number 0 for toast value 151065 in pg_toast_106852