Está en la página 1de 2

Como obtener el usuario que ejecut una sentencia SQL a partir del SQL_ID En ocasiones queremos conocer, quin

fue el que ejecut una sentencia "x" en la base de datos y no sabemos como hacerlo. Este es un ejemplo sencillo como averiguarlo. Nota: Cada vez que se reinicia una instancia, se pierde la informacin almacenada en el shared pool, por tanto, si tienes un SQL_ID de das atrs y la base de datos se reinici, no te servir de nada este procedimiento. Tomemos por ejemplo un SQL_ID de una sentencia cualquiera, ejecutada en la base de datos. Esto se hace consultando la vista V_$SQLTEXT: SQL> select sql_id, sql_text from sys.V_$SQLTEXT where rownum <> SQL_ID SQL_TEXT ------------- ------------------------------------------------------ay9t40xq6c00t ODEGA" = :2 AND "COD_UBICACION" = :3 AND "NO_CIA" = :1 Ahora consultando en la vista V_$SQLAREA, podemos obtener la fecha que se ejecut por primera vez: SQL> select USERS_OPENING, FIRST_LOAD_TIME, USERS_EXECUTING, SQL_ID, ELAPSED_TIME, 2 LAST_LOAD_TIME, PROGRAM_ID from sys.V_$SQLAREA 3 where sql_id='ay9t40xq6c00t'; USERS_OPENING FIRST_LOAD_TIME USERS_EXECUTING SQL_ID ELAPSED_TIME LAST_LOAD PROGRAM_ID ------------- ------------------- --------------- ------------- ------------ --------- --------0 2009-10-09/16:14:22 0 ay9t40xq6c00t 0 09-OCT-09 0 Modificando la consulta anterior, podemos obtener tambin de la misma vista, el id, del usuario que ejecut la sentencia:

SQL> select FIRST_LOAD_TIME,SQL_ID,PARSING_USER_ID from sys.V_$SQLAREA 2 where sql_id='ay9t40xq6c00t'; FIRST_LOAD_TIME SQL_ID PARSING_USER_ID ------------------- ------------- --------------2009-10-09/16:14:22 ay9t40xq6c00t 175 Finalmente, consultamos en la tabla all_users, utilizando el ID del usuario y obtenemos el username del usuario que ejecut la sentencia.

SQL> select username, user_id, created from dba_users where user_id='175'; USERNAME USER_ID CREATED ------------------------------ ---------- --------LABORATORIO 175 06-APR-09