ASH Simulator

mercoledì 8 aprile 2009 alle 08:28 | Pubblicato su Performance Tuning | Lascia un commento
Tag: , ,

Fra i vari strumenti di diagnostica e analisi introdotti nella versione 10g del database Oracle vi è il cosiddetto Active Session History (ASH), uno strumento per quello che si definisce “Reactive Database Tuning“. Per una spiegazione più chiara e precisa rimando alla documentazione Oracle (anche se questa non è proprio dettagliata), o meglio alle presentazioni di uno degli ideatori di ASH: Kyle Hailey.

L’idea è quella di campionare, ogni secondo, le sessioni “attive”, registrando cosa stanno facendo. Una sessione può essere in tre stati:

1) inattiva, non sta facendo nulla

2) attiva e sulla CPU, sta elaborando

3) attiva e in attesa, ovvero sta aspettando qualcosa per c0ncludere l’elaborazione, ad esempio sta aspettando un blocco dati da disco.

Un processo di background (MMNL, manageability monitor light) si occupa di fare questo campionamento, salvando i dati in un’area della SGA che è pubblicata attraverso una vista chiamata V$ACTIVE_SESSION_HISTORY. Una parte di questi dati viene poi salvata in AWR.

Si un tratta in sostanza di interrogare continuamente la vista V$SESSION e vedere se ci sono query, sessioni, eventi che ricorrono di più per capire se ci sono problemi di prestazioni, il tutto tuto poi è analizzabile facilmente con i grafici visualizzati sull’Enterprise Manager. E’ un’idea, quella di interrogare la vista V$SESSION, che gia in passato ho utilizzato proprio per far fronte a richieste urgenti di verificare problemi di prestazioni sul database (il reactive database tuning appunto), solo che io mi limitavo a interrogare la V$SESSION, in join con la V$SESSION_WAIT (era oracle 9.2, dove le informazioni sull’evento di attesa non erano ancora presenti nella V$SESSION) e la V$SQL, senza salvare i dati, analizzavo quindi la situazione istantaneamente. ASH fa molto di più.

Il problema di ASH è che per essere utilizzato richiede la “Diagnostic Pack License”. E’ per questo che circa un’anno fa mi piacque molto l’iniziativa di Kyle Hailey: un simulatore di ASH, utilizzabile in versioni Oracle precedenti alla 10g o in versioni senza la licenza necessaria per ASH. Sono passati diversi mesi e finalmente alcune settimane fa ho avuto l’occasione/necessità di provare il pacchetto di simulazione.

In realtà ho fatto alcune modifiche al simulatore per adattarlo alle mie esigenze, l’ho installato sul server stesso, togliendo quindi i  database link. Inoltre l’ambiente in cui mi serviva era un RAC, quindi ho dovuto modificare le tabelle (e di conseguenza le procedure) per gestire anche l’istanza, mantenendo l’utilizzo delle viste GV$, che nel pacchetto originario sono utilizzate perché l’interrogazione delle viste tramite database link pare genere un errore ORA-02070. Ho fatto anche ulteriori modifiche per aggiungere maggior granularità alle informazioni raccolte, distinguendo per i vari statement i  vari “child cursor” ed ho aggiunto anche il SQL_ID (probabilmente non incluso nel package originario perché nato per versioni precedenti alla 10g).

Le procedure, oltre a raccogliere le informazioni sulle sessioni attive (ASH “puro”) raccolgono anche, a intervalli diversi, le informazioni sugli oggetti (io le raccolgo una volta al giorno), e le informazioni sugli statement (V$SQL, V$SQL_PLAN, V$SQLTEXT, ogni mezz’ora). Ho messo tutto su un utente SASH a cui ho dato solo i privilegi necessari a interrogare tutte le viste di sistema necessarie; per come sono scritte le procedure originali esse andrebbero messe su uno schema privilegiato, come SYS.

Dopo un po’ di messa a punto sono riuscito ad utilizzare con soddisfazione questo simulatore e ho voluto confrontarlo con l’ASH integrato di Oracle 10g, vi sono alcune differenze, ma per le mie esigenze trascurabili. Sono rimasto più perplesso dal confronto con i grafici e le tabelle visualizzati nella sezione “Top Activity” (attività principale) che secondo le presentazioni di Hailey dovrebbero essere basate su ASH.

Lascia un commento »

RSS feed for comments on this post. TrackBack URI

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Blog su WordPress.com.
Entries e commenti feeds.

%d blogger cliccano Mi Piace per questo: