| ||||
Re: Como hacer una trigger de auditoría en ORACLE para tener el usuario usa "USER", complementando investigate sobre la sentencia "audit" te permite hacer lo que necesitas y mas
__________________ |
| |||
Respuesta: Como hacer una trigger de auditoría en ORACLE Hola, podrías hacer un trigger que guarde el SqlText, de esta forma: CREATE OR REPLACE TRIGGER TRIG_PAGO AFTER DELETE OR INSERT OR UPDATE ON PAGO -- TABLA A AUDITAR REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW DECLARE SQ VARCHAR(255); FC VARCHAR(255); BEGIN IF INSERTING THEN select distinct vs.sql_text, to_char(to_date(vs.first_load_time,'YYYY-MM-DD/HH24:MI:SS'),'MM/DD HH24:MI:SS') first_load_time into SQ,FC from v$sqlarea vs, all_users au where (parsing_user_id != 0) and (au.user_id(+)=vs.parsing_user_id) and au.username=user and first_load_time=(select max(first_load_time) from v$sqlarea vs ,all_users au where (parsing_user_id != 0) and (au.user_id(+)=vs.parsing_user_id) and au.username=user and (executions >= 1)) and (executions >= 1); INSERT INTO AUD_PAGO --TABLA QUE GUARDA LA AUDITORIA VALUES (SQ,USER,SYSDATE,USERENV('TERMINAL')); END IF; END; |
| |||
Respuesta: Como hacer una trigger de auditoría en ORACLE También puedes crear uno que guarde todo el registro: CREATE OR REPLACE TRIGGER NOMBRE_TRIGGER BEFORE INSERT ON TABLA_A_AUDITAR REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN IF INSERTING THEN INSERT INTO TABLA_AUDITORIA (AUD_USER, AUD_FECHA, AUD_TIPO, AUD_TERMINAL) VALUES (USER, SYSDATE, 'INSERT', USERENV('TERMINAL')); END IF; END; Espero que te sirva. |
| ||||
Respuesta: Como hacer una trigger de auditoría en ORACLE Cita: si mi teoria no me falla
Iniciado por Angubas También puedes crear uno que guarde todo el registro: CREATE OR REPLACE TRIGGER NOMBRE_TRIGGER BEFORE INSERT ON TABLA_A_AUDITAR REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN IF INSERTING THEN INSERT INTO TABLA_AUDITORIA (AUD_USER, AUD_FECHA, AUD_TIPO, AUD_TERMINAL) VALUES (USER, SYSDATE, 'INSERT', USERENV('TERMINAL')); END IF; END; Espero que te sirva. si estas creando un trigguer BEFORE INSERT no tendrias la necesidad de identificar que transaccion se esta llevando a cabo IF INSERTING THEN siempre caeria ese if, por lo tanto es innecesario por otro lado no tengo la informacion fresca para confirmar si un BEFORE INSERT se dispara despues de validaciones internas de oracle, como violar llaves primarias, foraneas, etc pero yo usaria un AFTER INSERT para esto
__________________ |
| |||
Respuesta: Como hacer una trigger de auditoría en ORACLE Me parece ( aunque no estoy seguro ) que da igual si es BEFORE o es AFTER. Primero son las validaciones internas y luego la logica de programación. |
| |||
Respuesta: Como hacer una trigger de auditoría en ORACLE Hola: -- Usuario que esta conectado a la sesión del equipo select rtrim(upper(sys_context('USERENV','OS_USER'))) username, rtrim(upper(sys_context('USERENV','TERMINAL'))) userterminal from dual Saludos, |
| |||
Respuesta: Como hacer una trigger de auditoría en ORACLE Cita: Tienes toda la razon, solo queria mostrarle que podia hacerlo para Update o Delete. Gracias.
Iniciado por kikolice si mi teoria no me falla si estas creando un trigguer BEFORE INSERT no tendrias la necesidad de identificar que transaccion se esta llevando a cabo IF INSERTING THEN siempre caeria ese if, por lo tanto es innecesario por otro lado no tengo la informacion fresca para confirmar si un BEFORE INSERT se dispara despues de validaciones internas de oracle, como violar llaves primarias, foraneas, etc pero yo usaria un AFTER INSERT para esto |