Información histórica sesiones Oracle



A partir de Oracle 10.2 con ASH podemos consultar cierta información sobre las sessiones. Encuentro muy interesante poder consultar el número de sesiones conectadas a la base de datos en el pasado

para ver esta información podemos consultar estas vistas:

v$sysmetric_history --> Información a corto plazo, contiene datos de la última hora en períodos de minutos
dba_hist_sysmetric_summary -->Contiene datos del último mes a intervalos resumidos de 1 hora (Media, máxima y mínima de esa hora)


v$sysmetric_history y dba_hist_sysmetric_summary contiene información de un montón de métricas diferentes, así que tenemos que seleccionar la métrica que queramos, en este caso las sesiones:

set linesize 190
col  METRIC_NAME for a100
select METRIC_ID, METRIC_NAME from v$sysmetric_history group by METRIC_ID, METRIC_NAME ;

Si queremos buscar las métricas disponible relacionadas con sesiones hacemos:

SQL> set linesize 190
col  METRIC_NAME for a100
select METRIC_ID, METRIC_NAME from v$sysmetric_history where lower(METRIC_NAME) like '%session%' group by METRIC_ID, METRIC_NAME ;
SQL> SQL>
 METRIC_ID METRIC_NAME
---------- ----------------------------------------------------------------------------------------------------
      2137 PQ QC Session Count
      2143 Session Count
      2138 PQ Slave Session Count
      2119 Session Limit %
      2147 Average Active Sessions
      2148 Active Serial Sessions
      2149 Active Parallel Sessions

7 rows selected.


Si queremos ver las sessiones conectadas la la BBDD durante la hora anterior consultamos la vista v$sysmetric_history pasándole el metric_id que queramos, en este caso el de las sesiones:
set linesize 190
set pages 200
col METRIC_NAME for a40
col BEGIN_TIME for a20
col END_TIME for a20
COL METRIC_UNIT for a20
alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
select * from v$sysmetric_history where METRIC_ID=2143 order by BEGIN_TIME;


SQL> set linesize 190
SQL> set pages 200
SQL> col METRIC_NAME for a40
SQL> col BEGIN_TIME for a20
SQL> col END_TIME for a20
SQL> COL METRIC_UNIT for a20
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
select BEGIN_TIME, END_TIME, VALUE, METRIC_UNIT  from v$sysmetric_history where METRIC_ID=2143 order by BEGIN_TIME;

Session altered.

SQL>
BEGIN_TIME           END_TIME                  VALUE METRIC_UNIT
-------------------- -------------------- ---------- --------------------
09.10.2017 12:24:09  09.10.2017 12:25:10         357 Sessions
09.10.2017 12:25:10  09.10.2017 12:26:10         358 Sessions
09.10.2017 12:26:10  09.10.2017 12:27:09         355 Sessions
09.10.2017 12:27:09  09.10.2017 12:28:10         356 Sessions
09.10.2017 12:28:10  09.10.2017 12:29:09         355 Sessions
09.10.2017 12:29:09  09.10.2017 12:30:10         355 Sessions
09.10.2017 12:30:10  09.10.2017 12:31:10         355 Sessions
09.10.2017 12:31:10  09.10.2017 12:32:09         355 Sessions
09.10.2017 12:32:09  09.10.2017 12:33:10         355 Sessions
09.10.2017 12:33:10  09.10.2017 12:34:09         356 Sessions
09.10.2017 12:34:09  09.10.2017 12:35:10         356 Sessions
09.10.2017 12:35:10  09.10.2017 12:36:10         355 Sessions


pero si queremos consultar información mas antigua hacemos:


set linesize 190
set pages 200
col METRIC_NAME for a40
col BEGIN_TIME for a20
col END_TIME for a20
COL METRIC_UNIT for a20
select INSTANCE_NUMBER, BEGIN_TIME, END_TIME, METRIC_NAME, AVERAGE, MAXVAL, METRIC_UNIT from dba_hist_sysmetric_summary where  METRIC_ID=2143 and INSTANCE_NUMBER=1 order by SNAP_ID;

Debido a que dba_hist_sysmetric_summary contiene valores resumidos por períodos de 1 hora, sacamos la media de sessiones durante esa hora y el máximo...

SQL> set linesize 190
SQL> set pages 200
SQL> col METRIC_NAME for a40
col BEGIN_TIME for a20
SQL> SQL> col END_TIME for a20
SQL> COL METRIC_UNIT for a20
SQL> select INSTANCE_NUMBER, BEGIN_TIME, END_TIME, METRIC_NAME, AVERAGE, MAXVAL, METRIC_UNIT from dba_hist_sysmetric_summary where  METRIC_ID=2143 and INSTANCE_NUMBER=1 order by SNAP_ID;

INSTANCE_NUMBER BEGIN_TIME           END_TIME             METRIC_NAME                                 AVERAGE     MAXVAL METRIC_UNIT
--------------- -------------------- -------------------- ---------------------------------------- ---------- ---------- --------------------
              1 29.08.2017 22:59:53  29.08.2017 23:59:53  Session Count                                324,85        327 Sessions
              1 29.08.2017 23:59:53  30.08.2017 00:59:53  Session Count                                   325        327 Sessions
              1 30.08.2017 00:59:53  30.08.2017 01:59:53  Session Count                            323,833333        327 Sessions
              1 30.08.2017 01:59:53  30.08.2017 02:59:54  Session Count                                 324,3        328 Sessions
              1 30.08.2017 02:59:54  30.08.2017 03:59:53  Session Count                            324,516667        329 Sessions
              1 30.08.2017 03:59:53  30.08.2017 04:59:53  Session Count                            322,533333        327 Sessions
              1 30.08.2017 04:59:53  30.08.2017 05:59:54  Session Count                            322,483333        326 Sessions
              1 30.08.2017 05:59:54  30.08.2017 06:59:54  Session Count                            324,766667        328 Sessions
              1 30.08.2017 06:59:54  30.08.2017 07:59:53  Session Count                            324,983333        327 Sessions
              1 30.08.2017 07:59:53  30.08.2017 08:59:54  Session Count                                 326,1        329 Sessions
              1 30.08.2017 08:59:54  30.08.2017 09:59:54  Session Count                            328,166667        332 Sessions
              1 30.08.2017 09:59:54  30.08.2017 10:59:54  Session Count                                326,85        335 Sessions
              1 30.08.2017 10:59:54  30.08.2017 11:59:54  Session Count                            325,116667        329 Sessions
              1 30.08.2017 11:59:54  30.08.2017 12:59:54  Session Count                            325,966667        330 Sessions
              1 30.08.2017 12:59:54  30.08.2017 13:59:54  Session Count                                 325,8        330 Sessions
....................................................................................................................................................
....................................................................................................................................................
              1 09.10.2017 07:00:09  09.10.2017 08:00:09  Session Count                            351,983333        357 Sessions
              1 09.10.2017 08:00:09  09.10.2017 09:00:09  Session Count                                351,85        358 Sessions
              1 09.10.2017 09:00:09  09.10.2017 10:00:09  Session Count                            352,566667        358 Sessions
              1 09.10.2017 10:00:09  09.10.2017 11:00:10  Session Count                                 356,3        359 Sessions
              1 09.10.2017 11:00:10  09.10.2017 12:00:09  Session Count                                356,55        362 Sessions

dba_hist_sysmetric_summary contiene información de todas las instancias de la base de datos, con lo que si estás mirando un RAC debes de seleccionar el INSTANCE_NUMBER.

Para hacerse una idea general o bien hacer algún informe, podemos pasar esta información a una hoja de cálculo y hacer un gráfico...


Comentarios

Entradas populares de este blog

Ampliar tablespace Oracle

Oracle máximo de sesiones

Bloqueos en Oracle