PERFORMANCE TUNING : ACTIVE SESSION HISTORY -ASH -PARTE I

INTRODUCCIÓN:

Los problemas de Performance en una Base de datos Productiva,son quizá,los tipo de problema mas críticos, complejos y personalmente considero que son los mas emocionantes de resolver!!!.

¿Cuantas veces nos ha pasado en nuestro día a día como DBAs, que nos han pedido analizar e indicar a detalle que ocasionó un cuello de botella en nuestras BDs en un punto en el pasado?,probablemente de hace unas horas,días o incluso semanas atrás.

Active Session History(ASH), es una excelente herramienta para analizar problemas de performance que suceden en tiempo real,así como también en un punto en el pasado.

ASH brinda la mayoría de información disponible en trace files pero sin necesidad de generar trace files,esta siempre esta disponible.Usar ASH es extremadamente simple, por que no tienes que generar eventos e ir a la ruta en el servidor a revisar las trazas generadas, basta con consultar la vista v$active_session_history.

Cabe resaltar que Active Session History, es un feature disponible desde Oracle 10g release 1 y su uso requiere licencia Diagnostic Pack.

ash-architecture-and-advanced-usage-rmoug2014-7-6381

Cada segundo, Active Session History sensa la base de datos y recolecta importante información de las sesiones activas(sesiones inactivas no son capturadas) y pobla el ASH Buffer,el cual se puede consultar desde la vista v$active_session_history.

  • SESSION:session_id,session_serial#,user_id(puede ser usado contra la dba_users para obtener el username),session_type,session_state,qc_session_id,qc_instance_id
  • WAIT:event,event_id,event#,seq#,p1,p2,p3
  • SQL: sql_id,sql_child_number,sql_plan_hash_value,sql_opcode
  • OBJECT:current_obj#,current_file#,current_block#
  • APPLICATION: Program,Module,action,client_id,service_hash

ash

La información disponible en la v$active_session_history es poblada en base a la información disponible de las vistas v$session y v$session_wait y permite obtener información importante propia de la sesion, wait, sentencia SQL,objeto,aplicacion:

image002

RETENCIÓN:

La retención de active session history, es dependiente de la retención del AWR.

Oracle escribe la información de memoria a disco, desde v$active_session_history hacia la tabla wrh$active_session history, a la cual podemos consultar a través de la vista dba_hist_active_sess_history. Esta acción la realiza cada hora antes de cada snapshot del AWR o cuando el Ash buffer este al 2/3 de su capacidad en el SGA, cabe resaltar que no toda la información baja a disco, solo 1 de cada 10 entradas.

Calcular Retención en dias de ASH:

 select sysdate - a.sample_time ash,
 sysdate - s.begin_interval_time snap,
 c.RETENTION
 from sys.wrm$_wr_control c,
 (
 select db.dbid,
 min(w.sample_time) sample_time
 from sys.v_$database db,
 sys.Wrh$_active_session_history w
 where w.dbid = db.dbid group by db.dbid
 ) a,
 (
 select db.dbid,
 min(r.begin_interval_time) begin_interval_time
 from sys.v_$database db,
 sys.wrm$_snapshot r
 where r.dbid = db.dbid
 group by db.dbid
 ) s
 where a.dbid = s.dbid
 and c.dbid = a.dbid;

retention_ash

SELECT min(sample_time) min_sample_time, max(sample_time) max_sample_time FROM V$ACTIVE_SESSION_HISTORY;

PARÁMETROS:

_ash_size
_ash_enable
_ash_sampling_interval
_ash_disk_write_enable
_ash_disk_filter_ratio

referencias:

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s