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 : 

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$ ». 

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';