Alvaro Herrera escribió:
Oswaldo Hernández escribió:
Hola a todos,
Hace un rato, un compañero estaba ejecutando unas consultas sobre
una base de datos access con tablas vinculadas a posgres-8.3
mediante odbc. De pronto se ha roto la conexion y no podia volver a
conectar.
En el log de postgres aparece lo siguiente:
2009-12-18 16:51:05 CET ERROR: no existe la relación «msysconf»
2009-12-18 16:51:05 CET SENTENCIA: SELECT Config, nValue FROM MSysConf
2009-12-18 17:15:18 CET LOG: proceso de servidor (PID 24170) fue
terminado por una señal 11: Segmentation fault
2009-12-18 17:15:18 CET LOG: terminando todos los otros procesos de servidor
activos
A partir de ese momento cada intento de conexión generaba en el log:
2009-12-18 17:16:49 CET FATAL: el sistema de base de datos está en modo de
recuperación
Hola, normalmente cuando el sistema se cae, al volver a levantarse queda
en modo de recuperación. Esto es normal, y después del tiempo que tarde
la recuperación se supone que debería volver a aceptar conexiones. El
restart debería ser innecesario. Si lo bajas y lo vuelves a subir, la
recuperación va a continuar desde el punto en que quedó.
Ahora, la verdad es que en varios casos he visto que a veces parece
quedarse "pegado" más de lo esperable en modo de recuperación, y
extrañamente si uno lo baja y lo vuelve a subir termina más rápido.
Quizás se deba a algún bug en el modo de recuperación.
¿Cuánto es tu checkpoint_segments y checkpoint_timeout? (Estos
parámetros determinan qué tanto trabajo tiene que hacer el servidor para
completar la recuperación). Si los valores no son muy altos, la
recuperación debería ser rápida. 15 minutos me parece exagerado.
checkpoint_segments y checkpoint_timeout estan comentados en la configuración, por lo que imagino
que toman los valores predeterminados.
Otra cosa: normalmente el sistema no debería caerse. Sería bueno
investigar qué ocasionó el "segmentation fault", para evitar que vuelva
a suceder. ¿Tienes algún módulo contrib cargado, o quizás algún módulo
externo?
Lo unico que hay cargado es pl/Python, ningun otro modulo, y en este momento ninguna de las
operaciones que se realizaban lo utilizaba.
Es un sistema que esta en fase de implantacion y necesitabamos hacer una operaciones combinando
datos de access com postgres. Las consultas eran algo complejas, se ejecutaban desde access e
involucraban simultáneamente tablas y vistas de access con tablas y vistas vinculadas a postgres.
Despues del restart las mismas consultas han funcionado sin problemas.
Desgraciadamente no tenia activado el log_statement para ver que fue lo ultimo que se intento
ejecutar. Lo he activado y tambien he subido log_min_messages para poder hacer un siguimiento mejor
si vuelve a suceder.
Gracias.
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
--
TIP 4: No hagas 'kill -9' a postmaster