Dba file use
| Fiche express | |
|---|---|
| Type | Script SQL*Plus de diagnostic |
| Domaine | Administration (inventaire fichiers) |
| Voir aussi | Dba file use 7 · Dba files all · Dba controlfiles |
Dba_file_use dresse l'inventaire complet des fichiers physiques d'une instance — fichiers de données, fichiers temporaires (tempfiles), membres de redo logs, fichiers de contrôle (jusqu'à 4), fichier IFILE et destination d'archivage — avec pour chacun un statut lisible (Disponible/Invalide, Courant/Inactif/Non utilisé, archivage activé ou non).
Contrairement à Dba file space usage qui se concentre sur le taux de remplissage, ce script répond à la question « où sont physiquement tous les fichiers de cette base, et dans quel état ? ». Cette version cible Oracle8i et plus (gère les vrais tempfiles) ; voir Dba file use 7 pour la variante Oracle7/8.
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 : Inventaire des fichiers (données, redo, contrôle...) |
PROMPT | Instance : ¤t_instance |
PROMPT +------------------------------------------------------------------------+
SET ECHO OFF
SET FEEDBACK 6
SET HEADING ON
SET LINESIZE 180
SET PAGESIZE 50000
SET VERIFY OFF
CLEAR COLUMNS
CLEAR BREAKS
CLEAR COMPUTES
COLUMN db NEW_VALUE xdb NOPRINT FORMAT a1
COLUMN type FORMAT a8 HEADING 'Type'
COLUMN tablespace FORMAT a30 HEADING 'Tablespace'
COLUMN filename FORMAT a75 HEADING 'Fichier'
COLUMN filesize FORMAT 9,999,999,999,999 HEADING 'Taille'
COLUMN stat FORMAT a10 HEADING 'Statut'
COLUMN seq FORMAT 9999999 HEADING 'Séquence'
COLUMN arc FORMAT a4 HEADING 'Archivé'
SET TERMOUT OFF
SELECT name db FROM v$database;
SET TERMOUT ON
SELECT
'Data' type
, tablespace_name tablespace
, REPLACE(file_name, '?', '&xdb') filename
, bytes filesize
, DECODE(status, 'AVAILABLE', 'Disponible', 'INVALID', 'Invalide', '****') stat
, 0 seq
, '' arc
FROM dba_data_files
UNION
SELECT
'Redo'
, 'Grp ' || a.group#
, member
, bytes
, DECODE(b.status, 'CURRENT', 'Courant', 'INACTIVE', 'Inactif', 'UNUSED', 'Non utilisé', '****')
, sequence#
, archived
FROM
v$logfile a
, v$log b
WHERE
a.group# = b.group#
UNION
SELECT
'Parm'
, 'Ctrl 1'
, REPLACE(NVL(LTRIM(SUBSTR(value, 1, INSTR(value || ',', ',', 1, 1) - 1)), ' (aucun)'),
'?', '&xdb') file_name
, 0
, ''
, 0
, ''
FROM v$parameter
WHERE name = 'control_files'
UNION
SELECT
'Parm'
, 'Ctrl 2'
, REPLACE(NVL(LTRIM(SUBSTR(value, INSTR(value || ',', ',', 1, 1) + 1,
INSTR(value || ',', ',', 1, 2) - INSTR(value || ',', ',', 1, 1) - 1)), ' (aucun)'),
'?', '&xdb') file_name
, 0
, ''
, 0
, ''
FROM v$parameter
WHERE name = 'control_files'
UNION
SELECT
'Parm'
, 'Ctrl 3'
, REPLACE(NVL(LTRIM(SUBSTR(value, INSTR(value || ',', ',', 1, 2) + 1,
INSTR(value || ',', ',', 1, 3) - INSTR(value || ',', ',', 1, 2) - 1)), ' (aucun)'),
'?', '&xdb') file_name
, 0
, ''
, 0
, ''
FROM v$parameter
WHERE name = 'control_files'
UNION
SELECT
'Parm'
, 'Ctrl 4'
, REPLACE(NVL(LTRIM(SUBSTR(value, INSTR(value || ',', ',', 1, 3) + 1,
INSTR(value || ',', ',', 1, 4) - INSTR(value || ',', ',', 1, 3) - 1)), ' (aucun)'),
'?', '&xdb') file_name
, 0
, ''
, 0
, ''
FROM v$parameter
WHERE name = 'control_files'
UNION
SELECT
'Parm'
, 'Ifile'
, REPLACE(value, '?', '&xdb') file_name
, 0
, ''
, 0
, ''
FROM v$parameter
WHERE name = 'ifile'
UNION
SELECT
'Parm'
, 'Archive'
, DECODE(d.log_mode, 'ARCHIVELOG',
REPLACE(p.value, '?', '&xdb') || ' - ACTIVE',
REPLACE(p.value, '?', '&xdb') || ' - Désactivé') file_name
, 0
, ''
, 0
, ''
FROM
v$parameter p
, v$database d
WHERE
p.name = 'log_archive_dest'
UNION
SELECT
'Tempfile' type
, tablespace_name
, REPLACE(file_name, '?', '&xdb') tempfile_name
, bytes
, DECODE(status, 'AVAILABLE', 'Disponible', 'INVALID', 'Invalide', '****') stat
, 0
, ''
FROM dba_temp_files
ORDER BY 1, 2, 3
/
Le script d'origine substituait le nom d'instance dans le chemin du tempfile via un jeton de template non résolu ($input{{Oracle_SID_Name}}) au lieu de la variable SQL*Plus &xdb utilisée partout ailleurs dans le script — corrigé ci-dessus par cohérence.
Colonnes / sortie
- Type :
Data/Tempfile(fichiers physiques),Redo(membres de groupes de journalisation),Parm(fichiers déclarés par paramètre : contrôle, ifile, archivage). - Statut : traduit selon le type — disponibilité pour les datafiles, état du groupe de redo (Courant/Inactif/Non utilisé) pour les journaux.
- Archivé : uniquement pertinent pour les redo logs — indique si le groupe a déjà été archivé.
Voir aussi
- Dba file use 7 — variante historique Oracle7/8 (sans tempfiles).
- Dba files all — inventaire orienté tailles plutôt que statuts.
- Dba controlfiles — détail dédié aux fichiers de contrôle.