Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

¿Quién creo/elimino una tabla?

Estas en el tema de ¿Quién creo/elimino una tabla? en el foro de Oracle en Foros del Web. Buenas tardes; Me gustaría saber si es posible saber qué usuario de windows (no de BBDD), ha hecho, por ejemplo, crear o eliminar una tabla, ...
  #1 (permalink)  
Antiguo 21/12/2011, 10:27
 
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
¿Quién creo/elimino una tabla?

Buenas tardes;

Me gustaría saber si es posible saber qué usuario de windows (no de BBDD), ha hecho, por ejemplo, crear o eliminar una tabla, o bien la IP / Nombre de máquina desde la que se ha hecho la operación.

Gracias, un saludo.
  #2 (permalink)  
Antiguo 21/12/2011, 21:05
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ¿Quién creo/elimino una tabla?

Si no estoy mal, a nivel de SO, cualquier operación con la BD se hace a traves del usurio Oracle.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 22/12/2011, 03:04
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: ¿Quién creo/elimino una tabla?

Te puedes crear un trigger a nivel de BBDD para que se dispare cada vez que se hace un DDL, nosotros tenemos uno que es muy efectivo para pillar a la gente que hace cosas que no debe ( DDL’S en producción ) y repartir alguna collejita que otra. Mira a ver si te sirve.

TRIGGER XXXXXXXXX
after create or alter or drop on DATABASE
begin
insert into TABLA_AUDITORIA
VALUES( SUBSTR(ora_sysevent,1,50),
SUBSTR(ora_dict_obj_owner,1,50),
SUBSTR(ora_dict_obj_name,1,50),
SUBSTR(ora_dict_obj_TYPE,1,50),
UPPER(sys_context('USERENV','TERMINAL')),
SYSDATE,
substr(UPPER(sys_context('USERENV','OS_USER')),1,5 0));
END;

En este caso, el ultimo valor del insert es el usuario del sistema operativo ( güindous )
  #4 (permalink)  
Antiguo 26/12/2011, 00:22
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: ¿Quién creo/elimino una tabla?

Como bien plantea jc3000, con un trigger puedes registrar la información de cada sesión y sus operaciones, también tienes la alternativa de activar la auditoria que provee Oracle, ya comentamos un poco en http://www.forosdelweb.com/f100/sabe...5/#post4046337.

En comparación, el trigger tiene ventajas porque es simple de implementar, no necesita configuración de parámetros de la base, y al ser un desarrollo propio lo puedes hacer tan simple o complejo como sea necesario, y desventajas porque, como todo código, es susceptible a errores, además de que solo registra las operaciones que finalicen con éxito, a diferencia de la auditoria que puede registrar las operaciones que finalicen con éxito o error, por ejemplo, una sentencia drop table que falle porque el usuario no tiene privilegios no será registrada por un trigger ya que solo se dispara si la operación finaliza correctamente, pero si con la auditoria que registra la operaciones independientemente del resultado.

Saludos

Etiquetas: tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:55.