Porque amostras Oracle e registra cada sessão ativa em execução no banco de dados, uma consulta simples torna possível obter o histórico de instruções SQL dentro de um determinado período de tempo. Significado
o Oracle automaticamente amostras de todas as sessões em execução no banco de dados a cada segundo , e informações sobre o histórico de registros SQL na v $ active_session_history dicionário de dados vista. v $ active_session_history é um buffer circular , então quando ele fica cheio , o Oracle arquiva automaticamente as informações de v $ active_session_history para dba_hist_active_sess_history vista dicionário de dados , antes de sobrescrever dados no modo de v $ active_session_history .
Função < br >
ao consultar esses dois pontos de vista, a história de instruções SQL executadas durante uma determinada janela de tempo no banco de dados podem ser obtidos. Por exemplo, a consulta a seguir exibe a lista dos primeiros 4.000 caracteres de instruções SQL executadas nove horas - 09h05 em 30 de setembro de 2010:
selecionar a.sql_id , dbms_lob.substr (n. sql_text , 4000,1 ) a partir de um dba_hist_active_sess_history , dba_hist_sqltext b
onde sample_time entre to_date ( '20100930 : 09:00 ',' yyyymmdd : hh24 : mi ')
e to_date ( '20100930 : 09:01 ',' yyyymmdd : hh24 : mi ') e b.sql_id = a.sql_id
união tudo
selecionar a.sql_id , dbms_lob.substr ( b.sql_text , 4000 , 1) a partir de v $ active_session_history um , v $ sqlarea b
onde sample_time entre to_date ( '20100930 : 09:00 ',' yyyymmdd : hh24 : mi ') e
to_date (' 20100930:09:01 ',' yyyymmdd : hh24 : mi ') e b.sql_id = a.sql_id
Considerações
Além disso , a Oracle resume estatísticas de execução de hora em hora de instruções SQL em seu Automatic Workload Repository . Você pode descobrir o maior número de instruções SQL uso intensivo de recursos executados durante uma determinada janela de tempo consultando dba_hist_sqlstat vista dicionário de dados , juntamente com dba_hist_snapshot dicionário de dados vista.
Efeitos
por exemplo , a consulta a seguir apresenta a lista de instruções SQL executadas nove horas - dez horas , juntamente com o seu tempo de CPU , tempo decorrido, tempo io_wait e número de diskreads . A saída dessa consulta é classificada por tempo de CPU.
Selecionar a partir de um dba_hist_sqlstat , dba_hist_sqltext b onde a.sql_id = b.sql_id e SNAP_ID = (selecione SNAP_ID distinto do dba_hist_snapshot onde to_char ( begin_interval_time , ' yyyymmdd : hh24 : mi ') = '20100930 : 09:00 ' e to_char ( end_interval_time ' yyyymmdd : hh24 : mi ') = '20100930 10:00 ' ) order by cpu_time
/Tablet