Error: invalid page in block 75 of relation

Hola, cómo están? hoy quise hacer un pg_dump de la base del guarani3 y me apareció esto:

ERROR:  invalid page in block 75 of relation base/16388/60838

Primera vez que veo algo así… alguna idea de como solventar este dilema?

Mil gracias desde ya! saludos!

Hola RIcardo

en primer lugar, ese error deberia estar asociado a una tabla o indice que esta mal, tiene alguna pagina con corrupcion. Por lo tanto, en cuanto puedas trata de recrear la base completa .

otra cosa que te sugiero es tratar de indentificar en que tabla esta el error, de repente podes mandar la salida del pg_dump a un archivo, y cuanto cancele fijarte que tabla estaba procesando en ese momento

Existe un parametro en postgres que le indica que cuando encuentre un error de corrupcion, no corte, sino que de un warning y siga procesando, ese parametro es: zero_damaged_pages. Proba seteandolo en ON a ver si el pg_dump termina. OJO que este parametro ignora la pagina con errores, por lo tanto el pg_dump no va a tener una version completa de la tabla!!! Aqui abajo te pongo la descripcion del parametro

zero_damaged_pages (boolean)
Detection of a damaged page header normally causes PostgreSQL to report an error, aborting the current transaction. Setting zero_damaged_pages to on causes the system to instead report a warning, zero out the damaged page in memory, and continue processing. This behavior will destroy data, namely all the rows on the damaged page. However, it does allow you to get past the error and retrieve rows from any undamaged pages that might be present in the table. It is useful for recovering data if corruption has occurred due to a hardware or software error. You should generally not set this on until you have given up hope of recovering data from the damaged pages of a table. Zeroed-out pages are not forced to disk so it is recommended to recreate the table or the index before turning this parameter off again. The default setting is off, and it can only be changed by a superuser.

Hola Ignacio, cómo estás? tanto tiempo! Si se de que tabla se trata, es negocio.his_datos_actividades. Realmente es la primera vez que la veo, pues no sabia que existía una que empiece con his… debe ser de historia académica del alumno. Pero en el sistema no hay ningún error. En fin, como puedo hacer para solucionar eso. Me gustaría que quede bien. Se trata de la base de producción.

Saludos!

Hola Ricardo
Para que esa tabla quede bien, habria que recrearla desde 0… y volver a cargarla.

El asunto es si podes descargar sus datos previamente. Otra complicacion adicional puede ser el manejo de las claves foraneas pudiera tener durante el proceso de recreacion

saludos

Hola, Ya solucione el problema, para el que tenga el mismo error, hice lo siguiente:

me conecte por psql al servidor y me conecte al esquema
una vez ahí y sabiendo que tabla es la del problema hay que setear el parametro zero_damaged_pages en on

set zero_damaged_pages = on;

y por últmo hacer un vaccum full de la tabla:

vacuum full his_datos_actividades;

con eso se solucione el error, no se si justo el problema que tenía era soluble, si no es soluble supongo que tendrán que eliminar la tabla y volver a crearla.

Hola Ricardo,

que bueno que te sirvio haber usado el parametro zero_damaged_pages

saludos
Ignacio

Las tablas que comienzan con his_ se refiere a tablas historicas que van registrando movimientos de la tabla real.
En este caso la tabla .his_datos_actividades, es una tabla historica de la tabla de datos censales mdp_datos_actividades. Esta tabla registra información relacionada con teconlogía, deportes e idiomas del alumno.