Perf log switch history bytes daily all

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Domaine Performance
Voir aussi Perf log switch history count daily · Perf log switch history count daily all

Perf log switch history bytes daily all affiche le volume de redo généré (en Mo), heure par heure et jour par jour, à partir de tous les enregistrements archivés présents dans v$archived_log. C'est la variante « volume » de la famille des scripts de profil de log switch — voir Perf log switch history count daily pour la variante « nombre de switches ».

Cette famille compte quatre scripts qui se distinguent sur deux axes :

Script Mesure Période Compatibilité
Perf log switch history bytes daily all Volume (Mo) Tout l'historique disponible Oracle 8+
Perf log switch history count daily Nombre de switches Plage de dates saisie Oracle 8+
Perf log switch history count daily 7 Nombre de switches Plage de dates saisie Oracle 7
Perf log switch history count daily all Nombre de switches Tout l'historique disponible Oracle 8+

Script

SET LINESIZE 250
SET PAGESIZE 9999
SET TRIMSPOOL ON
SET VERIFY   OFF

COLUMN H00   FORMAT 99,999  HEADING '00'
COLUMN H01   FORMAT 99,999  HEADING '01'
COLUMN H02   FORMAT 99,999  HEADING '02'
COLUMN H03   FORMAT 99,999  HEADING '03'
COLUMN H04   FORMAT 99,999  HEADING '04'
COLUMN H05   FORMAT 99,999  HEADING '05'
COLUMN H06   FORMAT 99,999  HEADING '06'
COLUMN H07   FORMAT 99,999  HEADING '07'
COLUMN H08   FORMAT 99,999  HEADING '08'
COLUMN H09   FORMAT 99,999  HEADING '09'
COLUMN H10   FORMAT 99,999  HEADING '10'
COLUMN H11   FORMAT 99,999  HEADING '11'
COLUMN H12   FORMAT 99,999  HEADING '12'
COLUMN H13   FORMAT 99,999  HEADING '13'
COLUMN H14   FORMAT 99,999  HEADING '14'
COLUMN H15   FORMAT 99,999  HEADING '15'
COLUMN H16   FORMAT 99,999  HEADING '16'
COLUMN H17   FORMAT 99,999  HEADING '17'
COLUMN H18   FORMAT 99,999  HEADING '18'
COLUMN H19   FORMAT 99,999  HEADING '19'
COLUMN H20   FORMAT 99,999  HEADING '20'
COLUMN H21   FORMAT 99,999  HEADING '21'
COLUMN H22   FORMAT 99,999  HEADING '22'
COLUMN H23   FORMAT 99,999  HEADING '23'
COLUMN TOTAL FORMAT 999,999 HEADING 'Total'

SELECT
    SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'), 1, 5) DAY
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '00', ROUND((blocks*block_size)/1024/1024), 0)) H00
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '01', ROUND((blocks*block_size)/1024/1024), 0)) H01
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '02', ROUND((blocks*block_size)/1024/1024), 0)) H02
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '03', ROUND((blocks*block_size)/1024/1024), 0)) H03
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '04', ROUND((blocks*block_size)/1024/1024), 0)) H04
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '05', ROUND((blocks*block_size)/1024/1024), 0)) H05
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '06', ROUND((blocks*block_size)/1024/1024), 0)) H06
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '07', ROUND((blocks*block_size)/1024/1024), 0)) H07
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '08', ROUND((blocks*block_size)/1024/1024), 0)) H08
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '09', ROUND((blocks*block_size)/1024/1024), 0)) H09
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '10', ROUND((blocks*block_size)/1024/1024), 0)) H10
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '11', ROUND((blocks*block_size)/1024/1024), 0)) H11
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '12', ROUND((blocks*block_size)/1024/1024), 0)) H12
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '13', ROUND((blocks*block_size)/1024/1024), 0)) H13
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '14', ROUND((blocks*block_size)/1024/1024), 0)) H14
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '15', ROUND((blocks*block_size)/1024/1024), 0)) H15
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '16', ROUND((blocks*block_size)/1024/1024), 0)) H16
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '17', ROUND((blocks*block_size)/1024/1024), 0)) H17
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '18', ROUND((blocks*block_size)/1024/1024), 0)) H18
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '19', ROUND((blocks*block_size)/1024/1024), 0)) H19
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '20', ROUND((blocks*block_size)/1024/1024), 0)) H20
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '21', ROUND((blocks*block_size)/1024/1024), 0)) H21
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '22', ROUND((blocks*block_size)/1024/1024), 0)) H22
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '23', ROUND((blocks*block_size)/1024/1024), 0)) H23
  , ROUND(SUM((blocks*block_size)/1024/1024))              TOTAL
FROM
    v$archived_log a
GROUP BY SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'), 1, 5)
ORDER BY SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'), 1, 5)
/

Interprétation

  • Le pivot heure/jour permet de repérer un profil de charge (ex. pic de redo pendant une fenêtre de batch nocturne) et de dimensionner en conséquence la taille et le nombre des groupes de redo logs, ainsi que la bande passante d'archivage.
  • Aucun filtre de date n'est appliqué (contrairement à Perf log switch history count daily) : sur une base avec un historique d'archives long, la requête peut retourner un volume de lignes important — ajouter un filtre WHERE first_time >= TRUNC(SYSDATE) - N si seule une fenêtre récente est utile.
  • Une croissance continue du volume horaire sans changement fonctionnel correspondant mérite d'être creusée (job mal indexé générant du redo inutile, PURGE manquant, etc.).

Voir aussi