ASM files

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Domaine ASM – fichiers (11g et +)
Voir aussi ASM files 10g · ASM files2 · ASM alias

ASM files fournit l'inventaire le plus complet de la bibliothèque : chemin reconstitué de chaque fichier ASM (via les alias, requête hiérarchique) et les volumes ASM Dynamic Volume Manager (ADVM), introduits avec Oracle 11g Release 2. C'est la version à utiliser sur toute instance 11gR2 et plus récente.

Deux variantes existent dans cette bibliothèque pour des besoins plus ciblés : ASM files 10g (même logique sans la partie volumes, pour les instances antérieures à 11gR2) et ASM files2 (version simplifiée, restreinte aux seuls fichiers internes créés par le système).

Script

-- Rapport ASM : inventaire complet des fichiers (alias) + volumes ADVM, Oracle 11g+

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   : ASM Files                                                  |
PROMPT | Instance  : &current_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 full_path      FORMAT a75               HEAD 'ASM File Name / Volume Name / Device Name'
COLUMN system_created FORMAT a8                HEAD 'System|Created?'
COLUMN bytes          FORMAT 9,999,999,999,999 HEAD 'Bytes'
COLUMN space           FORMAT 9,999,999,999,999 HEAD 'Space'
COLUMN type            FORMAT a18                HEAD 'File Type'
COLUMN redundancy      FORMAT a12                HEAD 'Redundancy'
COLUMN striped         FORMAT a8                 HEAD 'Striped'
COLUMN creation_date   FORMAT a20                HEAD 'Creation Date'
COLUMN disk_group_name NOPRINT

BREAK ON report ON disk_group_name SKIP 1

COMPUTE sum LABEL ''              OF bytes space ON disk_group_name
COMPUTE sum LABEL 'Grand Total: ' OF bytes space ON report

-- Fichiers (arborescence reconstruite a partir des alias)
SELECT
    CONCAT('+' || db_files.disk_group_name, SYS_CONNECT_BY_PATH(db_files.alias_name, '/')) full_path
  , db_files.bytes
  , db_files.space
  , NVL(LPAD(db_files.type, 18), '<DIRECTORY>') type
  , db_files.creation_date
  , db_files.disk_group_name
  , LPAD(db_files.system_created, 4) system_created
FROM
    ( SELECT
          g.name               disk_group_name
        , a.parent_index       pindex
        , a.name               alias_name
        , a.reference_index    rindex
        , a.system_created     system_created
        , f.bytes              bytes
        , f.space              space
        , f.type               type
        , TO_CHAR(f.creation_date, 'DD-MON-YYYY HH24:MI:SS') creation_date
      FROM
          v$asm_file f RIGHT OUTER JOIN v$asm_alias     a USING (group_number, file_number)
                                   JOIN v$asm_diskgroup g USING (group_number)
    ) db_files
WHERE
    db_files.type IS NOT NULL
START WITH
    (MOD(db_files.pindex, POWER(2, 24))) = 0
CONNECT BY
    PRIOR db_files.rindex = db_files.pindex

UNION

-- Volumes ADVM (Dynamic Volume Manager)
SELECT
    '+' || volume_files.disk_group_name || ' [' || volume_files.volume_name || '] ' || volume_files.volume_device full_path
  , volume_files.bytes
  , volume_files.space
  , NVL(LPAD(volume_files.type, 18), '<DIRECTORY>') type
  , volume_files.creation_date
  , volume_files.disk_group_name
  , NULL
FROM
    ( SELECT
          g.name               disk_group_name
        , v.volume_name        volume_name
        , v.volume_device      volume_device
        , f.bytes              bytes
        , f.space              space
        , f.type               type
        , TO_CHAR(f.creation_date, 'DD-MON-YYYY HH24:MI:SS') creation_date
      FROM
          v$asm_file f RIGHT OUTER JOIN v$asm_volume    v USING (group_number, file_number)
                                   JOIN v$asm_diskgroup g USING (group_number)
    ) volume_files
WHERE
    volume_files.type IS NOT NULL
/

Colonnes / sortie

  • ASM File Name / Volume Name / Device Name – chemin reconstitué (fichiers) ou identification du volume ADVM (2e bloc de la requête, via v$asm_volume).
  • System Created? – distingue les fichiers internes ASM des fichiers de la base (datafiles, redo, contrôle...).
  • La partie volumes ne renvoie rien sur une instance sans ADVM configuré (c'est normal, elle ne lève pas d'erreur).

Voir aussi

  • ASM files 10g — même logique de reconstruction du chemin, sans le volet volumes ADVM (compatible Oracle 10g)
  • ASM files2 — version simplifiée limitée aux fichiers créés par le système
  • ASM alias — source des alias utilisés par la requête hiérarchique