2011-08-01 23 views
6

Estoy usando psql 8.1.18 en Glassfishserver. Tengo una consulta como esta:ERROR: no se pudo leer el bloque 4707 de la relación 1663/16384/16564: éxito

select ip,round((select sum(t1.size) from table t1)) 
from table 
where date > '2011.07.29' 
and date < '2011.07.30' 
and ip = '255.255.255.255' 
group by ip; 

Cuando funciono con esta pregunta me dio este mensaje:

ERROR: could not read block 4707 of relation 1663/16384/16564: Success 

Sin embargo esta consulta funciona bien:

select ip,round(sum(size)/175) 
from table 
where date > '2011.07.29' 
and l_date < '2011.07.30' 
and ip = '255.255.255.255' 
group by ip; 

yo creo que puede ser una error de base de datos y necesito restaurar la tabla de la copia de seguridad, tal vez. Pero primero necesito aprender dónde existen estos datos corruptos. ¿Alguien sabe cómo encontrar la relación 1663/16384/16564? O bloque 4707?

EDIT: yo probamos este código:

select relname , relfilenode from pg_class where relname in ('1663','16384','16564'); 

pero vuelve:

relname | relfilenode 
---------+------------- 
(0 rows) 
+0

que debe ser algo así como: seleccione nombre_rel, relfilenode de pg_class donde nombre_rel en ('1663', '16384', '16564'); pero aún no se pudo encontrar el código exacto – lamostreta

Respuesta

10

Parece que hay bloques dañados en un talbe o un índice.

Para encontrar los datos incorrectos, puede consultar las vistas de pg_class;

seleccione oid, relname de pg_class donde oid = 1663 u oid = 16564;

acaba de ver cuál es el resultado!

SI el resultado es un índice, solo vuelva a crear el índice dañado;

si el resultado es una tabla, lo que significa que hay algunos datos de la tabla está dañado, puede establecer el parámetro "zero_damaged_pages" para a por pasar esos datos defectuosos o restaurar la tabla de su recientemente ¡conjunto de respaldo!

más información acerca de los "parámetros" zero_damaged_pages http://www.postgresql.org/docs/9.0/static/runtime-config-developer.html

+0

El resultado es una tabla. Trataré de restaurar la mesa. Gracias por la respuesta perfecta! – lamostreta

Cuestiones relacionadas