Dba tables all

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Domaine Administration (inventaire de tables)
Voir aussi Dba tables current user · Dba tables query user · Dba table info

Dba tables all liste toutes les tables de la base, tous schémas confondus (à l'exception de SYS et SYSTEM), avec leur tablespace, la date de dernière analyse et le nombre de lignes. Le rapport est écrit dans un fichier plutôt qu'affiché à l'écran, pratique pour un inventaire complet à exploiter ensuite (recherche, comparaison entre environnements...).

Fait partie d'une famille de trois scripts qui ne diffèrent que par leur périmètre : voir Dba tables current user (utilisateur connecté) et Dba tables query user (schéma choisi à l'exécution).

Script

-- Inventaire de toutes les tables de la base (hors SYS/SYSTEM),
-- écrit dans un fichier.

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 | Report   : All Database Tables                                         |
PROMPT | Instance : &current_instance                                          |
PROMPT +------------------------------------------------------------------------+

SET ECHO      OFF
SET FEEDBACK  6
SET HEADING   ON
SET LINESIZE  180
SET PAGESIZE  50000
SET TERMOUT   OFF
SET TRIMSPOOL ON
SET VERIFY    OFF

CLEAR COLUMNS
CLEAR BREAKS
CLEAR COMPUTES

COLUMN owner           FORMAT a20             HEADING "Owner"
COLUMN table_name      FORMAT a30             HEADING "Table Name"
COLUMN tablespace_name FORMAT a30             HEADING "Tablespace"
COLUMN last_analyzed   FORMAT a20             HEADING "Last Analyzed"
COLUMN num_rows        FORMAT 999,999,999,999 HEADING "# of Rows"

DEFINE spool_file=database_tables.lst

SPOOL &spool_file

SELECT
    owner
  , table_name
  , tablespace_name
  , TO_CHAR(last_analyzed, 'DD-MON-YYYY HH24:MI:SS') last_analyzed
  , num_rows
FROM
    dba_tables
WHERE
    owner NOT IN ('SYS', 'SYSTEM')
ORDER BY
    owner
  , table_name
/

SPOOL OFF

SET TERMOUT ON

PROMPT
PROMPT Report written to &spool_file
PROMPT

Utilisation

Le résultat est écrit dans database_tables.lst (nom modifiable via DEFINE spool_file=... en tête de script) plutôt qu'affiché à l'écran — pratique pour un inventaire à archiver ou à comparer entre deux exécutions.

Voir aussi