Juan, en base a todo lo que has planteado y te han contestado me parece lo siguiente:

1) ya te dijeron por ahi que el camino que quieres tomar para lograr tu objetivo es futil, estoy de acuerdo. 2) revisa la permisologia de la base de datos y como ya te inidacron llevala al minimo necesario para que todos y cada uno de los usuarios (Aplicaciones y personas ) puedan hacer su trabajo. ten presente que la permisología siempre debe ser individual y para mejor administración basada en roles. 3) si persisten en tu objetivo entonces te recomiendo lo siguiente, crea unos trigers que chequen la ejecucion de las sentencias que necesitar auditar y/o negar sobre las tablas que requieres vigilar, y asi podras llevar registro de quien ejecuta estas sentencias. Esto te servira con los DML con los DDL tendrias que revisar mas a fondo.


Gracias




Mauricio Rivas
Consultor
Proyecto Optimización, Migración y Soporte Interno de Base de Datos Oracle a Tecnologías Libres (OMS BD ORCL - TIL)
Gerencia de Programa Soluciones de TI
Gerencia General de Proyectos Mayores
Gerencia General de Tecnología y Operaciones
Tel:
Cel: +58-412-392-7447
Email: mriva...@cantv.com.ve

El 26/06/2012 01:39 p.m., Juan escribió:
Alvaro

entre lineas


2012/6/26 Alvaro Herrera <alvhe...@alvh.no-ip.org <mailto:alvhe...@alvh.no-ip.org>>


    Excerpts from Juan's message of mar jun 26 13:16:18 -0400 2012:

    > 2012/6/26 Alvaro Herrera <alvhe...@alvh.no-ip.org
    <mailto:alvhe...@alvh.no-ip.org>>

    > > PITR es sigla de "point in time recovery", que en concreto
    significa que
    > > uno puede recuperar hasta un determinado punto en el tiempo; o
    sea que
    > > si tienes los WAL desde el pasado hasta más allá del momento
    en que se
    > > hizo el DROP o el TRUNCATE, puedes detener el sistema y
    decirle que
    > > empieze a recuperar hasta justo antes del DROP o TRUNCATE.
    > >
    >
    > Como hago eso?
    > Si ya existe, donde lo leo? porque no me queda claro como,
    entonces estuve
    > pensando como hacerlo yo mismo.
    > Yo suponia que el segundo postgres en stand by todo el tiempo
    recibía los
    > wal
    > del "master db" ,

    En el escenario en que yo estoy hablando, no hay un secundario,
    sino un
    área de archivado donde los logs se guardan.  Está documentado acá:

    24.3.3. Recovering Using a Continuous Archive Backup
    ...
    If you want to recover to some previous point in time (say, right
    before
    the junior DBA dropped your main transaction table), just specify the
    required stopping point in recovery.conf. You can specify the stop
    point, known as the "recovery target", either by date/time, named
    restore point or by completion of a specific transaction ID.
    http://www.postgresql.org/docs/9.1/static/continuous-archiving.html


    Creo que si el problema del cual te quieres proteger es alguien que
    comete un error, la solución es no dejar que nadie se meta al servidor
    de producción, sólo las aplicaciones; que las aplicaciones tengan
    permisos mínimos, de manera que puedan hacer poco daño en caso de que
    haya algún bug; y usar mecanismos seguros de manera que no haya
    hoyos de
    inyección de SQL, para evitar los maliciosos (que nunca faltan).

    Tratar de parchar el sistema para impedir que alguien que se cuele
    en tu
    servidor haga daño me parece esfuerzo gastado en la dirección errónea.
    Por ej. digamos que proteges el DROP TABLE y el TRUNCATE pero alguien
    hace un DELETE de toda la tabla ...  O alguien crea un trigger ON
    INSERT
    que invoca TRUNCATE.

    > entonces lo que necesitaba era "negarle" los logs que
    > tienen
    > el DROP o TRUNCATE etc,, pero parece por lo que decis que no es asi.

    Bueno, no.  No existe un mecanismo para decirle a un standby que se
    detenga.  Tampoco existe (que yo sepa) un mecanismo para inspeccionar
    cada registro antes de ejecutarlo, que hipotéticamente serviría para
    detener la recuperación cuando encuentre algo que no le guste (por ej.
    el DROP o TRUNCATE que señalas).


Alvaro, lei el PITR pero pensé que era en caliente o se otra base de datos esta leyendo los logs/WALLS que le tira la base que esta procesando transacciones esta es la base que llamo en stand by , pero parece que no, que solo archivo los logs
y luego los aplico según corresponde.
Para aplicar el tema de detener o detectar estas sentencias de DROP/TRUNCATE etc pensé que leyendo el log de la base maestra podría detectar cuando llegan estas instrucciones frenar la copia y la db en stand by no debería tener estas instrucciones dañinas.
salu2
jmdc

    --
    Álvaro Herrera <alvhe...@alvh.no-ip.org
    <mailto:alvhe...@alvh.no-ip.org>>




Responder a