9 -Meta données

9.1 - Les meta données

Définition et accès au dictionnaire

D’une manière générale il est utile de connaître un minimum du contexte des données que l’on souhaite consulter ou mettre à jour : la liste de mes tables, les noms et types des colonnes d’une de mes tables, les tables accessibles, etc. Ces données qui concernent les données, sont appelées méta-données (ou META DATA). Suivant les bases de données, on peut y avoir accès soit via une interface graphique, soit via des commandes spécifiques simples, ou + simplement encore via des SELECT si les méta données sont stockées dans des tables relationnelles.

Pour se faire une idée on a sur http://sqlzoo.net un aperçu de l’accès aux méta données des principaux SGBDs du marché.

Le dictionnaire de données (DD) est le référentiel unique qui décrit tous les objets physiques et logiques d’une base de données Oracle. Il est accédé implicitement par le noyau Oracle et explicitement par les utilisateurs DBA ou non. Par exemple lorsque l’on crée une table le noyau insère automatiquement une ligne descriptive dans la table des tables. Le dictionnaire est organisé en tables et en vues, ce qui implique que son interrogation peut se faire en SQL ! remarque : il est interdit à un utilisateur même DBA d’écrire explicitement dans le dictionnaire.

Contenu du dictionnaire

Le dictionnaire est composé de tables appartenant à SYS, et dont le nom se termine en général par un ‘$ (SYS.TAB$ la table des tables, SYS.TS$ la table des tablespaces , etc.) . Pour des raisons de confort et de sécurité, on n’accède pratiquement jamais à ces tables en direct, on passe par l’intermétiaire de vues plus lisibles. Les vues les plus couramment utilisées sont des vues statiques. Elles décrivent les : tablespaces, fichiers physiques, tables, contraintes, clusters, vues, index, synonymes, procédures, fonctions, packages, triggers, utilisateurs, droits d’accès, rôles, profils, audits, etc… Il existe également des vues dynamiques, concernant essentiellemnt les ressources système en cours d’utilisation, les ressources Oracle en cours d’utilisation, les sessions connectées, les verrous, etc. C’est ce qu’on appelle les vues et tables virtuelles. Toutes les tables et vues du dictionnaire appartiennent à SYS. Elles sont consultables suivant le profil de l’utilisateur.

Les vues statiques

Il existe 3 catégories de vues (reconnaissables par leur préfixe) :

USER_XXX : décrit les objets appartenant à l’utilisateur connecté

ALL_XXX : décrit les objets accessibles à l’utilisateur connecté

DBA_XXX : décrit tous les objets (vues autorisées aux DBAs seulement…)

chaque XXX est en général remplacé par un nom (en anglais) significatif. Ainsi USER_TABLES est la vue de toutes MES tables, DBA_SYNONYMS est la vue de TOUS les synonymes du système.ALL_VIEWS est la vue de toutes les vues qui me sont accessibles (mais dont je ne suis pas forcément le créateur…)

Une (méta) description du dictionnaire est donnée par la vue DICT.

Voici un exemple de qq vues du dictionnaires (parmi des centaines)

dico2