ASMr snapshots dbtime
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Script SQL*Plus de diagnostic |
| Domaine | AWR – snapshots / DB Time |
| Voir aussi | Awr snapshots dbtime xls |
ASMr snapshots dbtime – malgré son préfixe, ce script ne concerne pas le stockage ASM : il s'agit d'un script AWR (Automatic Workload Repository) qui liste tous les snapshots disponibles et calcule, pour chacun, le DB Time consommé pendant l'intervalle (temps total passé par les sessions dans la base de données, hors idle), ainsi que sa part par rapport à la durée réelle de l'intervalle. C'est un indicateur rapide de charge globale, à examiner avant de creuser un rapport AWR détaillé sur un intervalle suspect.
Une variante avec sortie tabulée pour tableur existe : Awr snapshots dbtime xls.
Script
-- Rapport AWR : DB Time consomme par intervalle de snapshot (dba_hist_snapshot)
SET TERMOUT OFF
COLUMN current_instance NEW_VALUE current_instance NOPRINT
SELECT RPAD(SYS_CONTEXT('USERENV', 'INSTANCE_NAME'), 17) current_instance FROM dual;
SET TERMOUT ON
PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Rapport : AWR Snapshots (DB Time) |
PROMPT | Instance : ¤t_instance |
PROMPT +------------------------------------------------------------------------+
SET ECHO OFF
SET FEEDBACK 6
SET HEADING ON
SET LINESIZE 256
SET PAGESIZE 50000
SET VERIFY OFF
CLEAR COLUMNS
CLEAR BREAKS
CLEAR COMPUTES
COLUMN instance_name_print FORMAT a13 HEADING 'Instance Name'
COLUMN snap_id FORMAT 9999999 HEADING 'Snap ID'
COLUMN startup_time FORMAT a21 HEADING 'Instance Startup Time'
COLUMN begin_interval_time FORMAT a20 HEADING 'Begin Interval Time'
COLUMN end_interval_time FORMAT a20 HEADING 'End Interval Time'
COLUMN elapsed_time FORMAT 999,999,999,999.99 HEADING 'Elapsed Time (min)'
COLUMN db_time FORMAT 999,999,999,999.99 HEADING 'DB Time (min)'
COLUMN pct_db_time FORMAT 999999999 HEADING '% DB Time'
COLUMN cpu_time FORMAT 999,999,999.99 HEADING 'CPU Time (min)'
BREAK ON instance_name_print ON startup_time
DEFINE spool_file = awr_snapshots_dbtime.lst
SPOOL &spool_file
SELECT
i.instance_name instance_name_print
, s.snap_id snap_id
, TO_CHAR(s.startup_time, 'mm/dd/yyyy HH24:MI:SS') startup_time
, TO_CHAR(s.begin_interval_time, 'mm/dd/yyyy HH24:MI:SS') begin_interval_time
, TO_CHAR(s.end_interval_time, 'mm/dd/yyyy HH24:MI:SS') end_interval_time
, ROUND(EXTRACT(DAY FROM s.end_interval_time - s.begin_interval_time) * 1440 +
EXTRACT(HOUR FROM s.end_interval_time - s.begin_interval_time) * 60 +
EXTRACT(MINUTE FROM s.end_interval_time - s.begin_interval_time) +
EXTRACT(SECOND FROM s.end_interval_time - s.begin_interval_time) / 60, 2) elapsed_time
, ROUND((e.value - b.value) / 1000000 / 60, 2) db_time
, ROUND((((e.value - b.value) / 1000000 / 60) /
(EXTRACT(DAY FROM s.end_interval_time - s.begin_interval_time) * 1440 +
EXTRACT(HOUR FROM s.end_interval_time - s.begin_interval_time) * 60 +
EXTRACT(MINUTE FROM s.end_interval_time - s.begin_interval_time) +
EXTRACT(SECOND FROM s.end_interval_time - s.begin_interval_time) / 60) * 100), 2) pct_db_time
FROM
dba_hist_snapshot s
, gv$instance i
, dba_hist_sys_time_model e
, dba_hist_sys_time_model b
WHERE
i.instance_number = s.instance_number
AND e.snap_id = s.snap_id
AND b.snap_id = s.snap_id - 1
AND e.stat_id = b.stat_id
AND e.instance_number = b.instance_number
AND e.instance_number = s.instance_number
AND e.stat_name = 'DB time'
ORDER BY
i.instance_name, s.snap_id;
SPOOL OFF
PROMPT Rapport ecrit dans &spool_file
Colonnes / sortie
- DB Time (min) – DB Time cumulé sur l'intervalle, en minutes ; calculé par différence entre deux snapshots successifs (
snap_idetsnap_id - 1) sur la statistiqueDB timededba_hist_sys_time_model. - % DB Time – rapport DB Time / durée réelle de l'intervalle. Une valeur largement supérieure à 100% (fréquent sur base multi-cœurs très active) est normale : le DB Time cumule le temps de toutes les sessions actives en parallèle.
- Nécessite une licence Diagnostics Pack (accès à
dba_hist_*).
Voir aussi
- Awr snapshots dbtime xls — même rapport, en sortie tabulée pour import dans un tableur