Définition des données
Le Dictionnaire de Données Oracle
La plupart des SGBD gèrent la majorité de leurs propres informations dans un catalogue de tables
appelé métabase ou dictionnaire de données.
Le dictionnaire de données est l’un des composants principaux du serveur Oracle. Il est constitué d’un
ensemble de tables et de vues utilisables seulement en lecture et qui contiennent toutes les
informations portant sur la base de données. Les tables du dictionnaire de données sont rarement
accédées directement en raison de la complexité des informations qui y sont stockées. Habituellement
l’utilisateur interroge le dictionnaire de données au travers de vues qui présentent les informations
sous une forme plus facile à utiliser.
La mise à jour du dictionnaire SGBD lui-même en fonction des requêtes de création ou de gestion
des droits que chaque utilisateur fait.
Toutes les tables du dictionnaire de données appartiennent au compte SYS d’administration d’Oracle.
Interrogation du Dictionnaire de données
Vous pouvez interroger le dictionnaire de données en utilisant la commande SQL SELECT.
En fonction de vos privilèges, vous pouvez interroger différentes vues.
Nom de la vue Description
DICTIONARY : Donne toutes les tables, vues et synonymes du dictionnaire des données
accessibles par l’utilisateur.
TABLE_PRIVILEGES : Privilèges sur les objets pour lesquels l’utilisateur a reçu ou donné des droits
ou dont il est propriétaire.
IND : C’est un synonyme pour la vue USER_INDEXES.
« Retrouver la structure du catalogue du dictionnaire »
DESCRIBE DICT
« Liste de toutes les vues du Dictionnaire de données accessibles par l’utilisateur »
SELECT *
FROM DICT
« Retrouver toutes les vues du dictionnaire se rapportant au mot clé ‘grant’ »
SELECT *
FROM DICT
WHERE LOWER(comments) LIKE ‘%grant%’
Pour voir la description de chaque colonne des tables ou vues du dictionnaire de données, il faut
utiliser la vue DICT_COLUMNS.
« Description des colonnes de la vue USER_OBJECTS »
DESCRIBE USER_OBJECTS ;
SELECT column_name, comments
FROM DICT_COLUMNS
WHERE table_name = ‘USER_OBJECTS’
Catégories des vues du Dictionnaire de données
Sous Oracle existe trois catégories de vues. Chaque catégorie a un préfixe particulier.
DBA_XXX : tous les objets de la base de données
ALL_XXX : objets accessibles à l’utilisateur en cours
USER_XXX : objets appartenant à l’utilisateur en cours
USER_… : Les vues commençant par ce préfixe, contiennent les objets appartenant à l’utilisateur. Par
exemple, les vues ayant ce préfixe permettent à l’utilisateur de visualiser les informations concernant
les tables qu’il a créés et les privilèges qu’il a octroyés :
USER_OBJECTS, USER_CONSTRAINTS, USER_COL_COMMENTS, USER_TABLE_COMMENTS,
USER_CONS_COLUMNS
« Vérifier les contraintes de la table PILOTE »
SELECT constraint_name, constraint_type
FROM USER_CONSTRAINTS
WHERE table_name = ‘PILOTE’;
ALL_… : Donnent des informations sur les objets sur lesquels l’utilisateur a reçu des droits d’accès et
sur ceux qui lui appartiennent.
ALL_COL_COMMENTS, ALL_TAB_COMMENTS.
« Retrouver toutes les vues du dictionnaire préfixée par ALL »
SELECT table_name
FROM DICT
WHERE upper(table_name) like ‘ALL%’;
DBA_… : Permettent aux utilisateurs ayant le privilège DBA de retrouver les informations concernant
tous les objets de la base de données.
VS_… : Montrent les performances et le verrouillage de la base de données. Initialement, seulement
accessibles aux DBA.
Le langage SQL - Extrait du manuel du stagiaire © Faten Labbene Ayachi 2
Contrôle des accès utilisateurs
La sécurité de la base se divise en deux catégories : la sécurité système et la sécurité des données.
La sécurité système protège l’accès à la base de données au niveau système tel que l’identification
des utilisateurs, le mot de passe et le contrôle des quotas d’utilisation de ressources (espace disque ou
espace mémoire) autorisés.
La sécurité des données couvre l’accessibilité des objets de la base et les utilisations que les
utilisateurs peuvent faire de ces objets.
Dans cette partie nous abordons la sécurité des données des utilisateurs ou schémas.
Privilèges
Ce sont des droits accordés pour formuler certaines requêtes SQL.
L’administrateur de la base a le niveau de droits le plus élevé avec la possibilité de donner aux
utilisateurs des privilèges d’accès à la base et à des objets.
Les utilisateurs ont besoin de privilèges système pour accéder à la base et de privilèges objet pour
manipuler le contenu des objets de la base.
Un utilisateur peut être amené à donner une partie de ses droits à un autre utilisateur ou à un rôle qui
est un groupe nommé de privilèges associés.
Schéma
Un schéma est un ensemble d’objets tels que des tables, des vues et des séquences. C’est un objet de
la base de données Oracle.
Une base utilisateur Oracle peut contenir différents types d’objets.
Structure Description
Table Stocke les données
Vue Représente un sous-ensemble de données provenant d’une ou plusieurs tables.
Séquence Génère des valeurs de clés primaires.
Index Améliore les performances de certaines requêtes.
Synonyme Autre nom attribué à un objet
Procédures stockées
Un schéma est donc une structure logique qui fait directement référence aux données d’une base
utilisateur.
Le langage SQL - Extrait du manuel du stagiaire © Faten Labbene Ayachi 3
Pour créer une table (relationnelle ou objet), l’utilisateur doit disposer du privilège CREATE TABLE
et d’un espace de stockage dans lequel il pourra créer des objets. Les tables objets ne sont pas décrites
dans ce fascicule. L’administrateur de la base de données utilise les commandes du Langage de
Contrôle des Données (LCD) pour attribuer des privilèges aux utilisateurs.
Nous rappelons que les commandes du LDD permettent d’agir sur le contenant et non sur le contenu.
Les commandes du LDD sont un sous ensemble des commandes SQL utilisées pour créer, modifier
ou supprimer les structures d’une base de données ORACLE. Ces commandes ont un effet immédiat
sur la base de données et enregistrent des informations dans le dictionnaire des données.
Un schéma est la propriété d’un utilisateur et porte le nom de cet utilisateur. Le nom complet d’une
table ou d’une vue est USER.NOM_TABLE
Exemple : [Link] → table EMP crée par SCOTT
Ainsi, plusieurs utilisateurs peuvent créer des objets de même nom.
Attributions des privilèges objets à d’autres utilisateurs
Pour permettre un accès ou un traitement sur vos objets de la base à un autre utilisateur, il faut utiliser
la commande GRANT. Le propriétaire d’un objet dispose de tous les privilèges sur cet objet.
GRANT {objet_priv (, object_priv …) | ALL} [(columns)]
ON <objet>
TO {USER [, user …] | role | public}
[WITH GRANT OPTION]
avec :
object_priv est un privilège objet qui a été accordé
ALL tous les privilèges objet
Columns précise les colonnes des tables ou des vues sur lesquelles des
privilèges ont été accordés
ON object l’objet sur lequel le droit a été accordé
TO identifie le bénéficiaire des privilèges
PUBLIC pour accorder les privilèges à tous les utilisateurs
WITH GRANT OPTION Autorise le bénéficiaire à donner des privilèges à un autre
utilisateur.
Privilège objet Table Vue Séquence Procédure Snapshot
(cliché)
ALTER
Le langage SQL - Extrait du manuel du stagiaire © Faten Labbene Ayachi 4
DELETE
EXECUTE
INDEX
INSERT
REFERENCES
SELECT
UPDATE
En terme de privilèges, le terme procédure symbolise une procédure, une fonction ou la partie public
d’un package.
Privilèges
CREATE TABLE crée des tables dans son propre schéma.
CREATE ANY TABLE crée des tables dans le schéma d’un autre utilisateur.
« Donner un droit d’interrogation sur la table PILOTE »
GRANT SELECT
ON PILOTE
TO AYADI, MOURALI
« Accorder le privilège de mise à jour sur certaines colonnes de la table PILOTE »
GRANT UPDATE(PLNOM, VILLE)
ON PILOTE
TO AYADI, MOURALI
Cette commande limite les accès aux seules colonnes PLNOM et VILLE.
Un privilège qui a été accordé avec la préférence WITH GRANT OPTION peut être accordé à un autre
utilisateur. La révocation se fait en cascade.
« Autoriser un utilisateur à transmettre les privilèges qu’il a reçu »
GRANT SELECT
ON PILOTE
TO AYADI
WITH GRANT OPTION
« Attribuer des privilèges à tous les utilisateurs »
GRANT SELECT
ON PILOTE
TO PUBLIC
Vérification des privilèges objets accordés
Vous pouvez consulter le dictionnaire de données pour connaître vos privilèges.
Le langage SQL - Extrait du manuel du stagiaire © Faten Labbene Ayachi 5
Table du dictionnaire Description
USER_SYS_PRIVS Liste des privilèges systèmes accordés à un
utilisateur
USER_TAB_PRIVS_MADE Privilèges objet accordés à un utilisateur
USER_TAB_PRIVS_RECD Privilèges objet reçus d’un utilisateur
USER_COL_PRIVS_MADE Privilèges objet accordés sur des colonnes à
un utilisateur
USER_COL_PRIVS_RECD Privilèges objet définis sur des colonnes reçus
d’un utilisateur
USER_ROLE_PRIVS Rôles accessibles à l’utilisateur
ROLE_TAB_PRIVS Privilèges sur des tables accordés aux rôles
ROLE_SYS_PRIVS Privilèges systèmes accordés aux rôles
Les privilèges systèmes en cours sont disponibles dans la vue du dictionnaire SESSION_PRIV.
Retrait des privilèges objets
Pour retirer les privilèges à un utilisateur vous devez utiliser la commande REVOKE. Les privilèges
cités sont retirés aux utilisateurs spécifiés ainsi qu’à ceux qui ont reçu les privilèges par leur
intermédiaire.
REVOKE {object_priv (, object_priv …) | ALL}
ON objet
FROM {USER [, user …] | role | public}
[CASCADE CONSTRAINT]
Avec CASCADE CONSTRAINT : Nécessaire pour supprimer les contraintes d’intégrités
référentielles construites sur cet objet par l’intermédiaire du privilège
REFERENCE.
« Retirer le privilège SELECT aux utilisateurs Ayadi et Mourali»
REVOKE SELECT
ON PILOTE
FROM AYADI, MOURALI
Synonyme d’un objet
Pour accéder à une table d’un autre utilisateur, il faut préfixer le nom de la table par celui de son
propriétaire. Le synonyme vous évite de faire référence au schéma de l’objet et de pouvoir appeler
Le langage SQL - Extrait du manuel du stagiaire © Faten Labbene Ayachi 6
alternativement votre table, vue, séquence ou tout autre objet par un autre nom. Le synonyme permet
de manipuler par exemple des vues par des noms plus simples.
CREATE [PUBLIC] SYNONYM synonym
FOR objet
Avec PUBLIC : permet l’utilisation du synonyme par tous les utilisateurs.
synonym : nom du synonyme à créer.
Objet : précise l’objet pour lequel le synonyme a été créé.
Le nom du synonyme doit être différent de celui de tout autre objet appartenant au même propriétaire.
Exemple :
CREATE SYNONYM EMP
TO [Link];
Pour supprimer un synonyme utiliser la commande :
DROP SYNONYM synonym
Le langage SQL - Extrait du manuel du stagiaire © Faten Labbene Ayachi 7