Dba file space usage

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Domaine Administration (occupation espace)
Voir aussi Dba file space usage 7 · Dba file · Dba free space frag

Dba_file_space_usage calcule, fichier par fichier, l'espace utilisé et le pourcentage de remplissage, pour les fichiers de données comme pour les fichiers temporaires (tempfiles), en s'appuyant sur DBA_FREE_SPACE et V$TEMP_EXTENT_POOL.

Cette version cible Oracle8i et plus : elle gère correctement les tablespaces temporaires « vrais » (tempfiles), contrairement à Dba file space usage 7 qui vise les versions antérieures. C'est le script à privilégier sur une base moderne.

Script

SET TERMOUT OFF
COLUMN current_instance NEW_VALUE current_instance NOPRINT
SELECT RPAD(instance_name, 17) current_instance FROM v$instance;
SET TERMOUT ON

PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Rapport   : Occupation des fichiers                                    |
PROMPT | Instance  : &current_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 tablespace FORMAT a18               HEADING 'Tablespace'
COLUMN filename   FORMAT a75               HEADING 'Fichier'
COLUMN filesize   FORMAT 9,999,999,999,999 HEADING 'Taille'
COLUMN used       FORMAT 9,999,999,999,999 HEADING 'Utilisé (octets)'
COLUMN pct_used   FORMAT 999               HEADING '% Utilisé'

BREAK ON report

COMPUTE sum OF filesize ON report
COMPUTE sum OF used     ON report
COMPUTE avg OF pct_used ON report

SELECT /*+ ordered */
    d.tablespace_name                 tablespace
  , d.file_name                       filename
  , d.file_id                         file_id
  , d.bytes                           filesize
  , NVL((d.bytes - s.bytes), d.bytes) used
  , TRUNC((NVL((d.bytes - s.bytes), d.bytes) / d.bytes) * 100) pct_used
FROM
    dba_data_files d
  , v$datafile     v
  , (SELECT file_id, SUM(bytes) bytes
     FROM   dba_free_space
     GROUP BY file_id) s
WHERE
        s.file_id (+) = d.file_id
    AND d.file_name    = v.name
UNION
SELECT
    d.tablespace_name                     tablespace
  , d.file_name                           filename
  , d.file_id                             file_id
  , d.bytes                               filesize
  , NVL(t.bytes_cached, 0)                used
  , TRUNC((t.bytes_cached / d.bytes) * 100) pct_used
FROM
    dba_temp_files    d
  , v$temp_extent_pool t
  , v$tempfile         v
WHERE
        t.file_id (+) = d.file_id
    AND d.file_id      = v.file#
/

Colonnes / sortie

  • Utilisé (octets) : pour un fichier de données, calculé comme taille totale moins espace libre (DBA_FREE_SPACE) ; pour un tempfile, correspond aux extents effectivement mis en cache (V$TEMP_EXTENT_POOL) — une notion différente qui reflète l'usage réel du tri/hash en cours plutôt qu'un espace « alloué durablement ».
  • % Utilisé : indicateur simple pour repérer un fichier proche de la saturation avant qu'AUTOEXTEND (s'il est actif) ne prenne le relais, ou avant une erreur ORA-01653/ORA-01652.

Voir aussi