Dans un certains nombres des scripts (index dans tablespace, lob dans tablespace, export de la structure Oracle, ...) touchant à l'ensemble d'un schéma ou de la base, le code boucle sur des vues du dictionnaire de données. Voici plus en détail le fonctionnement de celui-ci.
Oracle distingue parmis le dictionnaire de données les vues statiques des vues dynamiques.
Vues statiques
Vues des segments :
all_[objet] : Tous les objets accessibles par l'utilisateur
user_[objet] : Tous les objets du schema de l'utilisateur
dba_[objet] : Tous les objets de la base (accessible par sys)
Parmi les objets les plus courants :
tables
indexes
db_links
tablespaces
tab_columns
tab_cols
PART_TABLES
TAB_PARTITIONS
OBJECTS
Pour connaître plus en détail le contenu de ces vues, il existe la commande DESC (pas SQL mais implémentée sous sqlplus, toad, ...)
SQL> DESC all_tables;De cette manière, nous pouvons interroger le dictionnaire pour obtenir :
- la liste de toutes les tables d'un schema :
Connecté en sysdba :
select table_name from dba_tables where owner='USEREX';Connecté en USEREX :
select table_name from user_tables;- la liste de toutes les tables accessibles par un utilisateur (utilisation de decode):
select decode(OWNER, 'USEREX', '', owner||'.') || table_name from all_tables order by decode(OWNER, 'USEREX', '', owner||'.'), table_name;De la même manière, on listera tous les objets (ou tous les objets accessibles par un utilisateur précis) en interrogeant la vue statique adéquate.
