Re: ERROR: invalid memory alloc request size

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Wilson del rosario <wilson1901(at)gmail(dot)com>
Cc: Manuel Aller <manuel(dot)aller(at)infracoop(dot)com(dot)ar>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: ERROR: invalid memory alloc request size
Date: 2014-07-21 16:18:36
Message-ID: 20140721161836.GQ11811@eldon.alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Wilson del rosario escribió:
> Efectivamente Manuel, cree la función con la tabla a la cual me estaba
> apareciendo el error, encontré información que no debía estar en esa tabla,
> elimine los registros, le pase un vacuum a la tabla y volví a ejecutar el
> pg_dump y esta vez si dio resultado.
>
> Aunque para que lo tengan en cuenta, después de solucionar el error,
> apareció otro que no se si estará relacionado o no :
>
> WARNING: invalid page header in block 94217 of relation base/16384/202367;
> zeroing out page
> ERROR: could not access status of transaction 2097195
> DETAIL: Could not open file "pg_clog/0002": No such file or directory.
>
> Lo cual solucioné de la siguiente forma:
> cat 00AD | tr 'U' '0' > 0002
> chmod 600 0002
>
> Este error ya me había sucedido antes y googleando encontre la solución,
> pero no sé porque pasa, alguna idea del porque pasa esto ?

Hiih ..

1. estás ejecutando con zero_damaged_pages=on. Esto es peligroso, puede
llevarte a perder datos. En el extracto de log que muestras arriba, el
WARNING corresponde a una página que tenía una cabecera dañada, y como
tienes ese parámetro activo, alegremente el servidor lo borró todo. No
hay cómo saber qué es lo que había ahí antes. Recomiendo desactivar.

2. el "could not access status of transaction" puede ser una cabecera de
tupla corrupta o bien puede ser que una tupla muy vieja sobrevivió a un
evento al cual no debería. Quizás ahora tus datos tienen una
inconsistencia por existir tuplas que no deberían (por ej. quizás tengas
llaves primarias duplicadas, o un valor faltante referido por una FK
desde otra tabla). Esta "solución" que aplicaste no es necesariamente
lo más apropiado, y de todas formas está mal porque el '0' no debería
ser un string con un cero (hex 0x30, octal \060) sino un valor de byte
cero (hex 0x00, octal \000).

Dados los múltiples problemas que se te han presentado yo sospecharía
mucho que tu hardware está respondiendo mal. ¿Quizás tuviste una caída
recientemente y el caché de escritura de los discos está activo? ¿Has
tenido memtest funcionando en tu máquina durante algún tiempo? ¿La CPU
quizás se recalienta con el exceso de carga y responde tonteras?

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Felipe Araoz Ramos 2014-07-21 17:29:01 Actualizar registros en una tabla
Previous Message Wilson del rosario 2014-07-21 15:18:31 Re: ERROR: invalid memory alloc request size