Re: Base corrompida

From: Benjamin Roberto Alvarado Rivera <balvarado(at)linuxmail(dot)org>
To: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Base corrompida
Date: 2004-08-20 17:17:04
Message-ID: 1093022224.3201.68.camel@6-allhosts
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Fri, 2004-08-20 at 11:36, Alvaro Herrera wrote:
> On Fri, Aug 20, 2004 at 09:37:36AM -0500, Benjamin Roberto Alvarado Rivera wrote:
>
> > Esto fue a raíz de que necesitaba que se eliminaran tablas temporales,
> > que creadas por una conexión odbc desde win a PostgreSQL, pero una
> > maquina se reinicio (que raro) y la tabla temporal se quedo en la base
> > de datos, y y como no estaba en la empresa (esto paso a las 3am), por
> > medio asistencia telefónica a un compañero, le fui indicando como borrar
> > la tabla temporal, pero no se si estaba mas dormido o que despierto no
> > la encontraba. Así que me decidí por reiniciar la base de datos.
>
> Francamente, hace tiempo que no veia una situacion tan "matar una mosca
> con un mortero". Por que no bastaba simplemente terminar el proceso
> ODBC en el lado Win? Por favor explica como fue que intentaste "borrar
> la tabla temporal".

Como que "matar una mosca con un mortero"?

El programa que desarrolle en VB, se conecta a postgresql a través del
psqlodbc, el programa entre otras cosas, crea una tabla temporal para
guardar algunos datos, de unos errores que encuentra sobre cierta
información que después serán impresos, lo hice con tablas temporales
para no mezclar información de un usuario a otro, y al cerrar la
conexión, las tablas temporales son eliminadas automáticamente por
postgresql. El problema surgió a raíz de que una maquina de bloqueo, por
otro programa, no se cual, y se tuvo que reiniciar la maquina, estando
el programa conectado a postgresql, pero la tabla temporal se quedo en
postgresql, al no haberse cerrado adecuadamente la conexión.

Al volver abrir el programa en VB, trabajo normal, creo la otra tabla
temporal, no se, pg_temp3.tablanombremaquina, por ejemplo, pero ya
existe una pg_temp1.tablanombremaquina, que se quedo en la base de
datos, y el programa al trabajar con las tablas temporales, tiene que
ponerle que esquema schemaname.tablaname, de lo contrario no funciona,
indica que la tabla no existe.

Pero como a la hora de crear una tabla temporal, no se!, cual es el
schema de esa tabla, hasta que ha sido creada, hago un query a pg_tables
y busco donde estan las tablas para esa maquina, pero como ya existe
otra, me devuelve 2 esquemas, y el programa en este momento no sabe
distinguir entre un esquema y otro, para usar el esquema que le
pertenece correcto, ya esto trabajando en eso, para evitar esto.

Y ayer en la madrugada, les marcaba un error por intentar abrir una
tabla que no esta dentro del esquema que le pertenece.

Y la persona a la que le estaba dando instrucciones por teléfono, para
que eliminara manualmente la tabla y el esquema que no fueron eliminados
automáticamente, al no haberse cerrado adecuadamente la conexión. Y
aunado a que simplemente nunca ha usado la linea de comandos, y pues no
se si no supo, estaba dormido o que, no pudo eliminar la tabla temporal
y el esquema, pero continuaban en la base de datos.

Y pues, le dije que reiniciara la base de datos, al darle restar al
scrip de debian para postgresql, no inicio bien la base de datos, fue
hasta que se le dio stop y después star, cuando pudieron volver a
trabajar, pero una hora mas adelante, me vuelven a llamar por que en
otra sección del programa, estaba generando el error que les comento.

Y pues la base de datos se corrompió, bueno solo algunas tablas.

asi fue como sucedio todo.

>
> > (esta en debian, duda: me convendría mas
> > tener el postgresql en su forma normal, desde un tar.gz, compilarlo y
> > tenerlo todo junto o de la forma que los instalan los deb?)
>
> No.
No? que?, como los instalan los deb? o como desde el codigo, compilarlo
, instalarlo, etc?

>
> > En Linux en el psql, me decía Could not access status of transaction
> > 959346, al darle select * from tabla;
>
> Este es un error serio y me gustaria saber como hiciste para llegar a
> esta situacion.
Supongo que pudo haberce ocacionado, por el cierre o inicio inapropiado
de la base de datos, no se?
>
> > Como podría recuperar la información de las tablas que no puede acceder?
>
> Siempre debes tener un respaldo reciente de tus datos. Para eso esta
> pg_dump. Ejecutarlo cada noche no hace dan~o.

con el cron supongo?

Gracias

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2004-08-20 17:35:30 Re: Base corrompida
Previous Message Alvaro Herrera 2004-08-20 16:40:52 Re: Bloqueos Registros