Oracle
DD- data dictionary - Le dictionnaire des données
Le DD contient des données sur les données -Metadata (Métadonnée- c'est une grande partie d’une BD Oracle.
Utilisateur « SYS »est le propriétaire du DD
Le DD est constitué d’un ensemble de tables système à partir desquelles sont définies environ 600 cents vues distinctes, et sont situées dans l’espace de stockage (tablespace) SYSTEM.
Le DD stocke les informations sur :
La structure logique de la BD.
La structure physique de la BD.
Les noms et les définitions de tout type d'objets.
Les contraintes d’intégrité définies pour les objets d’une BD.
Les noms des utilisateurs et les privilèges attribués à chaque utilisateur de la BD.
L’audit sur une BD.
Celles-ci stockent toutes les informations décrivant tous les objets de la base de données.
Classification des vues
Les vues du DD
Soit la vue v. Trois classes de vues sont proposées par Oracle:
● USER_v décrit les objets du schéma de l’utilisateur connecté (qui interroge le dictionnaire) ;
● ALL_v (extension de la précédente) décrit les objets du schéma de l’utilisateur connecté et
les objets sur lesquels il a reçu des privilèges ;
● DBA_v décrit les objets de tous les schémas (de plus il faut préfixer le nom de la vue par
celui du propriétaire, ici SYS.DBA_v).
Les vues dynamiques normales
Les vues dynamiques des performances V_$ ... NOTE: Oracle crée un synonyme public avec le préfixe V$.
Accessibles uniquement pour l’utilisateur « SYS » ou pour tout autre utilisateur qui a le privilège « SYSDBA ».
La liste complète des vues de performances est disponible à partir de la vue « V$FIXED_TABLE ». Ces vues sont utilisées pour fournir des données relatives aux performances telles que des informations sur les fichiers de données et les structures de la mémoire.
Les vues des bases en cluster
nécessaires dans une configuration de cluster. Pour surveiller les performances d’instances placées sur des serveurs différents, il est important de disposer des vues identiques aux vues dynamiques mais permettant d’identifier l’instance surveillée. Elles sont identifiées avec le préfixe « GV$ ».
Démarche à suivre pour interroger correctement le DD
Etape 1: trouver le nom de la vue pertinentes à partir de la vue racine DICTIONARY
Etape 2: Utiliser DESC pour choisir les colonnes de la vue à sélectionner
Etape 3: Utiliser la sélection et projection SELECT WHERE pour interroger la vue.
DESC DICTIONARY >> Structure de la vue racine.
La requête interroge cette vue pour extraire automatiquement le nom des trois vues qui concernent les séquences (notez l’utilisation des majuscules dans la condition)
Il est aussi possible de tester la colonne COMMENTS.
Ce principe de recherche ramène plus de résultats que l’interrogation en testant le nom de
colonne TABLE_NAME (notamment à cause des synonymes de vues, ici SEQ).
Interrogeons de cette manière le dictionnaire :
Choisir les colonnes
DESC vueNom >> Pour voir les colonnes.
Exemple la vue USER_SEQUENCES:
Résultat : 8 colonnes.
Par exemple, créant deux séquences:
Interrogeons le DD à travers les quatre premières colonnes de la vue USER_SEQUENCES.
En fin quelles sont les principales vues?
Par la pratique
1- Objets d’un schéma
Lancer SQL*Plus
Objectif : Interroger la vue USER_OBJECTS pour retrouver tous les objets du schéma courant (avec la date de création).
Remarque : L’instruction COL précise le nombre de caractères à éditer pour une colonne à l’affichage.
COL OBJECT_NAME FORMAT A35
SELECT OBJECT_NAME, OBJECT_TYPE, CREATED FROM USER_OBJECTS;
2- Structure d’une table
Pour extraire le nom des tables c'est simple >> ajouter la condition « WHERE TABLE_NAME=
’NomTABLE’ » .
Une fois qu’on connaît le nom d’une table >> Utiliser DESC pour retrouver sa structure à l’aide de la vue USER_TAB_COLUMNS.
La requête suivante décrit en partie la table EMP
COL COLUMN_NAME FORMAT A15
COL DATA_TYPE FORMAT A30
SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION
FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'EMP';
3- Recherche des contraintes d’une table
Utiliser la vue USER_CONSTRAINTS >> DESC ...
Pour retrouver la liste des contraintes d’une table, il faut utiliser les colonnes CONSTRAINT_NAME et CONSTRAINT_TYPE de la vue.
Trois valeurs sont possibles au niveau de la colonne CONSTRAINT_TYPE
(P désigne la clé primaire, R désigne une clé étrangère et C une contrainte CHECK, UNIQUE ou NOT NULL).
La requête suivante liste les contraintes de la table DEPT
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'DEPT';