Me podeis decir cómo puedo saber las sentencias SQL que se han ejecutado en una sesión de Oracle, la sesión puede estar desconectada o conectada, deseo conocerlo en ambas situaciones.
El objetivo es saber, mediante consultas SQL, desde qué ordenador cliente se han ejecutado qué sentencias SQL.
- Versión para impresión
- Inicie sesión o registrese para enviar comentarios
Hola Juan Si consultas el
Subido por Carlos el 31 Enero, 2011 - 10:19
Hola Juan
Si consultas el tema Recopilación de scripts y consultas útiles de Oracle encontrarás la query que te copio para extraer información sobre las sentencias SQL y el usuario que las ha ejecutado. Ten en cuenta que la consulta te saca las sentencias que se encuentran en la Shared SQL Area, dentro de la Shared Pool, es decir, las que se están ejecutando o se han ejecutado y Oracle almacena para optimizar ejecuciones posteriores. Las que menos se utilizan irán desapareciendo de este àrea.
A partir de aquí puedes sacar tanta la información que necesites tanto de v$sqlarea como de all_users. En la documentación online de Oracle tienes todos los campos de estadísticas disponibles para v$sqlarea. Igualmente los copio:
SQL_TEXT
VARCHAR2(1000)
SQL_FULLTEXT
CLOB
SQL_ID
VARCHAR2(13)
SHARABLE_MEM
NUMBER
PERSISTENT_MEM
NUMBER
RUNTIME_MEM
NUMBER
SORTS
NUMBER
VERSION_COUNT
NUMBER
LOADED_VERSIONS
NUMBER
OPEN_VERSIONS
NUMBER
USERS_OPENING
NUMBER
FETCHES
NUMBER
EXECUTIONS
NUMBER
PX_SERVERS_EXECUTIONS
NUMBER
END_OF_FETCH_COUNT
NUMBER
END_OF_FETCH_COUNT
column should be less or equal to the value of theEXECUTIONS
column.USERS_EXECUTING
NUMBER
LOADS
NUMBER
FIRST_LOAD_TIME
VARCHAR2(19)
INVALIDATIONS
NUMBER
PARSE_CALLS
NUMBER
DISK_READS
NUMBER
DIRECT_WRITES
NUMBER
BUFFER_GETS
NUMBER
APPLICATION_WAIT_TIME
NUMBER
CONCURRENCY_WAIT_TIME
NUMBER
CLUSTER_WAIT_TIME
NUMBER
USER_IO_WAIT_TIME
NUMBER
PLSQL_EXEC_TIME
NUMBER
JAVA_EXEC_TIME
NUMBER
ROWS_PROCESSED
NUMBER
COMMAND_TYPE
NUMBER
OPTIMIZER_MODE
VARCHAR2(10)
OPTIMIZER_COST
NUMBER
OPTIMIZER_ENV
RAW(703)
OPTIMIZER_ENV_HASH_VALUE
NUMBER
PARSING_USER_ID
NUMBER
PARSING_SCHEMA_ID
NUMBER
PARSING_SCHEMA_NAME
VARCHAR2(30)
KEPT_VERSIONS
NUMBER
DBMS_SHARED_POOL
packageADDRESS
RAW(4 | 8)
HASH_VALUE
NUMBER
OLD_HASH_VALUE
NUMBER
PLAN_HASH_VALUE
NUMBER
PLAN_HASH_VALUE
to another easily identifies whether or not two plans are the same (rather than comparing the two plans line by line)MODULE
VARCHAR2(64)
DBMS_APPLICATION_INFO
.SET_MODULE
MODULE_HASH
NUMBER
MODULE
columnACTION
VARCHAR2(64)
DBMS_APPLICATION_INFO
.SET_ACTION
ACTION_HASH
NUMBER
ACTION
columnSERIALIZABLE_ABORTS
NUMBER
ORA-08177
errors, totalled over all the child cursorsOUTLINE_CATEGORY
VARCHAR2(64)
CPU_TIME
NUMBER
ELAPSED_TIME
NUMBER
OUTLINE_SID
VARCHAR2(40)
LAST_ACTIVE_CHILD_ADDRESS
RAW(4)
V$SQL
were updated)REMOTE
VARCHAR2(1)
Y
) or not (N
)OBJECT_STATUS
VARCHAR2(19)
VALID
- Valid, authorized without errorsVALID_AUTH_ERROR
- Valid, authorized with authorization errorsVALID_COMPILE_ERROR
- Valid, authorized with compilation errorsVALID_UNAUTH
- Valid, unauthorizedINVALID_UNAUTH
- Invalid, unauthorizedINVALID
- Invalid, unauthorized but keep the timestampLITERAL_HASH_VALUE
NUMBER
CURSOR_SHARING
is used. This is not the hash value for the SQL statement. IfCURSOR_SHARING
is not used, then the value is 0.LAST_LOAD_TIME
DATE
IS_OBSOLETE
VARCHAR2(1)
Y
) or not (N
). This can happen if the number of child cursors is too large.CHILD_LATCH
NUMBER
SQL_PROFILE
VARCHAR2(64)
PROGRAM_ID
NUMBER
PROGRAM_LINE#
NUMBER
EXACT_MATCHING_SIGNATURE
NUMBER
CURSOR_SHARING
parameter is set toEXACT
FORCE_MATCHING_SIGNATURE
NUMBER
CURSOR_SHARING
parameter is set toFORCE
LAST_ACTIVE_TIME
DATE
BIND_DATA
RAW(2000)
Muy útil y claro, gracias por
Subido por martincx (no verificado) el 4 Noviembre, 2014 - 15:43
Muy útil y claro, gracias por la información.
Muchas gracias, me sirvio
Subido por Julie (no verificado) el 23 Noviembre, 2015 - 20:47
Muchas gracias, me sirvio mucho, esta super detallado y claro.
Saludos
Gracias por el articulo Me
Subido por CesarZapata (no verificado) el 10 Agosto, 2016 - 23:28
Gracias por el articulo
Me podrias decir como consultar DML de mas de 8 dias con los mismos datos (o similares) que los mostrados en la consulta?
Gracias
Buenos días. Tengo una tabla
Subido por Alberto Rivas (no verificado) el 7 Diciembre, 2017 - 01:45
Buenos días. Tengo una tabla con 82 columnas en donde 80 de estas tienen por nombre col01, col02, col03,....col80. Realizo un fetch y guardo los valores en vcol01, vcol02,...vcol80. Lo que se requiere es poder identificar que columnas tienen valores y cuáles no. Para esto existen dos alternativas: a)preguntar por medio de if en cada columna si es nula o si tiene valor, la otra alternativa es b) en un while construir la variable vcol concatenado con una secuencia(vcol || secuencia) de tal forma que quede vcol01, vcol02, vcol03.... pero ahora requiero saber el contenido de ésta variable para saber si tiene valor o si es nula.