capturar el nombre de usuario que hace un insert

Iniciado por d91, 16 Septiembre 2015, 15:01 PM

0 Miembros y 1 Visitante están viendo este tema.

d91

hola a todos, estoy trabajando un proyecto en Oracle relacionado a transacciones, pero me piden que al realizar un insert, delete, update, guarde en una bitacora el nombre de usuario que lo realizo, tipo de operacion  y  la tabla que se realizo, pero no se si se hace con un select  a algunas de las tablas V$ de oracle o es al sistema en si, para capturar y meterlo en un cursor, agradezco su orientacion

0roch1

Utiliza Triggers.

Puedes crear una tabla "bitacora" y llevar el registro de tus movimientos (insert, update, delete) realizados en las diferentes tablas mediante el uso de Triggers (disparadores)

1. Investiga cómo funcionan.
2. Intenta realizarlo.
3. Si tienes dudas o problemas comenta.


d91

si, lo de los log's ya esta, y mediante los trigger puedo saber sobre si es update, insert o delete, de lo que he investigado encontre una query, pero yo cree un usuario y me conecte, probe la query pero las credenciales que me salen son las de mi maquina,  y lo que necesito son las credenciales del usuario para deducir responsabilidades
Código (sql) [Seleccionar]
select
rtrim(upper(sys_context('USERENV','OS_USER'))) username,
rtrim(upper(sys_context('USERENV','TERMINAL'))) userterminal
from dual

0roch1

Intenta con lo siguiente.

Código (sql) [Seleccionar]

SELECT sys_context('USERENV', 'SESSION_USER') FROM dual;


Código (sql) [Seleccionar]

SELECT sys_context('USERENV', 'SESSION_USERID') FROM dual;

d91

logre solucionar concatenando directamente
Código (sql) [Seleccionar]
user