« Exámen Beta 1z1-028 : Oracle Database Cloud AdministrationWindows 8 - 2012 y la certificación de Oracle »

Retención de los snapshots e información de las DBA_HIST



Esta consultando información desde la tabla DBA_HIST_SEG_STAT y sólo encontre información de la última semana, pero la verdad esto no me sirve de mucho y quiero que el período a consultar sea un poco mayor...

¿A qué se debe que tenga tan poca retención? He aquí la explicación




La información que se visualiza en las DBA_HIST se carga cuando se están generando los Snapshots del AWR y se elimina cuando estos últimos se purgan, o sea, dependen directamente del intervalo de tiempo en donde se recogen estos Snapshots de AWR y se mantienen en línea el tiempo de retención seteado para los Snaps de AWR.


Para saber que seteo nosotros poseemos en nuestras bases de datos podemos ejecutar la siguiente consulta

select
extract( day from snap_interval) *24*60+
extract( hour from snap_interval) *60+
extract( minute from snap_interval ) "Intervalo entre Snaps",
extract( day from retention) *24*60+
extract( hour from retention) *60+
extract( minute from retention ) "Periodo de retencion seg" ,
extract( day from retention) "Periodo de retencion dias"
from dba_hist_wr_control;



Cuyo resultado se visualizaría de la siguiente forma

Intervalo entre Snaps Periodo de retencion seg Periodo de retencion dias
--------------------- ------------------------ -------------------------
15 86400 60



¿Cuál es el mejor período de retención e intervalo para tomar los Snapshots?

Aquí todo depende, ¿de qué depende? Pues del tamaño de nuestro tablespace SYSAUX, de que tanta carga tenga nuestra base de datos, etc, etc.

Pero podemos imaginarnos el tamaño que podría necesitar, para ello consultamos nuestro AWR dentro del tablespace SYSAUX, para ello ejecutamos la siguiente consulta

SQL> r
1 SELECT occupant_name, schema_name, move_procedure,
2 space_usage_kbytes
3 FROM v$sysaux_occupants
4* ORDER BY 1



El dato que nos interesa , aparecería de la siguiente forma

OCCUPANT_NAME SCHEMA_NAME MOVE_PROCEDURE SPACE_USAGE_KBYTES
------------------------------ -------------------- ----------------------------------- ------------------
SM/AWR SYS 10432448



Aquí podemos apreciar claramente cuanto es lo que usan nuestros snapshots para el período de tiempo de retención

Otra forma de obtener los datos que necesitamos , ejecutando el siguiente comando desde SQL*Plus

@?/rdbms/admin/awrinfo.sql



Dentro del reporte que se obtiene , podemos ver el intervalo en que se toman los snapshots y el período de retención, para ello buscamos el punto (6)

(6) AWR Control Settings - interval, retention



También podemos buscar el tamaño calculado para nuestros snapshots , con lo cual podemos saber de una manera óptima cuanto es el tamaño en Gb o en MB que necesitamos si queremos ampliar nuestro período de retención para los snapshors del AWR.

Dentro de la salida del awrinfo.sql , existe un punto llamado

*************************************
(2) Size estimates for AWR snapshots
*************************************
|
| Estimates based on 60 mins snapshot INTERVAL:
| AWR size/day 27.7 MB (1,182 K/snap * 24 snaps/day)
| AWR size/wk 193.9 MB (size_per_day * 7) per instance
|
| Estimates based on 4 snaps in past 24 hours:
| AWR size/day 4.6 MB (1,182 K/snap and 4 snaps in past 24 hours)
| AWR size/wk 32.3 MB (size_per_day * 7) per instance
|



Donde podemos ver claramente cuanto pesan nuestros Snaps por día.

Una vez que hemos realizado los cálculos necesarios para chequear el tamaño del tablespace SYSAUX , procedemos a cambiar el intervalo de retención y el intervalo de captura de nuestros snapshots de AWR, para ello ejecutamos el siguiente package

execute dbms_workload_repository.modify_snapshot_settings (
interval => xx,
retention => xxxxx );



Donde le indicamos el intervalo para sacar snapshots en minutos y el período de retención en segundos, ejemplo :

Para sacar los snapshots cada 60 minutos con una retención de 69 días

1 begin
2 dbms_workload_repository.modify_snapshot_settings (interval => 60,retention => 100000 );
3* end;
SQL> /

PL/SQL procedure successfully completed.


Una vez modificado podemos consultar nuevamente el seteo

SQL> select
2 extract( day from snap_interval) *24*60+
3 extract( hour from snap_interval) *60+
4 extract( minute from snap_interval ) "Intervalo entre Snaps",
5 extract( day from retention) *24*60+
6 extract( hour from retention) *60+
7 extract( minute from retention ) "Periodo de retencion seg" ,
8 extract( day from retention) "Periodo de retencion dias"
9 from dba_hist_wr_control;

Intervalo entre Snaps Periodo de retencion seg Periodo de retencion dias
--------------------- ------------------------ -------------------------
60 100000 69

Espero les sirva...

by Ligarius
06.05.13. 14:21:52. 688 words, 5161 views. Categories: Base de datos, Tuning / Performance ,