Dba tables query user

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 all · Dba tables current user · Dba table info

Dba tables query user demande un nom de schéma puis liste toutes ses tables (tablespace, date de dernière analyse, nombre de lignes). Version intermédiaire entre Dba tables all (toute la base) et Dba tables current user (uniquement l'utilisateur connecté) : utile pour auditer un schéma applicatif précis sans être connecté sous son compte.

Script

-- Demande un schéma, liste toutes ses tables.

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   : Query Tables for Specified Schema                           |
PROMPT | Instance : &current_instance                                          |
PROMPT +------------------------------------------------------------------------+

PROMPT
ACCEPT schema PROMPT 'Enter schema : '

SET ECHO      OFF
SET FEEDBACK  6
SET HEADING   ON
SET LINESIZE  180
SET PAGESIZE  50000
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"

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 = UPPER('&schema')
ORDER BY
    owner
  , table_name
/

Utilisation

Nécessite les privilèges d'accès à dba_tables (rôle DBA ou SELECT_CATALOG_ROLE) pour interroger le schéma d'un autre utilisateur que soi-même — sinon, préférer Dba tables current user.

Voir aussi