jueves, 13 de junio de 2013

Capturar el nombre del programa u objeto en PL/SQL

He tenido la necesidad de colocar diferentes auditorias en los programas de la base de datos que administro, normalmente este proceso lo hacia de forma manual, es decir, en la tabla de auditoria colocaba un campo para guardar el nombre del programa u objeto que realiza algún cambio, actualización, inserción, etc., sin embargo, he tenido que automatizar el proceso, ya que estoy usando triggers (perfectos para auditorias) y a estos no les puedo enviar el nombre del objeto. Para esto entonces se utiliza el siguiente comando:

 DBMS_APPLICATION_INFO.READ_MODULE



DBMS_APPLICATION_INFO es un comando que hace parte de la librería DBMS de Oracle, podríamos decir que nos sirve para poner una variable global por sesión con la información que queramos. Al usar algunos programas administradores de bases de datos, como el TOAD o el SqlDeveloper, estos llenan dicha variable automáticamente. 

El siguiente bloque anónimo muestra el uso del comando: 

Declare

  vmodulo varchar2(50);
  vaction  varchar2(50); 

 Begin
  
  DBMS_APPLICATION_INFO.READ_MODULE(vmodulo, vaction);

 End;

Si por ejemplo realizáramos una actualización en una tabla desde un programa como el TOAD y dicha tabla tuviera asociado un trigger para guardar los cambios realizados, con el uso de este comando, la variable vmodulo se cargaría con el nombre del programa, en este caso TOAD 10.6.1.3.

En el caso que quisiéramos "llenar" las variables, para auditar los cambios que realizan los clientes, ya sea desde una página web, un Forms de Oracle, un procedimiento o una función, etc., es necesario usar el siguiente comando: 

 DBMS_APPLICATION_INFO.SET_MODULE(module_name => 'PaginaWeb', 
                                                                                  action_name => 'ActualizacionEmpleado');

Luego de "llenar las variables", podemos proceder a usar el comando DBMS_APPLICATION_INFO.READ_MODULE para capturar la información del módulo y de la acción, obtendríamos  en este caso la información de; 'PaginaWeb' y 'ActualizacionEmpleado'.

No hay comentarios:

Publicar un comentario