La Red de Conocimientos Pedagógicos - Currículum vitae - Información del historial de sesiones

Información del historial de sesiones

¿Cómo consultar las declaraciones SQL históricas ejecutadas por una sesión y cómo saber qué declaraciones SQL fueron ejecutadas por una sesión? (La situación actual es más fácil de verificar, pero ¿qué pasa con la histórica? Cómo restaurar el escenario de ejecución de SQL: relación de transacción, secuencia de ejecución, SQL único o procedimiento almacenado) Método 1: consultar v$sqltext, v$sqlarea y v $sqlstats ver seleccione * del área V $ SQL donde t . analiza _ esquema _ nombre en (' esquema ') orden por t . último _ tiempo activo desc; grupo compartido y su índice de tiempo Es su historial de análisis, porque es posible que la consulta no refleje completamente el historial de ejecución debido a problemas de uso compartido. El tiempo de retención de información de #v$sqlstats es mayor que el de v$sql, v$sqltext y v$sqlarea. Incluso si SQL se ha intercambiado fuera del grupo compartido, las tablas v$active_session_history y V$sqlarea # V$active_session_history en el método 2 solo muestran datos, una vez por segundo, incluidos solo los puntos de muestreo en la CPU o que no están inactivos en ese segundo. estadísticas de la sesión. Por lo tanto, puede estar incompleto y se ignorarán algunos SQL con un tiempo de ejecución corto. Esta vista no puede restaurar el historial completo de la sesión. # Hay sentencias SQL ejecutadas en el área v$sql, pero no hay información relacionada con la sesión. v$session solo está asociado con el SQL actual, por lo que no tiene ningún efecto. Vista de vista: dba_hist_sqlstats, dba_hist_sqltext (datos históricos).

¿Cómo encontrar el historial de la sesión 1 de Oracle? Vea los 100 principales SQL select * de (seleccione análisis _ usuario _ id, ejecuciones, ordenaciones, comando _ tipo, disco _ lecturas, SQL _ texto del área v$SQL orden por disco _ lecturas desc) donde rownum

¿Cómo ver el historial de ejecución de SQL de un usuario? Consulta las vistas v$sqltext, v$sqlarea y v$sqlstats.

seleccione * de v$sqlarea donde t . PASING _ SCHEMA _ NAME en orden (' SCHEMA ') por t ÚLTIMO _ TIEMPO ACTIVO desc

#For v$ sqltext. y v$sqlarea, vea el SQL en el grupo compartido, su índice de tiempo es su historial de análisis, porque es posible que la consulta no refleje completamente el historial de ejecución debido a problemas de uso compartido.

El tiempo de retención de información de #v$sqlstats es mayor que el de v$sql, v$sqltext y v$sqlarea. Incluso si el SQL se ha intercambiado fuera del grupo compartido, aún se puede encontrar.

Método 2

Combine v$active_session_history y v$sqlarea.

#v$active_session_history Esta tabla solo muestra datos, medidos en segundos, y solo incluye estadísticas de sesión donde el punto de muestreo está en la CPU o no está inactivo en ese segundo. Por lo tanto, puede estar incompleto y se ignorarán algunos SQL con un tiempo de ejecución corto. Esta vista no puede restaurar el historial completo de la sesión.

# Hay sentencias SQL ejecutadas en el área v$sql, pero no hay información relacionada con la sesión. v$session solo está asociado con el SQL actual, por lo que no tiene ningún efecto.

Ver vista: dba_hist_sqlstats, dba_hist_sqltext (datos históricos)

¿Cómo ver el historial de ejecución de SQL del usuario? Método 1: Consultar v$sqltext, v$sqlarea, v$sqlstats ver seleccionar * del área V $ SQL donde t . analizar _ esquema _ nombre en (' esquema ') orden por t . v$sqltext y v$sqlarea, ven el SQL en el grupo compartido, su índice de tiempo es su historial de análisis, porque es posible que la consulta no refleje completamente el historial de ejecución debido a problemas de uso compartido. El tiempo de retención de información de #v$sqlstats es mayor que el de v$sql, v$sqltext y v$sqlarea. Incluso si sql se ha intercambiado fuera del grupo compartido, aún se puede encontrar. Método 2: Las tablas v$active_session_history y V$SQLArea # V$Active_session_History solo muestran datos, en unidades de segundos, y solo incluyen estadísticas de sesión donde el punto de muestreo está en la CPU o no está inactivo durante ese segundo. Por lo tanto, puede estar incompleto y se ignorarán algunos SQL con un tiempo de ejecución corto. Esta vista no puede restaurar el historial completo de la sesión. # Hay sentencias SQL ejecutadas en el área v$sql, pero no hay información relacionada con la sesión. v$session solo está asociado con el SQL actual, por lo que no tiene ningún efecto. Ver vista: dba_hist_sqlstats, dba_hist_sqltext (datos históricos) Método 3: Seguimiento de sesión SQL > Ejecutar DBMS_session. session_trace_enable (verdadero, verdadero); SQL>select count(*)from DBA_hist_SQL text;COUNT(*)-478 SQL>select * from V$sesstat donde rownum = 1;SID stats #value---134 0 1 SQL> Ejecutar DBMS_session.session_trace_disable; exitosamente. $ CD $ ORACLE_HOME/admin/test/Udump $ ls-lrt $ tkprof test_ora_2195620. Informe TRC. txtsys = no explicar = no agregado = sí $more informe. Este archivo incluye información de ejecución, planes de ejecución e información estadística para todas las declaraciones SQL entre el inicio y el final del seguimiento. Método 4: Logminer solo contiene declaraciones DML y DDL y no puede consultar declaraciones de selección. Además, es necesario activar el registro complementario, que no está activado de forma predeterminada. conn/assys DBA -Instalar Logminer SQL>@$ORACLE_HOME/RDBMS/admin/DBMS lmd.SQL;SQL>@$ORACLE_HOME/RDBMS/admin/dbmslm.SQL;SQL>@$ORACLE_HOME /RDBMS/admin/DBMS SQL; & gt@ $ ORACLE _ HOME/RDBMS/admin/PRV tlm . - Abrir una base de datos de modificación de registros para agregar datos de registro complementarios - Simular la conexión de operación DML p_chenming/.

SQL & gtselect * de test2 SQL & gt insertar en test2 value(7, 77); SQL & gt MIT; cortar y archivar SQL > cambiar el archivo de registro de cambio de sistema & gt de v$archived_log Seleccionar nombre, destino; id, número de subproceso, número de secuencia en - el último es un archivo nuevo - cree un nuevo logminer SQL > Ejecute DBMS_log mnr .add_log file(nombre de archivo de registro = >/Oracle/archive _ 10g/test/test _ 1 _ 138 _ 786808434 .arc ', opciones = >DBMS _ log mnr nuevo); - Iniciar minerSQL > ejecutable DBMS _ log mnr . columna sql_redo formato a50 SQL>select nombre de usuario, s, marca de tiempo, SQL_redo de v$log mnr_contents donde table _ nombre = 'TEST2SQL>select nombre de usuario,s,marca de tiempo,SQL_redo de v$logmnr_contents donde nombre de usuario='P_陈明' -Cerrar MINERSQL >execution DBMS _log mnr. end_log mnr; -Cerrar el registro auxiliar SQL y eliminar datos de registro complementarios;

¿Cómo ver el historial de ejecución de PL/SQL? Además del método de vista ctrl+e de PL/SQL, también existen los siguientes métodos: Método 1: consultar las vistas de V$SQL, V$SQLitext, v$sqlarea y V$SQLASTATS* desde v$sql rea, donde t. parsing_schema_name en orden ('esquema') por t.último_tiempo_activo desc. #Para v$sqltext y v$sqlarea, vea el SQL en el grupo compartido. Su índice de tiempo es su historial de análisis. Debido a problemas de uso compartido, es posible que la consulta no refleje completamente el historial de ejecución. #v$sqlstats refleja las estadísticas de ejecución de SQL del inicio de la instancia. La declaración SQL en sí es más completa que v$sqltext/area, porque es posible que este último no pueda intercambiar el caché. Método 2: Las tablas v$active_session_history y V$SQLArea # V$Active_session_History solo muestran datos, en unidades de segundos, y solo incluyen estadísticas de sesión donde el punto de muestreo está en la CPU o no está inactivo durante ese segundo. Por lo tanto, puede estar incompleto y se ignorarán algunos SQL con un tiempo de ejecución corto. Esta vista no puede restaurar el historial completo de la sesión. # Hay sentencias SQL ejecutadas en el área v$sql, pero no hay información relacionada con la sesión. v$session solo está asociado con el SQL actual, por lo que no tiene ningún efecto. Desde v$sqlstat, puede ver toda la información SQL iniciada por la base de datos, pero no existe una relación cronológica, ni información del usuario, solo el número de ejecuciones y estadísticas de recursos. Desde dba_hist_sqlstat, podemos ver las estadísticas de SQL entre instantáneas de AWR. En comparación con las estadísticas de v$SQL, no se ve afectado por los reinicios de la instancia porque la información en las estadísticas de v$SQL se borra después de reiniciar la instancia.

Método 3: Seguimiento de sesión y gtExecute DBMS_session.session_trace_enable (verdadero, verdadero); el proceso PL/SQL se completó correctamente. SQL>select count(*)from DBA_hist_SQL text;COUNT(*)-478 SQL>select * from V$sesstat donde rownum = 1;SID stats #value---134 0 1 SQL> Ejecutar DBMS_session.session_trace_disable; exitosamente. $ CD $ ORACLE_HOME/admin/test/Udump $ ls -LRT $ tkprof test_ora_2195620. Informe TRC txtsys = no explicar = no agregado = sí $more informe: este archivo incluye información de ejecución para todas las declaraciones SQL entre el inicio y la detención del seguimiento. Plan de ejecución y método estadístico 4: logminer solo contiene declaraciones DML y DDL y no puede. Además, es necesario activar el registro complementario, que no está activado de forma predeterminada. conn/assys DBA -Instalar Logminer SQL>@$ORACLE_HOME/RDBMS/admin/DBMS lmd.SQL;SQL>@$ORACLE_HOME/RDBMS/admin/dbmslm.SQL;SQL>@$ORACLE_HOME /RDBMS/admin/DBMS SQL; & gt@ $ ORACLE _ HOME/RDBMS/admin/PRV tlm . - Abrir una base de datos de modificación de registros para agregar datos de registro complementarios - Simular la conexión de operación DML p_chenming/.

SQL & gtselect * de test2 SQL & gt insertar en test2 value(7, 77); SQL & gt MIT; cortar y archivar SQL > cambiar el archivo de registro de cambio de sistema & gt de v$archived_log Seleccionar nombre, destino; id, número de subproceso, número de secuencia en - el último es un archivo nuevo - cree un nuevo logminer SQL > Ejecute DBMS_log mnr .add_log file(nombre de archivo de registro = >/Oracle/archive _ 10g/test/test _ 1 _ 138 _ 786808434 .arc ', opciones = >DBMS _ log mnr nuevo); - iniciar minerSQL > ejecutar DBMS _ log mnr . columna sql_redo formato a50 SQL>select nombre de usuario, s, marca de tiempo, SQL_redo de v$log mnr_contents donde table _ nombre = 'TEST2SQL>select nombre de usuario,s,marca de tiempo,SQL_redo de v$logmnr_contents donde nombre de usuario='P_陈明' -Cerrar MINERSQL >execution DBMS _log mnr. end_log mnr; -Cerrar el registro auxiliar SQL y la base de datos gtalter eliminar datos de registro complementarios v$sqlarea solo puede ver un historial aproximado porque se comparten muchos SQL. La verificación ASH está incompleta porque se trata de datos de muestra y básicamente no hay ninguna consulta SQL durante la prueba. Al mirar V$sqlSTATS, puede ver todo el SQL ejecutado y sus estadísticas de ejecución, pero no hay series de tiempo ni información del usuario. Ver TRACE debería ser el más completo, pero debe activarse antes de ejecutar SQL. No puede ver la declaración de selección cuando visualiza Logminer. De forma predeterminada, el sistema no abre registros complementarios, por lo que el contenido que se puede ver es limitado. Quizás exista un método de auditoría disponible. No lo he probado. Cada método tiene sus propios defectos, por lo que parece difícil tener un método completo para ver el historial de ejecución de SQL.

¿Cómo ver el historial de ejecución de PL/SQL? Además del método de vista ctrl+e de PL/SQL, también existen los siguientes métodos: Método 1: consultar las vistas de V$SQL, V$SQLitext, v$sqlarea y V$SQLASTATS* desde v$sql rea, donde t. parsing_schema_name en orden ('esquema') por t último_tiempo_activo desc. #Para v$sqltext y v$sqlarea, vea el SQL en el grupo compartido. Su índice de tiempo es su historial de análisis. Debido a problemas de uso compartido, es posible que la consulta no refleje completamente el historial de ejecución. #v$sqlstats refleja las estadísticas de ejecución de SQL del inicio de la instancia. La declaración SQL en sí es más completa que v$sqltext/area, porque es posible que este último no pueda intercambiar el caché. Método 2: Las tablas v$active_session_history y V$SQLArea # V$Active_session_History solo muestran datos, en unidades de segundos, y solo incluyen estadísticas de sesión donde el punto de muestreo está en la CPU o no está inactivo durante ese segundo. Por lo tanto, puede estar incompleto y se ignorarán algunos SQL con un tiempo de ejecución corto.

Esta vista no puede restaurar el historial completo de la sesión. # Hay sentencias SQL ejecutadas en el área v$sql, pero no hay información relacionada con la sesión. v$session solo está asociado con el SQL actual, por lo que no tiene ningún efecto. Desde v$sqlstat, puede ver toda la información SQL iniciada por la base de datos, pero no existe una relación cronológica, ni información del usuario, solo el número de ejecuciones y estadísticas de recursos. Desde dba_hist_sqlstat, podemos ver las estadísticas de SQL entre instantáneas de AWR. En comparación con las estadísticas de v$SQL, no se ve afectado por los reinicios de la instancia porque la información en las estadísticas de v$SQL se borra después de reiniciar la instancia. Método 3: Seguimiento de sesión y gtExecute DBMS_session.session_trace_enable (verdadero, verdadero); el proceso PL/SQL se completó correctamente. SQL>select count(*)from DBA_hist_SQL text;COUNT(*)-478 SQL>select * from V$sesstat donde rownum = 1;SID stats #value---134 0 1 SQL> Ejecutar DBMS_session.session_trace_disable; exitosamente. $ CD $ ORACLE_HOME/admin/test/Udump $ ls -LRT $ tkprof test_ora_2195620. Informe TRC txtsys = no explicar = no agregado = sí $more informe: este archivo incluye información de ejecución para todas las declaraciones SQL entre el inicio y la detención del seguimiento. Plan de ejecución y método estadístico 4: logminer solo contiene declaraciones DML y DDL y no puede. Además, es necesario activar el registro complementario, que no está activado de forma predeterminada. conn/assys DBA -Instalar Logminer SQL>@$ORACLE_HOME/RDBMS/admin/DBMS lmd.SQL;SQL>@$ORACLE_HOME/RDBMS/admin/dbmslm.SQL;SQL>@$ORACLE_HOME /RDBMS/admin/DBMS SQL; & gt@ $ ORACLE _ HOME/RDBMS/admin/PRV tlm . - Abrir una base de datos de modificación de registros para agregar datos de registro complementarios - Simular la conexión de operación DML p_chenming/.

SQL>select * de test2SQL> insertar en el valor de test2(7,77);SQL>MIT;conn/assysdba-cut-and-archive SQL>cambiar archivo de registro de cambio de sistema;SQL>from v$archived_log Seleccionar nombre, ID de destino, número de subproceso, número de secuencia en - el último es un archivo nuevo: cree un nuevo SQL de logminer > Ejecute el archivo DBMS_log mnr .add_log (nombre de archivo de registro = >/Oracle/archive _ 10g/test/test _ 1 _ 138 _ 786808434 . arc ', opciones = >DBMS _ log mnr .new); - iniciar minerSQL > ejecutar DBMS _ log mnr . start _ log mnr (opciones = & gt DBMS _ logmnr.dict_from_online_catalog - Ver resultados SQL>col formato de nombre de usuario A8; marca de tiempo, SQL_redo de v$log mnr_contents donde table _ name = 'TEST2SQL>select nombre de usuario,s,timestamp,SQL_redo de v$logmnr_contents donde nombre de usuario='P_陈明' -Cerrar MINERSQL >execution DBMS _log end_log mnr; registrar SQL y base de datos gtalter eliminar datos de registro complementarios ver resumen v$sqlarea solo puede ver un historial aproximado porque se comparten muchos SQL. La verificación ASH está incompleta porque se trata de datos de muestra y básicamente no hay ninguna consulta SQL durante la prueba. Al mirar V$sqlSTATS, puede ver todo el SQL ejecutado y sus estadísticas de ejecución, pero no hay series de tiempo ni información del usuario. Ver TRACE debería ser el más completo, pero debe activarse antes de ejecutar SQL. No puede ver la declaración de selección cuando visualiza Logminer. De forma predeterminada, el sistema no abre registros complementarios, por lo que el contenido que se puede ver es limitado. Quizás exista un método de auditoría disponible. No lo he probado. Cada método tiene sus propios defectos, por lo que parece difícil tener un método completo para ver el historial de ejecución de SQL.

¿El bloqueo de Oracle tiene historial? Hola, no se puede consultar la información de bloqueo anterior.

He escrito varios SQL para consultar información sobre sesiones ocupadas cuando se produce un bloqueo.

(1). Este SQL puede encontrar la información de la sesión de la tabla bloqueada y qué SQL se ejecutó.

SELECT /*+ regla */

LPAD('), DECODE (l.xidusn, 0, 3, 0))

|| oracle_username nombre de usuario, o .propietario, o .nombre de objeto,

o .tipo de objeto, s.SID, s.número de serie, s.SQL_ID

Bloquear objeto desde v$ l, dba_object o,v $sesión s

donde, l.object_id = o.object_id, l.session_id = s.SID

ORDENAR POR o.object_id, xid usn desc;

seleccione * de v$sql donde sql_id='gfggpun2vtkqs '

(2) Este sql puede encontrar que xxxsession está esperando que xxxsession libere el bloqueo.

seleccione 'SID ' || l1.sid || 'Bloqueado' || l2.sid bloqueado

De v$lock l1, v$lock l2

Donde l1.block =1, l2.request & gt0

Y l 1 id 1 = L2 id 1

l1.id2=l2.id2

.