Perf file io
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Script SQL*Plus de diagnostic |
| Voir aussi | Perf file io 7 · Perf file io efficiency · Perf file waits |
Perf file io mesure le volume d'I/O physique (lectures/écritures) par fichier de données et par tempfile, avec la part de chacun dans le total de l'instance — la version « moderne » (Oracle 8i et suivants) de la famille des scripts d'I/O par fichier, qui couvre les vrais tempfiles introduits en 8i, à la différence de Perf file io 7. Pour l'angle « efficacité » (I/O par bloc plutôt que volume brut), voir Perf file io efficiency ; pour la contention plutôt que le volume, voir Perf file waits.
Script
-- Volume de lectures/écritures physiques par fichier (données + tempfiles),
-- avec la part de chaque fichier dans le total de l'instance.
SET LINESIZE 145
SET PAGESIZE 9999
SET VERIFY OFF
COLUMN ts_name FORMAT a15 HEADING 'Tablespace'
COLUMN fname FORMAT a45 HEADING 'Fichier'
COLUMN phyrds FORMAT 999,999,999 HEADING 'Lectures phys.'
COLUMN read_pct FORMAT 999.99 HEADING '% Lectures'
COLUMN phywrts FORMAT 999,999,999 HEADING 'Écritures phys.'
COLUMN write_pct FORMAT 999.99 HEADING '% Écritures'
BREAK ON REPORT
COMPUTE SUM OF phyrds ON REPORT
COMPUTE SUM OF phywrts ON REPORT
COMPUTE AVG OF read_pct ON REPORT
COMPUTE AVG OF write_pct ON REPORT
SELECT
df.tablespace_name ts_name
, df.file_name fname
, fs.phyrds phyrds
, (fs.phyrds * 100) / NULLIF(fst.pr + tst.pr, 0) read_pct
, fs.phywrts phywrts
, (fs.phywrts * 100) / NULLIF(fst.pw + tst.pw, 0) write_pct
FROM
sys.dba_data_files df
, v$filestat fs
, (SELECT SUM(f.phyrds) pr, SUM(f.phywrts) pw FROM v$filestat f) fst
, (SELECT SUM(t.phyrds) pr, SUM(t.phywrts) pw FROM v$tempstat t) tst
WHERE
df.file_id = fs.file#
UNION
SELECT
tf.tablespace_name ts_name
, tf.file_name fname
, ts.phyrds phyrds
, (ts.phyrds * 100) / NULLIF(fst.pr + tst.pr, 0) read_pct
, ts.phywrts phywrts
, (ts.phywrts * 100) / NULLIF(fst.pw + tst.pw, 0) write_pct
FROM
sys.dba_temp_files tf
, v$tempstat ts
, (SELECT SUM(f.phyrds) pr, SUM(f.phywrts) pw FROM v$filestat f) fst
, (SELECT SUM(t.phyrds) pr, SUM(t.phywrts) pw FROM v$tempstat t) tst
WHERE
tf.file_id = ts.file#
ORDER BY
phyrds DESC
/
Les statistiques de v$filestat/v$tempstat sont cumulées depuis le
démarrage de l'instance : pour une lecture pertinente à chaud, il faut soit comparer deux
relevés successifs (delta), soit s'appuyer sur un outil qui le fait pour vous (Statspack/AWR).
Voir aussi
- Perf file io 7 — version historique Oracle7/8, sans les tempfiles
- Perf file io efficiency — I/O par bloc (efficacité) plutôt que volume brut
- Perf file waits — contention (buffer busy waits) par fichier