Académique Documents
Professionnel Documents
Culture Documents
M. GUEYE
igueye@ept.sn
OBJECTIFS
• NOTIONS
• Dictionnaire de données
• Importation / Exportation de données (En TP N°2)
• Désactivation de contraintes (En TP N°2)
• PRATIQUES
• Connaitre la structure des catalogues Oracle et MySQL et savoir
l’utiliser dans des activités d’administration
• Savoir utiliser les principales fonctionnalités de SQL*Loader (SGBD
Oracle)
• Savoir activer et désactiver de contraintes de manière fine sous le
SGBD ORACLE
M. GUEYE - igueye@ept.sn 2
DICTIONNAIRE DE DONNEES
• Catalogue ou dictionnaire
– Présent dans tout SGBD multi-bases et multi-utilisateurs : essentiel à
l’administration de la base
– Base de données interne gérant tous les objets (tables et leurs contraintes, vues,
utilisateurs, droits, index etc …) connus du SGBD
• Structure
– Une ou plusieurs tables par type d’objet géré par le SGBD
– Une table/vue joue souvent le rôle de point d’entrée dans cette base de données
d’administration : liste l’ensemble des éléments du dictionnaire.
Exemples
ORACLE vue DICTIONARY
MySQL vue INFORMATION_SCHEMA.TABLES liste toutes les
tables manipulées par le SGBD, dont celles du dictionnaire.
M. GUEYE - igueye@ept.sn 3
Le dictionnaire sous Oracle
• Le dictionnaire de données (data dictionary) est un ensemble de
tables et de vues qui contient toutes les informations concernant la
structure de stockage et tous les objets de la base.
M. GUEYE - igueye@ept.sn 4
DICTIONNAIRE DE DONNEES
Exemple : dictionnaire ORACLE
M. GUEYE - igueye@ept.sn 5
Le dictionnaire sous Oracle
• Le dictionnaire de données stocke les informations sur :
– La structure logique de la base de données.
– La structure physique de la base de données.
– Les noms et les définitions des objets.
– Les contraintes d’intégrité définies pour les objets d’une base de
données.
– Les noms des utilisateurs valides de la base de données et les
privilèges attribués à chaque utilisateur de la base de données.
– L’audit sur une base de données.
M. GUEYE - igueye@ept.sn 6
Le dictionnaire sous Oracle
• Informations cryptées accessibles uniquement via des vues
• Préfixes: USER, ALL, DBA
– USER_* vues relatives aux objets appartement à l'utilisateur
– ALL_* vues relatives aux objets accessibles par l'utilisateur (ceux
dont il est propriétaire ainsi que ceux pour lesquels il a un droit d’accès)
– DBA_* vues relatives à l’administration (droits utilisateurs, rollback
segments, etc...) de la BD. Accessibles uniquement par l’utilisateur SYSTEM.
• Les vues DBA contiennent des informations sur les objets de tous les schémas.
• Vue DICTIONARY
– Vue d’entrée du dictionnaire
– Raccourci : DICT
M. GUEYE - igueye@ept.sn 7
Les vues du dictionnaire des données
DBA
ALL
USER
V$
M. GUEYE - igueye@ept.sn 8
Les vues dynamiques normales
• 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.
M. GUEYE - igueye@ept.sn 9
Les vues dynamiques normales
Catégorie Vues
M. GUEYE - igueye@ept.sn 10
Le guide du dictionnaire
• Les descriptions des objets sont accessibles via une vue
nommée DICTIONARY. Cette vue, également accessible via le
synonyme public DICT, interroge la base de données pour
déterminer à quelles vues du dictionnaire on peut accéder. Elle
recherche également les synonymes publics définis pour ces
vues.
M. GUEYE - igueye@ept.sn 11
Principales vues
Nature de l’objet Vues
Objets USER_OBJECT : objets appartenant à l’utilisateur (synonyme OBJ).
(au sens général) USER_ERRORS : erreurs après compilation des objets PL/SQL stockés
(procédures, fonctions, paquetages, déclencheurs).
USER_STORED_SETTINGS : paramètres des objets PL/SQL stockés.
USER_SOURCE : source des objets PL/SQL stockés.
Tables
USER_TABLES : description des tables relationnelles de l’utilisateur (synonyme
TABS).
USER_ALL_TABLES : description des tables relationnelles et objets de l’utilisateur.
M. GUEYE - igueye@ept.sn 15
Le dictionnaire sous Oracle
Vues principales du dictionnaire
Une ou plusieurs vues par type d’objet manipulé par ORACLE
– Table
– Vue (view)
– Vue matérialisée (materialized view)
– Synonyme (synonym) Objets «avancés »
– Séquence (sequence) étudiés au cours
– Cluster de cet enseignement
– Index
– Déclencheur (trigger)
M. GUEYE - igueye@ept.sn 17
Administration des BD
Import/Export de données
M. GUEYE
igueye@ept.sn
Importation de données
• Importation à partir de fichiers de données
– Principe : données récupérées sous la forme d’un ensemble de
fichiers ASCII / Unicode (données non structurées)
– Données externes ordonnées suivant un format donné
Exemple format CSV: suite de champs de valeurs séparés par un points virgule.
MI1; Master Informatique-1 ; IT-GL
19
Importation de données
• Principe
– Fichier de contrôle pour décrire le format des données à lire et le
format de la base de données à charger
– Exemple ORACLE SQL*Loader
20
Importation de données
• Exemple (suite) Oracle SQL*Loader
RELATION
PARTI : [id] x [sigle] x [nom] x [courant] x [gvt]
DEPENDANCES FONCTIONNELLES
[id] ➔ [sigle] x [nom] x [courant] x [gvt]
TYPE DE DONNES
[id], [gvt] : entier
[sigle], [nom], [courant] : chaîne caractères
CONTRAINTES DOMAINE
[gvt] appartient {0,1} 21
Importation de données
• Exemple (suite) Oracle SQL*Loader
LOAD DATA
INFILE ’parti.don'
INSERT
INTO TABLE parti
FIELDS TERMINATED BY ";"
(
id SEQUENCE "sequence_id.nextval",
sigle CHAR "upper(:sigle)" ,
nom CHAR ,
courant CHAR,
gvt INTEGER EXTERNAL
)
22
Importation sous Oracle: SQL*Loader
• Appel
– si le service est lancé, directement depuis l’interface de commande de l’OS.
– Commande simplifiée :
sqlldr [userid/passwd] nom_fic_ctl
[nom_fic_data][nom_fic_log][nom_fic_bad]
• Aide en ligne $ sqlldr 23
Importation sous Oracle: SQL*Loader
• Importance des fichiers log
• Trace d’exécution SQL*Loader : pas d’information sur le chargement des données.
25
Importation sous Oracle: SQL*Loader
• Exemple de fichier de données: parti.don
1 ; NC ; Nouveau Centre ; droite ;1
2 ; LO ; Lutte Ouvrière ; ext_gauche ; 0
3 ; LCR ; Ligue Communiste Revolutionnaire ; ext_gauche ; 0
4 ; PS ; Parti Socialiste ; gauche ;0
5 ; PC ; Parti Communiste ; gauche ;0
6 ; PRG ; Parti Radical de Gauche ; gauche ;0
7 ; Verts ; Parti Ecologiste ; gauche ;0
8 ; Modem ; Mouvement Democrate ; centre ;0
9 ; APR ; Alliance Pour la Republique ; droite ;1
10 ; FOU ; Front National ; ext_droite ; 0
11 ; CPNT ; Chasse Peche Nature Traditions ; droite ;0
26
Importation sous Oracle: SQL*Loader
• Exemple de fichier de contrôle associé (1)
Chargement positionnel des données
LOAD DATA
INFILE 'parti.don'
INSERT
INTO TABLE parti
(
num_p POSITION(01:02) INTEGER EXTERNAL,
sigle POSITION(05:14) CHAR,
Nom POSITION(17:48) CHAR,
courant POSITION(52:62) CHAR,
gvt POSITION(65:66) INTEGER EXTERNAL
)
27
Importation sous Oracle: SQL*Loader
• Exemple de fichier de contrôle associé (2)
Séparation des données à l’aide des séparateurs du format .csv
LOAD DATA
INFILE 'parti.don'
INSERT INTO TABLE parti
FIELDS TERMINATED BY ";"
(
num_p INTEGER EXTERNAL,
sigle,
Nom,
courant,
Gvt INTEGER EXTERNAL
)
28
Importation sous Oracle: SQL*Loader
• Exemple de fichier de contrôle avec données intégrées
LOAD DATA
INSERT INTO TABLE parti
FIELDS TERMINATED BY ";"
(
num_p INTEGER EXTERNAL,
sigle,
Nom,
courant,
Gvt INTEGER EXTERNAL
)
BEGIN DATA
1 ; PT ; Parti des Travailleurs ; ext_gauche ;0
2 ; LO ; Lutte Ouvrière ; ext_gauche ;0
29
Importation sous Oracle: SQL*Loader
• Principaux formats externes reconnus par SQL*Loader
SQL*Loader assure la conversion du format externe au format interne à la base
automatiques
- Séquences (cf. cours chap. III) type SEQUENCE
- Date courante type SYSDATE 30
Importation sous Oracle: SQL*Loader
• Modification des données avant chargement
Les fonctions SQL standard sont implantées dans SQL*Loader
Exemple
LOAD DATA
INFILE ’personne.don'
INSERT
INTO TABLE personne
FIELDS TERMINATED BY ";"
(
pers_id SEQUENCE "sequence_id.nextval",
name CHAR "upper(:name)" ,
birthday DATE "DD-MM-YYYY" ,
fortune_euro INTEGER EXTERNAL,
fortune_cfa INTEGER EXTERNAL ":fortune_euro * 665"
)
31
Importation sous Oracle: SQL*Loader
• Chargement conditionnel des données
LOAD DATA
INFILE ’personne.don'
INSERT
INTO TABLE pers_sn
WHEN pays=‘sn’
(
pays POSITION(01:02) CHAR,
nom POSITION(05:25) CHAR,
)
INTO TABLE pers_etranger
WHEN pays !=‘sn’
(
pays POSITION(01:02) CHAR,
nom POSITION(05:25) CHAR,
)
32
IMPORT/ EXPORT DE DONNEES
• Coût computationnel
– Opération lourde en terme de calculs
– Cette opération peut encore être ralentie lors du chargement dans la
base de données
• Vérification des contraintes
• Remise à jour des index (cf. Documentation ou chap. III)
• Vérification des conditions de déclenchement des triggers
• Recommandations
– Désactiver les contraintes avant le chargement et les réactiver ensuite
– Idem pour les index et les déclencheurs (triggers)
33
IMPORT/ EXPORT DE DONNEES
• Désactivation de contraintes
Exemple: ORACLE
Désactivation
ALTER TABLE <table> DISABLE CONSTRAINT <nom_contrainte>
Importation
sqlldr
Préparation réactivation
Création d’une table de récupération des tuples posant problème
Réactivation
ALTER TABLE <table> ENABLE CONSTRAINT <nom_contrainte>
EXCEPTIONS INTO <table_erreurs>
34
ORACLE: Désactivation de contraintes
• Objectif: Accélérer les procédures d’importation/exportation
• Désactivation temporaire d’une contrainte
• Mise en état DISABLE de la contrainte
ALTER TABLE [<schema>.]<nom_table>
DISABLE CONSTRAINT <nom_contrainte>
35
ORACLE: Désactivation de contraintes
• Table des erreurs récupérées
Table à créer spécifiquement à l’aide d’une commande CREATE TABLE
– 1° champ de type ROWID (contiendra les adresses dans la table des tuples
érronés)
– 2° champ de type VARCHAR2(30) : nom du propriétaire de la table
– 3° champ de type VARCHAR2(30) : nom de la table
– 4° champ de type VARCHAR2(30) : nom de la contrainte violée
Type ROWID
–Type prédéfini spécifique à ORACLE et correspondant à un pseudo-attribut qui
précise l’adresse relative (dans la table) de chaque tuple. Qu’une relation ait ou
pas une clé primaire, ORACLE lui associe un attribut ROWID (Row
Identificateur).
–Lorsqu’un tuple enfreint une contrainte, celui-ci n’est pas effacé de la relation:
simplement, son ROWID est marqué comme « non valide » et le tuple
correspondant est ignoré lors des utilisations de la table.
36
ORACLE: Désactivation de contraintes
• Consultation des erreurs à traiter après réactivation
M. GUEYE - igueye@ept.sn 37
ORACLE: Désactivation de contraintes
• Validation de contrainte: modes VALIDATE/NO VALIDATE
M. GUEYE - igueye@ept.sn 38
Bibliographie et documentation
• Webographie
– Documentation officielle Oracle
• Database Utilities: Part II SQL*Loader, url: http://
docs.oracle.com/cd/B28359_01/server.111/b28319/part_ldr.htm
• Bibliographie
• Rick Greenwald, David Kreines, Oracle in a Nutshell: A Desktop
Quick Reference, "O'Reilly Media, Inc.", 18 déc. 2002 - 906
pages
M. GUEYE - igueye@ept.sn 39
Questions …!?
M. GUEYE - igueye@ept.sn 40
Oracle IMPORT/ Oracle EXPORT
• Présentation
– Outil de transfert du contenu d’une base vers une autre
– Sauvegardes partielles du contenu d’une base
– Ne concerne que des bases Oracle, éventuellement sur des
plateformes différentes : non utilisable, comme SQL*Loader, pour
l’importation de données à partir de fichiers ASCII
• Lancement
– Commande exp nom_user/password
41
Sequence value exemple
• CREATE SEQUENCE key_seq
MINVALUE 1
MAXVALUE 9999
START WITH 1
INCREMENT BY 1
CACHE 20;
• key_seq.NEXTVAL;
M. GUEYE - igueye@ept.sn 42
Sequence value exemple
• DROP SEQUENCE sequence_name;
M. GUEYE - igueye@ept.sn 43