Re: Cerrar conexiones activas de otros usuarios

From: "Felipe E(dot) Barousse" Boué <fbarousse(at)piensa(dot)com>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Cerrar conexiones activas de otros usuarios
Date: 2007-09-05 03:52:28
Message-ID: 1188964348.1950.50.camel@monster.piensa.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Amigos:

Correcto, como dice Alvaro, el comando: select pg_cancel_backend(pid)
en efecto "mata" una orden en ejecución en ese momento, en ejecución e
identificada por el proceso "pid"; según fue asignado por el sistema
operativo.

Ahora bien, el post original al que contesté decía:

> > SELECT
> > pg_stat_activity.*,(regexp_replace(text("client_addr"),'/.*','')||':'||text('client_port'))
> > as addr FROM pg_stat_activity
> >
> > el refresco de esta consulta la hace cada cierto tiempo, la
> > sentencia q
> > envia para "matar" la actividad no se puede ver ya q el EMS es
> > cerrado como
> > todo sistema privativo.

Curiosamente "la orden en ejecución en ese momento" bien cae dentro de
querer "matar la actividad" (la actividad ejecutada en ese momento). Un
ejemplo de esto podría ser un bloque de sentencias ciclado o, atorado,
en un loop infinito. Con un comando select pg_cancel_backend(pid) bien
se puede "matar esta actividad" descontrolada. El "EMS" bien podría
estar usando el comando select pg_cancel_backend(pid)

Un saludo.
--
Ing. Felipe Barousse Boué.
Piensa Technologies - Bufete Consultor de Mexico
www.piensa.com
"Sistemas de Información y Tecnología para la Cadena de Suministro"

On Tue, 2007-09-04 at 22:08 -0400, Alvaro Herrera wrote:
> Felipe E. Barousse Boué escribió:
>
> > Si quiero matar al proceso 6689 (que está como IDLE en este ejemplo),
> > puedo ejecutar desde psql el comando:
> >
> > select pg_cancel_backend(6689);
>
> Con eso puedes cancelar la orden actualmente en ejecucion (y abortar la
> transaccion en curso), pero no puedes matar (cerrar, terminar) el
> proceso mismo. La conexion a la BD sigue establecida, y por lo tanto no
> puedes hacer cosas como DROP DATABASE.
>
> > Mas información al respecto en:
> >
> > http://www.postgresql.org/docs/8.2/interactive/functions-admin.html#FUNCTIONS-ADMIN-SIGNAL-TABLE
>
> pg_cancel_backend sends a query cancel (SIGINT) signal to a
> backend process identified by process ID. The process ID of an
> active backend can be found from the procpid column in the
> pg_stat_activity view, or by listing the postgres processes on
> the server with ps.
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message usuario anonimo 2007-09-05 04:23:30 Re: Linux Red Hat 9 o Fedora 6
Previous Message Ramón Alberto Bruening González 2007-09-05 03:45:52 RE: Linux Red Hat 9 o Fedora 6