You are on page 1of 69

Auteur : MARCON Emmanuel

Version 1.0
Mise jour du : 10/02/2005

Administration ORACLE








Administration Oracle 2 / 69
E. MARCON V1.0

Table des Matires
1. ORACLE : GENERALITES................................................................................................................ 5
1.1. HISTORIQUE RAPIDE .......................................................................................................................... 5
1.2. CARACTERISTIQUES PRINCIPALES ...................................................................................................... 5
1.3. ADMINISTRER UNE BASE DE DONNEES................................................................................................ 5
2. ORACLE : ARCHITECTURE............................................................................................................. 6
2.1. LE SERVEUR ORACLE ........................................................................................................................ 6
2.2. LES OUTILS CLIENTS .......................................................................................................................... 7
2.3. LE PROTOCOLE RESEAU..................................................................................................................... 7
3. CONNEXION ENTRE CLIENTS ET SERVEUR................................................................................ 8
3.1. CLIENT ( CHAINE DE CONNEXION )....................................................................................................... 8
3.2. SERVEUR ( LISTENER ) ...................................................................................................................... 9
3.3. DEROULEMENT DUNE CONNEXION SIMPLE.......................................................................................... 9
4. SERVEUR ORACLE........................................................................................................................ 11
4.1. GENERALITE ................................................................................................................................... 11
4.2. LES FICHIERS .................................................................................................................................. 11
4.3. LES PROCESSUS ............................................................................................................................. 12
4.4. LA MEMOIRE.................................................................................................................................... 13
5. GESTION DUNE INSTANCE.......................................................................................................... 15
5.1. COMPTES DADMINISTRATION........................................................................................................... 16
5.2. CREATION DUNE INSTANCE.............................................................................................................. 16
5.3. DEMARRAGE DUNE INSTANCE.......................................................................................................... 16
5.3.1. Procdure simple................................................................................................................... 16
5.3.2. Etat dune instance ................................................................................................................ 17
5.3.3. Dtail de la commande startup.............................................................................................. 17
5.4. ARRET DUNE INSTANCE................................................................................................................... 17
5.4.1. Procdure simple................................................................................................................... 17
5.4.2. Dtail de la commande shutdown.......................................................................................... 17
5.5. SUPPRESSION DUNE INSTANCE........................................................................................................ 18
6. NOTIONS IMPORTANTES.............................................................................................................. 19
6.1. SCHEMAS, OPERATIONS, CONTRAINTES ............................................................................................ 19
6.1.1. les schmas........................................................................................................................... 19
6.1.2. les oprations de dfinition ou manipulation des donnes et les contraintes ....................... 19
6.2. TRANSACTION ................................................................................................................................. 19
6.2.1. Notion datomicit : ................................................................................................................ 19
6.2.2. Transaction dans un SGBDR ................................................................................................ 19
6.3. DICTIONNAIRE DE DONNEES............................................................................................................. 19
7. STRUCTURE LOGIQUE DORACLE.............................................................................................. 21
7.1. TABLESPACE ( ESPACE DE DISQUE LOGIQUE ) .................................................................................. 21
7.2. SEGMENT........................................................................................................................................ 22
7.3. EXTENT ( EXTENSION ) .................................................................................................................... 23
7.4. BLOCK ( BLOC )............................................................................................................................... 23
8. LES UTILISATEURS........................................................................................................................ 25
8.1. TYPE DAUTHENTIFICATION............................................................................................................... 25
8.2. GESTION DES UTILISATEURS ............................................................................................................ 25
8.2.1. Cration de nouveaux utilisateurs ......................................................................................... 25

Administration Oracle 3 / 69
E. MARCON V1.0
8.2.2. Modification dun utilisateur ................................................................................................... 26
8.2.3. Suppression dun utilisateur................................................................................................... 26
8.2.4. Vues systmes....................................................................................................................... 26
8.3. LES PROFILS ................................................................................................................................... 27
8.3.1. Notion de profil....................................................................................................................... 27
8.3.2. Cration dun profil................................................................................................................. 27
8.3.3. Modification dun profil ........................................................................................................... 28
8.3.4. Suppression dun profil .......................................................................................................... 28
8.3.5. Profil par dfaut...................................................................................................................... 28
8.3.6. Gestion des comptes ............................................................................................................. 29
8.4. LES PRIVILEGES .............................................................................................................................. 30
8.4.1. Notion de privilge................................................................................................................. 30
8.4.2. Les privilges systmes......................................................................................................... 30
8.4.3. Les privilges objets .............................................................................................................. 32
8.5. LES ROLES ..................................................................................................................................... 32
8.5.1. CRATION D'UN RLE........................................................................................................ 32
8.5.2. ACTIVATION D'UN RLE..................................................................................................... 33
8.5.3. MODIFICATION D'UN RLE ................................................................................................ 33
8.5.4. 4. SUPPRESSION D'UN RLE......................................................................................... 34
9. COMPLEMENT SQLPLUS.............................................................................................................. 35
9.1. L'ENVIRONNEMENT SQLPLUS D'ORACLE......................................................................................... 35
9.2. SYNTAXE DES COMMANDES SQLPLUS............................................................................................ 35
9.3. QUELQUES COMMANDES SQLPLUS................................................................................................ 35
9.3.1. Sortie de SQLPLUS............................................................................................................... 35
9.3.2. Excuter une commande systme ........................................................................................ 35
9.3.3. Gestion du buffer SQL........................................................................................................... 36
9.3.4. Sauvegarde et rcupration du buffer ................................................................................... 37
9.3.5. Excution du buffer SQL........................................................................................................ 38
9.4. GESTION DES FICHIERS DE COMMANDES........................................................................................... 38
9.5. MISE EN FORME DE L'AFFICHAGE ECRAN........................................................................................... 39
9.5.1. Titre de la colonne ................................................................................................................. 39
9.5.2. Format d'une colonne numrique ou texte ............................................................................ 39
9.6. VARIABLES D'ENVIRONNEMENT......................................................................................................... 41
10. COMPLEMENT SQL........................................................................................................................ 43
10.1. TYPES SQL................................................................................................................................. 43
10.1.1. Types numriques exacts .................................................................................................. 43
10.1.2. Types numriques flottants................................................................................................ 44
10.1.3. Caractres et chanes de caractres ................................................................................. 44
10.1.4. Dates.................................................................................................................................. 44
10.2. CREATION DES TABLES................................................................................................................. 44
10.2.1. NULL ou NOT NULL .......................................................................................................... 45
10.2.2. DEFAULT........................................................................................................................... 45
10.2.3. Contraintes......................................................................................................................... 45
10.3. MODIFICATION DU SCHEMA........................................................................................................... 48
10.4. CREATION DINDEX....................................................................................................................... 49
10.5. REQUETES SIMPLES SQL............................................................................................................. 49
10.5.1. Slections simples ............................................................................................................. 49
10.5.2. Re-nommage...................................................................................................................... 50
10.5.3. Doublons ............................................................................................................................ 50
10.5.4. Tri du rsultat ..................................................................................................................... 51
10.5.5. La clause WHERE ............................................................................................................ 51
10.5.6. Chanes de caractres....................................................................................................... 51
10.5.7. Dates.................................................................................................................................. 52
10.5.8. Valeurs nulles..................................................................................................................... 52

Administration Oracle 4 / 69
E. MARCON V1.0
10.6. REQUETES SUR PLUSIEURS TABLES .............................................................................................. 53
10.6.1. Jointures............................................................................................................................. 53
10.6.2. Union, intersection et diffrence......................................................................................... 54
10.7. REQUETES IMBRIQUEES ............................................................................................................... 54
10.8. SOUS - REQUETES CORRELEES..................................................................................................... 56
10.9. AGREGRATION............................................................................................................................. 56
10.9.1. Fonctions dagrgation....................................................................................................... 56
10.9.2. La clause GROUP BY...................................................................................................... 57
10.9.3. La clause HAVING .......................................................................................................... 57
10.10. MISES A JOUR.............................................................................................................................. 57
10.10.1. Insertion.............................................................................................................................. 58
10.10.2. Destruction ......................................................................................................................... 58
10.10.3. Modification........................................................................................................................ 58
10.11. VUES .......................................................................................................................................... 59
10.11.1. Cration et interrogation dune vue.................................................................................... 59
10.11.2. Mise jour dune vue......................................................................................................... 59
11. COMPLEMENT PL/SQL.................................................................................................................. 61
11.1. INTRODUCTION ............................................................................................................................ 61
11.2. STRUCTURE D'UN BLOC PL/SQL .................................................................................................. 61
11.3. DETAILS DU SCRIPT PL/SQL ........................................................................................................ 62
11.3.1. PARTIE DECLARATION :.................................................................................................. 62
11.3.2. CORPS DU BLOC : ........................................................................................................... 62
11.4. STRUCTURES ALGORITHMIQUES ................................................................................................... 63
11.5. SAISIE DE DONNEES AU CLAVIER................................................................................................... 63
11.6. AFFICHAGES DE RESULTATS......................................................................................................... 64
11.7. LES CURSEURS............................................................................................................................ 64
12. GLOSSAIRE..................................................................................................................................... 66


Administration Oracle 5 / 69
E. MARCON V1.0
1
1
1
.
.
.


O
O
O
R
R
R
A
A
A
C
C
C
L
L
L
E
E
E


:
:
:


G
G
G
E
E
E
N
N
N
E
E
E
R
R
R
A
A
A
L
L
L
I
I
I
T
T
T
E
E
E
S
S
S

1
1
1.
.
. 1
1
1.
.
. H
H
HI
I
IS
S
ST
T
TO
O
OR
R
RI
I
I Q
Q
QU
U
UE
E
E R
R
RA
A
AP
P
PI
I
I D
D
DE
E
E
1977 : cration d Oracle Corporation
1979 : premire version commercialise du SGBDR
1984 : premire version PC

Les principales version aujourdhui : 8 (1997), 8i, 9i ( i : forte intgration des outils Internet/Intranet et
drives (java, e-business, ))

La dernire version lance en 2004 est la 10g
La premire version dOracle pour Windows est assez rcente avec la version7.

1
11
.
..
2
22
.
..


C
CC
A
AA
R
RR
A
AA
C
CC
T
TT
E
EE
R
RR
I
II
S
SS
T
TT
I
II
Q
QQ
U
UU
E
EE
S
SS


P
PP
R
RR
I
II
N
NN
C
CC
I
II
P
PP
A
AA
L
LL
E
EE
S
SS


Oracle est un Systme de Gestion de Bases de Donnes relationnelles ( SGBDR ) qui fonctionne sur les
plates-formes :
UNIX, LINUX
WINDOWS, NOVELL

Oracle en plus des fonctions de SGBDR :
propose des outils de restauration/sauvegarde
Permet dexporter/importer vers dautres systmes
Propose dans son architecture une machine virtuelle JAVA qui permet dutiliser des programmes
JAVA directement dans la Base de Donnes

1
11
.
..
3
33
.
..


A
AA
D
DD
M
MM
I
II
N
NN
I
II
S
SS
T
TT
R
RR
E
EE
R
RR
U
UU
N
NN
E
EE


B
BB
A
AA
S
SS
E
EE
D
DD
E
EE


D
DD
O
OO
N
NN
N
NN
E
EE
E
EE
S
SS

Ladministration dune base de donnes consiste :
Concevoir la BD
Modle conceptuel
Modle logique
Organiser techniquement la base de donnes
Installer le SGBD
Crer la Base de Donnes
- Paramtrage de la mmoire utilise
- Dimensionnement des fichiers physiques,
- Tables, etc
Grer la Scurit de la BD
Cration des utilisateurs et de leurs droits
Prserver lintgrit de la BD
Procdures de sauvegarde,


Administration Oracle 6 / 69
E. MARCON V1.0
2
2
2.
.
. O
O
OR
R
RA
A
AC
C
CL
L
LE
E
E :
:
: A
A
AR
R
RC
C
CH
H
HI
I
IT
T
TE
E
EC
C
CT
T
TU
U
UR
R
RE
E
E
Larchitecture gnrale dOracle est base autour de 3 lments principaux :
Le serveur ORACLE qui correspond au moteur de la base Oracle.
Les outils ou applications clientes qui regroupent lensemble des applications pouvant se
connecter une base ORACLE
La connexion rseau qui permet la connexion entre le serveur et le client






























2
2
2.
.
. 1
1
1.
.
. L
L
LE
E
E S
S
SE
E
ER
R
RV
V
VE
E
EU
U
UR
R
R O
O
OR
R
RA
A
AC
C
CL
L
LE
E
E
Les rles du serveur sont :
Stocker les donnes,
Contrler lintgrit des donnes et le bon fonctionnement de la base de donnes,
Permettre la connexion dun client sur la base de donnes.

Le serveur Oracle est compos dune ou plusieurs instances comprenant chacune :
Des processus mis en uvre par Oracle pour la gestion de la Base de Donnes
Dune zone mmoire permettant lorganisation des donnes
De fichiers permettant le stockage physique de lensemble des donnes et des caractristiques de la
base de donnes.

Le module dcoute est llment qui permet de capter les connexions effectues sur la base de
donnes.
Instance ORACLE
Processus
Mmoire ( S.G.A)
Fichiers
M
O
D
U
L
E

D
E
C
O
U
T
E




Protocole
Rseau

NET 8
ou
SQL NET

Serveur ORACLE
Client ORACLE
Outils de requtage :
SQL PLUS
SQL WORKSHEET
Outils dadministration :
DBA Studio
Oracle Entreprise
Manager ( OEM)

Outils de dveloppement :
WebDB
Oracle Designer
Oracle Developer
JDeveloper suite
Applications spcifiques
utilisant les interfaces :
SQL et PL/SQL
PRO C / C++
SQLJ et JDBC
ODBC


Administration Oracle 7 / 69
E. MARCON V1.0
2
2
2.
.
. 2
2
2.
.
. L
L
LE
E
ES
S
S O
O
OU
U
UT
T
TI
I
IL
L
LS
S
S C
C
CL
L
LI
I
I E
E
EN
N
NT
T
TS
S
S
Leur rle est de permettre le traitement des donnes de la base de donnes.

Certaines applications sont cres par Oracle ( outils de requtage, outils dadministration de la base et
outils de dveloppement ). Des applications spcifiques peuvent tre cres partir :
de langages comme le SQL et le PL/SQL
ou dun lien vers la base de donnes du type ODBC, JDBC.

2
2
2.
.
. 3
3
3.
.
. L
L
LE
E
E P
P
PR
R
RO
O
OT
T
TO
O
OC
C
CO
O
OL
L
LE
E
E R
R
RE
E
ES
S
SE
E
EA
A
AU
U
U
Le protocole rseau est charg de vhicul les informations ( connexion, donnes, ) entre lapplication
cliente et le serveur Oracle.

Ce protocole sappuie sur un protocole rseau standard ( ex : TCP IP).

Pour le paramtrage dune connexion, il faudra dfinir des paramtres sur le Serveur et sur le Client.

Administration Oracle 8 / 69
E. MARCON V1.0
3
3
3
.
.
.


C
C
C
O
O
O
N
N
N
N
N
N
E
E
E
X
X
X
I
I
I
O
O
O
N
N
N


E
E
E
N
N
N
T
T
T
R
R
R
E
E
E
C
C
C
L
L
L
I
I
I
E
E
E
N
N
N
T
T
T
S
S
S
E
E
E
T
T
T
S
S
S
E
E
E
R
R
R
V
V
V
E
E
E
U
U
U
R
R
R


Comme nous lavons prcis prcdemment, la connexion entre les clients et le serveur ncessite le
paramtrage des deux protagonistes.

Le paramtrage du client dfinir pour effectuer une connexion sont :
Le serveur Oracle
Linstance
Le nom dutilisateur et le mot de passe utilis

La partie serveur consiste paramtrer le Module dcoute.

3
3
3.
.
. 1
1
1.
.
. C
C
CL
L
LI
I
I E
E
EN
N
NT
T
T (
(
( C
C
CH
H
HA
A
AI
I
IN
N
NE
E
E D
D
DE
E
E C
C
CO
O
ON
N
NN
N
NE
E
EX
X
XI
I
I O
O
ON
N
N )
)
)
Chaque client qui souhaite se connecter une base de donnes oracle doit avoir dfini une chane de
connexion ( ou service). Cette chane de connexion est constitue du nom du serveur oracle ( ou de
ladresse ), du port sur lequel le module dcoute attend les connexions et du nom de linstance ( un
mme serveur pouvant hberger plusieurs instances.

Les chanes de connexion sont enregistres dans un fichier TNSNAMES.ORA .

Exemple de fichier :



























Ce fichier est stock gnralement dans le rpertoire [ORACLE_HOME]\network\admin pour les versions
Windows et ORACLE_HOME]/network/admin pour les versions UNIX.
# TNSNAMES.ORA Network Configuration File:
C:\oracle\ora81\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

CHAINECONNEXION1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = monserveuroracle)(PORT = 1521))
)
(CONNECT_DATA =
(SID = MONINSTANCE)
)
)

CHAINECONNEXION2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = monserveur2.oracle.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1526))

)
(CONNECT_DATA =
(SID = MONINSTANCE2)
)
)
Nom de la chane de connexion
Protocole utilis
Nom ou adresse du serveur Port du module
dcoute
Nom de linstance

Administration Oracle 9 / 69
E. MARCON V1.0
3
3
3.
.
. 2
2
2.
.
. S
S
SE
E
ER
R
RV
V
VE
E
EU
U
UR
R
R (
(
( L
L
LI
I
IS
S
ST
T
TE
E
EN
N
NE
E
ER
R
R )
)
)
Le serveur gre les connexions grce deux lments :
Le module dcoute ( Listener )
Processus Serveur

Le module dcoute, ou Listener, est charg dcouter les connexions susceptibles dtre ralises sur le
serveur. Le listener est un processus ou service autonome qui sexcute sur le serveur.

Le processus Serveur est un processus cr pour chaque connexion utilisateur ( un par utilisateur ) est
charg de la communication des donnes entre linstance et lapplication cliente.

Les paramtres du Listener sont stocks dans un fichier LISTENER.ORA.

Exemple de fichier
























Ce fichier est stock gnralement dans le rpertoire [ORACLE_HOME]\network\admin pour les versions
Windows et ORACLE_HOME]/network/admin pour les versions UNIX.
3
3
3
.
.
.
3
3
3
.
.
.


D
D
D
E
E
E
R
R
R
O
O
O
U
U
U
L
L
L
E
E
E
M
M
M
E
E
E
N
N
N
T
T
T


D
D
D

U
U
U
N
N
N
E
E
E
C
C
C
O
O
O
N
N
N
N
N
N
E
E
E
X
X
X
I
I
I
O
O
O
N
N
N
S
S
S
I
I
I
M
M
M
P
P
P
L
L
L
E
E
E

Une connexion simple dune application cliente sur un serveur Oracle peut se dcrire de la faon
suivante :
Lancement de lapplication
Par lapplication, les lments suivant sont envoys :
Nom dutilisateur
Mot de passe
Nom du service
Le protocole rseau ( NET8 ou SQLNET) vrifie dans le TNSNAMES.ORA si le nom du service existe
et rcupre le protocole rseau utiliser, le nom ou ladresse du serveur associ et le port dcoute.
Le protocole rseau ( NET8 ou SQLNET) recherche le serveur Oracle sur le port dtermin
prcdemment.
Le serveur rceptionne la demande par lintermdiaire du Listener
#
# Filename: Listener.ora
#
LISTENER =
(ADDRESS_LIST =
(ADDRESS= (PROTOCOL= TCP)(Host= monserveur)(Port= 1521))
)









SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = moninstance)
)
)
Nom du Listener
Protocole rseau support
Nom ou Adresse du serveur
Port dcoute du Listener
Dfinition du Listener
Liste des instances supportes par le listener
Nom de linstance

Administration Oracle 10 / 69
E. MARCON V1.0
Le listener cherche dans son fichier Listener.ora si linstance demande existe
Validation du compte (utilisateur / mot de passe)
Cration dun processus Serveur ddi la connexion en cours.



Administration Oracle 11 / 69
E. MARCON V1.0
4
4
4
.
.
.


S
S
S
E
E
E
R
R
R
V
V
V
E
E
E
U
U
U
R
R
R


O
O
O
R
R
R
A
A
A
C
C
C
L
L
L
E
E
E


4
4
4.
.
. 1
1
1.
.
. G
G
GE
E
EN
N
NE
E
ER
R
RA
A
AL
L
LI
I
I T
T
TE
E
E
Le serveur Oracle est dcoup en trois parties :
Un ensemble de fichiers formant la structure physique de la Base de Donnes.
La mmoire: organisation des donnes en mmoire centrale
Processus: processus mis en uvre par Oracle pour la gestion de la Base de Donnes


4
4
4.
.
. 2
2
2.
.
. L
L
LE
E
ES
S
S F
F
FI
I
I C
C
CH
H
HI
I
IE
E
ER
R
RS
S
S
Pour fonctionner Oracle besoin dun certain nombre de fichiers :
Les Fichiers de donnes et dindex
Les Fichiers Redo Log pour la reprise en cas de panne sont des fichiers contenant lensemble des
transactions effectues sur la base. Ces fichiers ont une taille fixe. Lorsque le premier fichier est plein,
lenregistrement seffectue dans le second fichier. Lorsque celui ci est plein, lenregistrement
seffectue dans le troisime, . Lorsque le dernier fichier est rempli, lenregistrement reprend au
premier fichier =>Oracle besoin au minimum de deux fichiers Redo Log pour pouvoir fonctionner.













Pour des raisons de scurit, Oracle permet chaque fichier Redo Log dtre dupliqu ( en un ou
plusieurs exemplaires, Oralce se charge de la mise jour automatique des fichiers dupliqus. Ainsi
tout moment lensemble des fichiers dun mme groupe sont identiques
















Redo Log 1
Redo Log 2
Redo Log 3
1
2
3
Redo Log 1
Redo Log 2
Redo Log 3
Redo Log 1.1
Redo Log 2.1
Redo Log 3.1
Redo Log 1.2
Redo Log 2.2
Redo Log 3.2
Synchronisation Synchronisation
Groupe 1
Groupe 2
Groupe 3

Administration Oracle 12 / 69
E. MARCON V1.0

Les Fichiers de contrle qui spcifient les informations physique de la base de donnes ( ex : Nom,
localisation des fichiers de donnes, ). Comme pour les fichiers Redo Log ces fichiers doivent tre
dupliqus.
Le Fichier dinitialisation init<nom de linstance>.ora, ce fichier contient lensemble des paramtres
de la base de donnes. Ce fichier est lu au dmarrage de linstance.
Le Fichier des mots de passe est utilis pour stocker les utilisateurs et les mots de passe des
utilisateurs pouvant arrter et dmarrer la base de donnes ( lutilisation de ce fichier nest pas
obligatoire )
Les Fichier Archives sont gnrs chaque fois quun fichier Redo Log est plein, sont contenus est
sauvegard dans un fichier archive. Cette fonctionnalit doit tre activ pour une instance ( activation
du mode archivage pour une base ). Ces fichiers archives sont ncessaires la restauration de
donnes.

Dautres fichiers peuvent tre utiliss par Oracle lors dactivation de tches particulires ( ex : traces )

4
44
.
..
3
33
.
..


L
LL
E
EE
S
SS


P
PP
R
RR
O
OO
C
CC
E
EE
S
SS
S
SS
U
UU
S
SS

Afin dexcuter toutes les tches dun SGBDR, Oracle utilise un certains nombre de processus (ou thread
sur les platesformes Windows).

Processus serveur:

Avec une version standard de Oracle, il existe un processus serveur par connexion cliente. Il existe une
version spciale qui permet de mutualiser les processus serveur. Il existe donc deux types de
processus serveur :
Ddi: un processus serveur par processus utilisateur
Partag : un petit nombre de processus serveur partags

Son rle est de faire linterface entre le processus utilisateur et la mmoire ou les fichiers de donnes.
Cest le processus serveur qui est charg de lire les donnes destines une connexion que ces
donnes soient en mmoire ou dans un fichier de donnes. Le processus serveur reoit les autres SQL,
puis lit les donnes dans la zone mmoire (1) si elles y sont ou les lit dans les fichiers et les places en
mmoire (2) sil elles ny sont pas.
















Database Writer (DBWn):

Son rle est dcrire les donnes de la zone mmoire SGA (database buffer cache) vers le disque.
La base de donnes peut tre configure pour excuter un ou plusieurs processus DBW => DBW0,
DBW1, , DBWn
Processus Serveur
Processus Client SQL
Zone mmoire
(SGA)

Data

Cas N2
Cas N1
Rsultat

Administration Oracle 13 / 69
E. MARCON V1.0

Log Writer (LGWR):

Son rle est denregistrer lensemble des transactions effectues sur la base. Dans un premier temps il
stocke les informations en mmoire ( SGA ). Puis, quand la partie rserve en mmoire pour les logs
(redo log buffer) est pleine , Log Writter est charg dinscrire dans les fichiers RedoLog lensemble des
Logs stocks en mmoire.

Checkpoint (CKPT):

Ce processus ce dclenche de deux faons :
Lors du changement de fichier RedoLog
Au bout dun certain temps dinactivit ( timeout )

Lorsque le CheckPoint se dclenche :
il rveille le processus Database Writer pour quil crive les donnes depuis la zone mmoire sur les
disques.
Il donne une version chaque fichier de donne, ces versions sont enregistres dans les fichiers de
contrle. Ces versions servent contrler la cohrence des donnes stockes dans les fichiers de
donnes.

System Monitor (SMON):

Ce processus deux rles :
Dmarrer la base de donnes
Regrouper les blocs de donnes

A chaque dmarrage dune instance, le processus System Monitor vrifie dans les fichiers de contrle la
version des fichiers de donnes. Toutes les transactions excutes aprs les versions valides seront
annules par le processus.

Il est charg galement de regrouper les blocs de donnes.

Process Monitor (PMON):

Son rle est de contrler le bon fonctionnement des processus serveur /utilisateur. Si un processus
serveur se trouve sans processus utilisateur (plus de connexion) alors, le processus Process Monitor
supprime les processus serveur inutiles.

Archiver (ARCn) :

Il nest dmarr que dans le cas ou larchivage des fichiers RedoLog est activ.
Le processus Archiver se dclenche chaque fois quun fichier RedoLog est plein. Il copie ce fichier dans
un rpertoire dfini dans le fichier dinitialisation (init<sid>.ora). Le format du nom des archives est
galement dfini dans le fichier dinitialisation (possibilit de nommer le fichier avec une date, une
squence, ).

4
4
4.
.
. 4
4
4.
.
. L
L
LA
A
A M
M
ME
E
EM
M
MO
O
OI
I
IR
R
RE
E
E

La S.G.A ( System GLOBAL AREA )

Le premier composant de la mmoire en est la partie la plus importante.
Elle est compose de :
La BUFFER CACHE

Administration Oracle 14 / 69
E. MARCON V1.0
La SHARED POOL
La LARGE POOL
La REDO LOG BUFFER
et enfin si vous utilisez la machine virtuelle JAVA la JAVA POOL

La BUFFER CACHE stocke les donnes demandes par les commandes SQL.

La SHARED POOL est dcompose en deux zones :
La LIBRARY CACHE qui contient lensemble des commandes dj excutes et leur plan
dexcution.
La DICTIONARY CACHE stocke les informations du dictionnaire de donnes

La LARGE POOL est une zone mmoire optionnelle. Elle permet de stocker en mmoire :
Les informations sur les sessions ( dans le cas dune architecture de serveurs partags)
Les informations sur les Entres / Sortie des processus serveurs
Les informations sur les processus de sauvegarde et restauration

La REDO LOG BUFFER stocke temporairement les donnes modifies, avant quelles soient enregistres
dans les fichiers de journaux de reprise. Ces donnes sont gnres par les ordres Insert, Update et
Delete.

La JAVA POOL est utilise dans le cas ou une machine virtuelle JAVA est installe directement dans la
base ORACLE. Cette zone mmoire permet lexcution des programmes JAVA stocks.

La P.G.A ( Program Global Area )

Cette zone sert stocker les informations des processus (processus serveurs ou processus darrire
plan).
Quand un utilisateur se connecte, la PGA alloue au processus utilisateur une zone mmoire pouvant
contenir :
Les variables htes
Les espaces de tri
Le traitement des curseurs

Suivant que le processus Serveur soit partag ou non par plusieurs utilisateurs, les informations relatives
la session sont stockes dans la PGA ou dans la SHARED POOL


Administration Oracle 15 / 69
E. MARCON V1.0
5
5
5
.
.
.


G
G
G
E
E
E
S
S
S
T
T
T
I
I
I
O
O
O
N
N
N


D
D
D

U
U
U
N
N
N
E
E
E
I
I
I
N
N
N
S
S
S
T
T
T
A
A
A
N
N
N
C
C
C
E
E
E

La gestion dune instance consiste :
Crer une instance
Dmarrer une instance
Arrter une instance
Supprimer une instance

Les instances peuvent tre gres par :
le gestionnaire de serveur Oracle : Oracle Server Manager [ORACLE_HOME]\BIN\SVRMGRL.EXE. Il
sagit dun programme en mode console permettant dexcuter les principales commandes de gestion
(arrt/dmarrage) dinstances. Cet outil nexiste plus partir de la version 9.














Sqlplus outil fourni dans toutes les versions dOracle : [ORACLE_HOME]\BIN\SQLPLUS.EXE. Il sagit
dun programme en mode console permettant dexcuter toutes les commandes oracles
Note : /NOLOG : connexion sans invite didentification













Administration Oracle 16 / 69
E. MARCON V1.0

5
55
.
..
1
11
.
..


C
CC
O
OO
M
MM
P
PP
T
TT
E
EE
S
SS
D
DD

A
AA
D
DD
M
MM
I
II
N
NN
I
II
S
SS
T
TT
R
RR
A
AA
T
TT
I
II
O
OO
N
NN

le compte internal :
Ce compte dispose de droits dadministration tendus (arrt/dmarrage de la base)
Pour lutiliser il est obligatoire dtre connect au niveau du systme sous un compte de type
Administrateur ou root.
Le mot de passe par dfaut ( oracle ) est dfini lors de la cration de la base.
Ce compte est maintenu pour des raisons de compatibilit, il est donc prfrable dutiliser un compte
disposant des droits SYSOPER ou SYSDBA.

2 autres comptes importants :
SYSTEM, mot de passe par dfaut MANAGER
SYS, mot de passe par dfaut CHANGE_ON_INSTALL
Ce sont les comptes dadministration d une base Oracle
Ils permettent deffectuer la plupart des oprations, sauf arrt/dmarrage de la base

5
5
5
.
.
.
2
2
2
.
.
.


C
C
C
R
R
R
E
E
E
A
A
A
T
T
T
I
I
I
O
O
O
N
N
N


D
D
D

U
U
U
N
N
N
E
E
E


I
I
I
N
N
N
S
S
S
T
T
T
A
A
A
N
N
N
C
C
C
E
E
E

La cration dune base seffectue laide de Database Configuration Assistant. Il fabrique et excute les
commandes et les fichiers de paramtres ncessaires la cration dune base.





















5
55
.
..
3
33
.
..


D
DD
E
EE
M
MM
A
AA
R
RR
R
RR
A
AA
G
GG
E
EE
D
DD

U
UU
N
NN
E
EE


I
II
N
NN
S
SS
T
TT
A
AA
N
NN
C
CC
E
EE


5.3.1. PROCEDURE SIMPLE
Pour dmarrer une instance :
connexion en internal :
connect interna/oracle
ou connect internal puis oracle
startup

Administration Oracle 17 / 69
E. MARCON V1.0
La base est en ordre de marche : linstance est dmarre, la base est monte et ouverte

5.3.2. ETAT DUNE INSTANCE
Une base Oracle peut-tre dans 4 tats diffrents :
arrte : la base nest pas oprationnelle
dmarre, non monte : linstance est en excution mais la base nest accessible pour aucune tche
(cas : durant la cration dune base)
STARTUP NOMOUNT
dmarre, monte : linstance est en excution et la base est accessible pour des oprations de
maintenance (gestion des fichiers de donnes, des fichiers de log, )
STARTUP MOUNT
dmarr, monte et ouverte : la base est totalement oprationnelle
STARTUP

5.3.3. DETAIL DE LA COMMANDE STARTUP
STARTUP [FORCE][PFILE=fichier]
[EXCLUSIVE | SHARED]
[MOUNT nombd | OPEN nombd] [NOMOUNT]
[RECOVER]

FORCE : force le dmarrage de la base
PFILE = .. : fichier de paramtres utiliser ( init<sid>.ora)
EXCLUSIVE | SHARED = : ouverture mode partag/exclusif
MOUNT = .. : nom de la base monter
OPEN = .. : nom de la base ouvrir
NOMOUNT = .. : ne pas monter la base
RECOVER = .. : engager une procdure de vrification

Exemples
STARTUP FORCE
STARTUP OPEN RECOVER
STARTUP OPEN TEST PFILE=INITTEST.ORA
5
55
.
..
4
44
.
..


A
AA
R
RR
R
RR
E
EE
T
TT
D
DD

U
UU
N
NN
E
EE


I
II
N
NN
S
SS
T
TT
A
AA
N
NN
C
CC
E
EE

5.4.1. PROCEDURE SIMPLE
Pour arrter une instance :
connexion en internal :
connect interna/oracle
ou connect internal puis oracle
shutdown immediate

5.4.2. DETAIL DE LA COMMANDE SHUTDOWN
SHUTDOWN [NORMAL][IMMEDIATE][TRANSACTIONAL][ABORT]

NORMAL : attend la fin de tous les traitements (connexions, ) avant de fermer la base
IMMEDIATE : fin immdiate de toutes les traitements ds que possible (dconnexion, ), rollback sur
toutes les transactions en cours, puis arrt
TRANSACTIONAL : idem IMMEDIATE mais attend la fin de toutes les transactions, puis arrt de la
base
ABORT = : arrt immdiat de toutes les connexions, il ny a pas de rollback sur les transactions en
cours => arrt impratif

Administration Oracle 18 / 69
E. MARCON V1.0

Exemple
SHUTDOWN ABORT


5
55
.
..
5
55
.
..


S
SS
U
UU
P
PP
P
PP
R
RR
E
EE
S
SS
S
SS
I
II
O
OO
N
NN


D
DD

U
UU
N
NN
E
EE


I
II
N
NN
S
SS
T
TT
A
AA
N
NN
C
CC
E
EE

La cration dune base seffectue laide de Database Configuration Assistant. Il supprime tous les
fichiers et les services associs linstance supprime.



Administration Oracle 19 / 69
E. MARCON V1.0
6
6
6
.
.
.


N
N
N
O
O
O
T
T
T
I
I
I
O
O
O
N
N
N
S
S
S


I
I
I
M
M
M
P
P
P
O
O
O
R
R
R
T
T
T
A
A
A
N
N
N
T
T
T
E
E
E
S
S
S


6
6
6.
.
. 1
1
1.
.
. S
S
SC
C
CH
H
HE
E
EM
M
MA
A
AS
S
S,
,
, O
O
OP
P
PE
E
ER
R
RA
A
AT
T
TI
I
IO
O
ON
N
NS
S
S,
,
, C
C
CO
O
ON
N
NT
T
TR
R
RA
A
AI
I
IN
N
NT
T
TE
E
ES
S
S
6.1.1. LES SCHEMAS
Les objets de la base de donnes sont regroups par schma. Tous les schmas ont le nom dun
utilisateur, sauf le schma public qui est accessible par tout le monde. Chaque utilisateur travail par
dfaut dans son schma. Pour accder un objet du schma correspondant un autre utilisateur, il faut
prfix le nom de lobjet par le nom du schma.
Exemple :

Lutilisateur Scott possde la table EMP => Select * from EMP ;
Lutilisateur System pour accder cette table => Select * from SCOTT.EMP ;
6.1.2. LES OPERATIONS DE DEFINITION OU MANIPULATION DES DONNEES ET LES
CONTRAINTES
Les oprations sont les actions permettant aux utilisateurs de manipuler les donnes et les structures
tout en respectant un ensemble de contraintes d'intgrit.

La manipulation des donnes seffectue grace un Langage de Manipulation de Donnes (LMD)

les contraintes d'intgrit sont des rgles, dites rgles de gestion. Elles protgent les donnes et les
structures.
6
6
6.
.
. 2
2
2.
.
. T
T
TR
R
RA
A
AN
N
NS
S
SA
A
AC
C
CT
T
TI
I
I O
O
ON
N
N
6.2.1. NOTION DATOMICITE :
Latomicit est un ensemble de commandes tant vue comme une seule commande, indivisible, et dont
lexcution est complte.
6.2.2. TRANSACTION DANS UN SGBDR
Une transaction dans un SGBDR est une unit logique qui contient une ou plusieurs commandes SQL.
Le dbut dune transaction est donne par la premire instruction SQL.
La fin dune transaction est effectu grce lordre :
COMMIT => validation des commandes passes (rend permanentes les modifications apportes)
ROLLBACK => annulation (non-validation) des commandes passes, retour ltat prcdent le
dbut de la transaction. Une erreur durant la transaction gnre un ROLLBACK.

Attention : Certains outils (ex : ODBC) auto-valident les ordres passs par dfaut (transactions mono-
commande)

6
6
6.
.
. 3
3
3.
.
. D
D
DI
I
IC
C
CT
T
TI
I
I O
O
ON
N
NN
N
NA
A
AI
I
IR
R
RE
E
E D
D
DE
E
E D
D
DO
O
ON
N
NN
N
NE
E
EE
E
ES
S
S
Dictionnaire de donnes est un ensemble de tables et de vues o est stocke linformation sur la structure
logique et physique de la Base de Donnes, cest dire :
Les utilisateurs de la BD
Nom du schma

Administration Oracle 20 / 69
E. MARCON V1.0
Noms et caractristiques des objets stocks dans la base
Contraintes dintgrit
Ressources physiques alloues la base


Ce dictionnaire est cr la cration de la BD, mis jour au fur et mesure de la cration dobjets.
Les utilisateurs nont accs ce dictionnaire quen lecture travers des vues.

Vues du dictionnaire de donnes :

Trois types de vues distingues en fonction de leur prfixe :

USER_xxxxxxx : Vue sur les objets cr par un utilisateur, ex: user_tables
ALL_xxxxx : Vue sur les objets auxquels un utilisateur a accs (pas ncessairement qu'il a crs)
DBA_xxxxxxx : Vue sur tous les objets de la BD de tous les utilisateurs, accessibles que par les
administrateurs

Le nom des vues est compos du prfixe et du type dobjet concern au pluriel. Exemple :
USER_TABLES, DBA_USERS, ALL_INDEXES, .

Pour utiliser ces vues il est conseill :
Deffectuer un DESC de la vue pour slectionner seulement les champs que vous souhaitez
consulter. En effet certaine vue possde un grand nombre de champs de type texte ( assez long )
Effectuer votre Select en mentionnant toutes les valeurs en MAJUSCULE .

SQL> desc USER_OBJECTS;
Nom Non renseigne NULL? Type
------------------------------- -------- ----
OBJECT_NAME VARCHAR2(128)
OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(13)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(75)
STATUS VARCHAR2(7)

SQL> select OBJECT_NAME,OBJECT_ID,OBJECT_TYPE from USER_OBJECTS where OBJECT_NAME like '%ATT%';
SQL>


Administration Oracle 21 / 69
E. MARCON V1.0
7
7
7
.
.
.


S
S
S
T
T
T
R
R
R
U
U
U
C
C
C
T
T
T
U
U
U
R
R
R
E
E
E
L
L
L
O
O
O
G
G
G
I
I
I
Q
Q
Q
U
U
U
E
E
E


D
D
D

O
O
O
R
R
R
A
A
A
C
C
C
L
L
L
E
E
E


Le mcanisme gnral dOracle utilise une structure logique afin de stocker les donnes.
Cette structure est dcompose de la faon suivante :
Les objets sont stocks dans des TableSpaces ( ou Espaces de Disque Logique )
Chaque TableSpace est compos de Segments
Chaque Segment est compos dExtents ( Extensions )
Chaque Extents est compos de Blocks ( Blocs )

Le Bloc de la structure Logique Oracle correspond un nombre doctets physiques ( multiple de 512
octets ). Ce paramtre est dfini lors de la cration de la base et ne peut tre modifi ( par dfaut 4Ko).
Laugmentation de ce paramtre peut amliorer les performances de la base, en effet chaque criture
sur le disque, une quantit dinformation plus importante est crite et donc le nombre daccs au disque
est moindre.































7
7
7.
.
. 1
1
1.
.
. T
T
TA
A
AB
B
BL
L
LE
E
ES
S
SP
P
PA
A
AC
C
CE
E
E (
(
( E
E
ES
S
SP
P
PA
A
AC
C
CE
E
E D
D
DE
E
E D
D
DI
I
IS
S
SQ
Q
QU
U
UE
E
E L
L
LO
O
OG
G
GI
I
I Q
Q
QU
U
UE
E
E )
)
)
Un tablespace est linterface entre les objets de la base de donnes et la structure physique (fichier de
donnes) : Une base de donnes est un ensemble de tablespaces.

Pour fonctionner, Oracle a besoin :
Dun tablespace: SYSTEM contenant le Dictionnaire de Donnes
Objets
TABLESPACE
Segment
Extent
Block
Block
Block
Extent
Block
Block
Block

Segment
Extent
Block
Block
Block
Extent
Block
Block
Block

Fichiers de donnes

Administration Oracle 22 / 69
E. MARCON V1.0
Dun un tablespace TEMP( Temporaire ) pour les calculs et les tris

Gnralement, en plus de ces tablespace, il est cr un tablespace :
par type dobjet (table, index,)
par application, pour organiser les donnes des applications.

Un objet de la base est cr dans un seul tablespace, qui lui-mme peut correspondre plusieurs
fichiers de donnes (possibilit daccrotre le volume de stockage) .
















7
7
7.
.
. 2
2
2.
.
. S
S
SE
E
EG
G
GM
M
ME
E
EN
N
NT
T
T
Un segment est la structure logique dans laquelle un objet est stock (Un segment = un objet).
Ce segment regroupe lensemble des extents contenant toutes les donnes pour un objet spcifique.
Un segment est stock dans un unique tablespace.
Pour chaque segment oracle alloue initialement un nombre fini d'extent. Quand le segment a utilis tous
ses extents il lui en alloue (si possible) des supplmentaires.

Il existe diffrents types de segments:
Segment de donnes pour stocker :
table
cluster de tables (tables interroges frquemment ensemble runies dans un cluster). Un
segment pour le cluster, pas pour les tables
Segment dindex
Segment Temporaire qui permet la gestion des grosses requtes (ne pouvant pas tre excutes en
Mmoire)
Segment dannulation (Rollback segment) qui contient les donnes modifies en vue dune
annulation.

Table EMP
Est stock dans
Tablespace USER
Data1.dbf
EMP

Data2.dbf
EMP

Data3.dbf
EMP


Administration Oracle 23 / 69
E. MARCON V1.0

7
77
.
..
3
33
.
..


E
EE
X
XX
T
TT
E
EE
N
NN
T
TT


(
((
E
EE
X
XX
T
TT
E
EE
N
NN
S
SS
I
II
O
OO
N
NN


)
))


Les Extents sont les composants dun segment (dune table par exemple). Oracle alloue de l'espace un
segment en multiple d'extents.

Cette allocation est dfini lors de la cration de lobjet dans les clauses de stockages :
Le segment initialement cre avec au moins une extension est appel initial extent.
La possibilit dallouer des extensions supplmentaires est dfini par la clause :Next extent

Exemple:

CREATE TABLE test
( chp1 NUMBER,
chp2 NUMBER,
chp3 NUMBER )
TABLESPACE USER
STORAGE (
INITIAL 6144
NEXT 6144
MINEXTENTS 1
MAXEXTENTS 5 );





Un extent est compos dun ensemble de blocks contigus.























7
77
.
..
4
44
.
..


B
BB
L
LL
O
OO
C
CC
K
KK


(
((
B
BB
L
LL
O
OO
C
CC
)
))



Le Database block (or oracle page) est lunit de base despace dallocation (granularit la plus fine).
Un block logique est quivalent un nombre doctet physique (DB_BLOCK_SIZE) multiple de 512 octets.
Clause de stockage
Taille en bytes du premier extent (K or M)
Taille en bytes des extents suivants (K or M)
Nombre dextents allous la
cration de lobjet
Nombre maximal dextents allous lobjet
(UNILIMITED pour ne pas avoir de limite )


2 Kb 2 Kb 2 Kb

2 Kb 2 Kb 2 Kb

2 Kb 2 Kb 2 Kb

2 Kb 2 Kb 2 Kb

2 Kb 2 Kb 2 Kb

2 Kb 2 Kb 2 Kb

2 Kb 2 Kb 2 Kb



2 Kb

2 Kb

2 Kb

2 Kb

2 Kb

2 Kb

2 Kb

Extent
14 Kb
Segment
56 Kb
Extent
42 Kb

Administration Oracle 24 / 69
E. MARCON V1.0
Un bloc est compos de plusieurs zones :
(1) Des informations gnrales sur le bloc, adresse du bloc, type de segments ( Entte ou Header )
(2) Des informations sur la table dont les infos sont stockes dans ce bloc
(3) Des informations sur les colonnes stockes dans ce bloc
(4) Lespace non occup (zone de taille variable)
(5) Les donnes

























Gestion des blocs :
Deux paramtres permettent de grer l'espace dans un segment particulier:
PCTFREE: Pourcentage minimum libre conserver pour des mises jour ventuelles des donnes
du bloc
PCTUSED: Si bloc rempli jusqu la limite de PCTFREE . Il nest pas possible dinsrer des donnes
dans le bloc tant que le pourcentage utilis nest pas < PCTUSED sinon on insre les donnes dans
un nouveau bloc (peut tre coteux en place et accs )

Ces paramtres sont indiqus au moment de la cration de lobjet.
Exemple :

CREATE TABLE emp
(empno NUMBER,
ename VARCHAR2(10),
job VARCHAR2(9))
PCTFREE 20 PCTUSED 40;

Dans cet exemple le bloc sera utilis :
Pour la mise jour ( Update et Delete ) tant que lespace libre < 20 % de la taille du bloc
Pour lajout ( insert ) tant que lespace utilis < 40 % ou lespace libre > 60 %


Bloc
(1)
(2)
(3)
(4)
(5)



Administration Oracle 25 / 69
E. MARCON V1.0
8
8
8
.
.
.


L
L
L
E
E
E
S
S
S
U
U
U
T
T
T
I
I
I
L
L
L
I
I
I
S
S
S
A
A
A
T
T
T
E
E
E
U
U
U
R
R
R
S
S
S

8
8
8.
.
. 1
1
1.
.
. T
T
TY
Y
YP
P
PE
E
E D
D
D

A
A
AU
U
UT
T
TH
H
HE
E
EN
N
NT
T
TI
I
I F
F
FI
I
I C
C
CA
A
AT
T
TI
I
I O
O
ON
N
N
Un utilisateur qui a besoin daccder une base Oracle peut tre identifi par :
- la base Oracle elle-mme
- le systme dexploitation

Tout utilisateur dune base Oracle dispose dun schma correspondant de mme nom.

Rappel : un schma est une collection dobjets (tables, index, vues, )

8
8
8
.
.
.
2
2
2
.
.
.


G
G
G
E
E
E
S
S
S
T
T
T
I
I
I
O
O
O
N
N
N
D
D
D
E
E
E
S
S
S


U
U
U
T
T
T
I
I
I
L
L
L
I
I
I
S
S
S
A
A
A
T
T
T
E
E
E
U
U
U
R
R
R
S
S
S

8.2.1. CREATION DE NOUVEAUX UTILISATEURS
La cration dun nouvel utilisateur doit permettre didentifier cet utilisateur de manire unique. Il faut donc
dfinir :
- Un nom ( unique )
- Un mot de passe ( si lidentification est gr par Oracle)

La syntaxe est la suivante :

CREATE USER utilisateur
IDENTIFIED [ BY mot de passe / EXTERNALLY ]
[Default TABLESAPCE tablespace]
[Temporary TABLESPACE tablespace]
[QUOTA { entier [ K , M ] | UNLIMITED} ON tablespace ]
[PROFILE profile]
[ACCOUNT { LOCK / UNLOCK }]
[PASSWORD EXPIRE]

Loption EXTERNALLY dans la clause didentification prcise que lon choisit une authentification par le
systme dexploitation.

Attention : Dans les versions antrieurs ( version 6 ) ce type dutilisateur tait prfix par OPS$, ce
paramtre est aujourdhui contenu et modifiable dans le fichier de paramtres de linstance :
OS_AUTHENT_PREFIX.

Loption default TABLESPACE indique dans quel tablesapce sera stock par dfaut les objets crs par
cet utilisateur.

Attention : Si cette option nest pas dfini, le tablespace par dfaut attribu au nouvel utilisateur sera le
tablespace SYSTEM

Loption temporary TABLESPACE indique dans quel tablesapce sera stock les segments temporaires
ncessaires lorsque lutilisateur excutera des ordres SQL ncessitant des tris..

Attention : Si cette option nest pas dfini, le tablespace temporaire attribu au nouvel utilisateur sera le
tablespace SYSTEM

Il est donc vivement conseill de dfinir ces deux tablespaces la cration de lutilisateur.

Administration Oracle 26 / 69
E. MARCON V1.0
Loption QUOTA indique quels sont les quotas qui seront appliqus lutilisateur sur chaque tablespace.
Ces quotas sappliquent aux objets qui seront crs par lutilisateur.

Attention : Un privilge permet dautoriser un quota illimit sur tous les tablespace : UNLIMITED
TABLESPACE

Loption PROFILE indique le profile affect cet utilisateur pour contrler la consommation de ressource.
La notion de profile sera tudi ultrieurement.

Attention : Si cette option nest pas dfini, le profile DEFAULT est affect au nouvel utilisateur.

Loption ACCOUNT LOCK permet de verrouiller le compte utilisateur ( le compte ne peut tre utiliser,
mais il nest pas dtruit ).
Loption ACCOUNT UNLOCK permet de dverrouiller le compte utilisateur.

Loption PASSWORD EXPIRE oblige lutilisateur, la prochaine connexion, changer de mot de passe.

8.2.2. MODIFICATION DUN UTILISATEUR
La modification dun utilisateur reprend lensemble des notions vues lors de la cration.

La syntaxe est la suivante :

ALTER USER utilisateur
IDENTIFIED [ BY mot de passe / EXTERNALLY ]
[Default TABLESAPCE tablespace]
[Temporary TABLESPACE tablespace]
[QUOTA { entier [ K , M ] | UNLIMITED} ON tablespace ]
[PROFILE profile]
[DEFAULT ROLE { rle, ... / ALL [EXCEPT rle, / NONE }]
[ACCOUNT { LOCK / UNLOCK }]
[PASSWORD EXPIRE] ;

Loption DEFAULT ROLE permet daffecter un ou plusieurs rles (regroupement de droits) lutilisateur
concern. La notion de rle vu ultrieurement. Cette affectation peut tre ralise :
- sous forme dune liste de rles
- avec le mot cl ALL signifiant que tous les rles sont affects
- Si le mot cl ALL est utilis alors un ensemble de rles peut tre exclu de laffectation
- Avec le mot cl NONE qui dsactive lensemble des rles pour cet utilisateur

8.2.3. SUPPRESSION DUN UTILISATEUR
La suppression dun utilisateur permet galement de supprimer lensemble des objets crs par cet
utilisateur.

La syntaxe est la suivante :

DROP USER utilisateur [ CASCADE ]

Loption CASCADE supprime lensemble des objets crs par lutilisateur supprim

8.2.4. VUES SYSTEMES
Deux vues systmes sont utilises pour lire les informations lies la gestion des utilisateurs :
- DBA_USERS pour les donnes lies aux utilisateurs ( compte, tablespace par dfaut, )
- DBA_TS_QUOTAS pour les donnes lies aux quotas

Administration Oracle 27 / 69
E. MARCON V1.0
8
8
8.
.
. 3
3
3.
.
. L
L
LE
E
ES
S
S P
P
PR
R
RO
O
OF
F
FI
I
I L
L
LS
S
S
8.3.1. NOTION DE PROFIL
La notion de profil permet le contrle des ressources de lutilisateur .
Un profil est donc un groupe dutilisateur auquel est affect un ensemble de limitation de ressource.
Ces limitations concernent le contrle de la session et des appels au noyau.

La limitation de ressource ne peut fonctionner que si le paramtre RESSOURCE_LIMIT est plac
TRUE.

Attention : par dfaut le paramtre RESSOURCE_LIMIT = FALSE, il faut donc le modifier pour utiliser la
notion de profil.

Lorsque lutilisateur atteint la limite qui lui est allou, Oracle fait chouer lopration en cours en :
- Annulant la transaction
- Signalant lerreur (nom de la limite atteinte)
8.3.2. CREATION DUN PROFIL
La cration dun profil permet de lui affecter :
- Un nom ( qui doit tre unique et diffrent de DEFAULT )
- Une liste de limites avec pour chacune la valeur maximale qui peut tre affecte lutilisateur. Cette
valeur peut tre un entier, la valeur par dfaut ou dans certain cas UNLIMITED.

La syntaxe de cration dun profil est la suivante :

CREATE PROFILE profil
LIMIT
SESSIONS_PER_USER { entier / DEFAULT / UNLIMITED }
CPU_PER_SESSION { entier / DEFAULT / UNLIMITED }
CPU_PER_CALL { entier / DEFAULT / UNLIMITED }
CONNECT_TIME { entier / DEFAULT / UNLIMITED }
IDLE_TIME { entier / DEFAULT / UNLIMITED }
LOGICAL_READS_PER_SESSION { entier / DEFAULT / UNLIMITED }
LOGICAL_READS_PER_CALL { entier / DEFAULT / UNLIMITED }
COMPOSIT_LIMIT { entier / DEFAULT / UNLIMITED }
PRIVATE_SGA { entier [ K, M ] / DEFAULT / UNLIMITED } ;

Loption SESSIONS_PER_USER limite pour un utilisateur le nombre maximum de connexions
concurrentes.

Loption CPU_PER_SESSION indique le temps maximum dutilisation de la CPU pour une session,
exprim en centimes de seconde.

Loption CPU_PER_CALL indique le temps maximum dun appel au noyau, en centimes de seconde. U
appel au noyau est ncessaire pour :
- Lanalyse dune commande SQL
- Lexcution dune commande SQL

Loption CONNECT_TIME prcise le temps maximum autoris pour une session, exprim en seconde.

Loption IDLE_TIME prcise le temps maximum dinactivit en continu autoris pour une session,
exprim en seconde.

Loption LOGICAL_READS_PER_SESSION reprsente le nombre maximum de blocs de donnes lus
pendant la dure dune session.


Administration Oracle 28 / 69
E. MARCON V1.0
Loption LOGICAL_READS_PER_CALL reprsente le nombre maximum de blocs de donnes lus
pendant un appel au noyau.

Loption COMPOSIT_LIMIT indique le cot total autoris pour une session. Par dfaut cette option est la
somme de :
- CPU_PER_SESSION
- CONNECT_TIME
- LOGICAL_READS_PER_SESSION
- PRIVATE_SGA

Chaque option est pondre, la valeur par dfaut de pondration de toutes ces options est gale 1.
Pour modifier cette pondration, il faut utiliser la commande :

ALTER RESSOURCE COST
ressource entier ;

Par exemple :
ALTER RESSOURCE COST
CPU_PER_SESSION 3 ;

La valeur de COMPOSITE_LIMIT est alors
3*CPU_PER_SESSION + 1*CONNECT_TIME + 1*LOGICAL_READS_PER_SESSION + 1*PRIVATE_SGA


Loption PRIVATE_SGA limite la taille alloue lespace priv dune session dans la shared pool area
dans la SGA. Cette option nest valide que dans le cas dun serveur partag.

8.3.3. MODIFICATION DUN PROFIL
La modification dun profil utilise les mmes notions que pour la cration.

La syntaxe est la suivante :

ALTER PROFILE profil LIMIT
SESSIONS_PER_USER { entier / DEFAULT / UNLIMITED }
CPU_PER_SESSION { entier / DEFAULT / UNLIMITED }
CPU_PER_CALL { entier / DEFAULT / UNLIMITED }
CONNECT_TIME { entier / DEFAULT / UNLIMITED }
IDLE_TIME { entier / DEFAULT / UNLIMITED }
LOGICAL_READS_PER_SESSION { entier / DEFAULT / UNLIMITED }
LOGICAL_READS_PER_CALL { entier / DEFAULT / UNLIMITED }
COMPOSIT_LIMIT { entier / DEFAULT / UNLIMITED }
PRIVATE_SGA { entier [ K, M ] / DEFAULT / UNLIMITED } ;

8.3.4. SUPPRESSION DUN PROFIL
La suppression dun profil affecte tous les utilisateurs concerns le profil par dfaut ( DEFAULT ) si
loption CASCADE est dfini. Les sessions en cours ne sont pas affectes par la suppression du profil,
celle ci ne sera effective que pour les sessions ultrieures.

La syntaxe est la suivante :

DROP PROFILE profil CASCADE ;
8.3.5. PROFIL PAR DEFAUT
Il existe un profile par dfaut ( DEFAULT ) dont toutes les options sont fixes UNLIMITED. Ce profil ne
peut tre supprim.

Administration Oracle 29 / 69
E. MARCON V1.0
8.3.6. GESTION DES COMPTES
Depuis la version 8, les profils servent galement la gestion dun compte Oracle. Ces limites permettent
de dfinir des paramtres dutilisation des comptes ayant un mot de passe gr par Oracle. Ces options
limites les essais de connexion, le temps dutilisation dun mot de passe, .

La syntaxe est la suivante :

CREATE PROFILE profil
LIMIT
FAILED_LOGIN_ATTEMPT { entier / DEFAULT / UNLIMITED }
PASSWORD_LOCK_TIME { entier / DEFAULT / UNLIMITED }
PASSWORD_GRACE_TIME { entier / DEFAULT / UNLIMITED }
PASSWORD_LIFE_TIME { entier / DEFAULT / UNLIMITED }
PASSWORD_REUSE_MAX { entier / DEFAULT / UNLIMITED }
PASSWORD_REUSE_TIME { entier / DEFAULT / UNLIMITED }
PASSWORD_VERIFY_FUNCTION { fonction / NULL / DEFAULT } ;

Loption FAILED_LOGIN_ATTEMPT indique le nombre de fois que lutilisateur peut chouer lors dune
tentative de connexion avant que son compte ne soit verrouill.

Loption PASSWORD_LOCK_TIME indique le nombre de jours quun compte reste bloqu aprs un
nombre dchecs conscutifs.

Loption PASSWORD_GRACE_TIME indique le nombre de jours aprs lequel un avertissement est
signal et la connexion accepte. Si le mot de passe nest pas chang pendant cette priode alors le
compte est bloqu.

Loption PASSWORD_LIFE_TIME limite le nombre jours pendant lequel un mme mot de passe peut
tre utilis. Le mot de passe expire si il nest pas chang pendant cette priode et les connexions
suivantes sont refuses.

Loption PASSWORD_REUSE_MAX indique le nombre de changements de mot de passe avant que le
mot de passe courant puisse tre r - utilis.

Attention : Cette option ne fonctionne que si loption PASSWORD_REUSE_TIME = UNLIMITED

Loption PASSWORD_REUSE_TIME indique le nombre de jours que le mot de passe courant puisse
tre r utilis.

Attention : Cette option ne fonctionne que si loption PASSWORD_REUSE_MAX = UNLIMITED

Loption PASSWORD_VERIFY_FUNCTION alloue une fonction PL/SQL qui vrifie de faon complexe le
mot de passe

Pour le profil DEFAULT, toutes les options ont pour valeur UNLIMITED sauf loption
PASSWORD_VERIFY_FUNCTION qui est gale NULL.


Administration Oracle 30 / 69
E. MARCON V1.0
8
88
.
..
4
44
.
..


L
LL
E
EE
S
SS


P
PP
R
RR
I
II
V
VV
I
II
L
LL
E
EE
G
GG
E
EE
S
SS


8.4.1. NOTION DE PRIVILEGE
Une fois lutilisateur cr, il ne peut pour autant se connecter car il ne possde aucun droits sur la
base, y compris celui de se connecter. Ces droits sont appels privilges.

Il existe deux types de privilge :
- Les privilges systmes qui autorisent lutilisateur se connecter la base, et effectuer un certain
nombre dactions sur la dfinition des objets de la base ou qui concernent les structures de contrle
de la base telles que la session, linstance,
- Les privilges objets qui portent sur les objets de la base et qui sont attribus par leur propritaire.
Ces privilges autorisent les manipulations de ces objets ( ajout, suppression, modification , )
8.4.2. LES PRIVILEGES SYSTEMES
Il existe deux types de privilges systmes :
- Le premier sapplique aux actions sur les objets logiques des utilisateurs.
- Le deuxime reprend des actions particulires sur la base
8.4.2.1 Les privilges systmes action
Il existe 3 actions principales sur les objets de la base :
- La cration => CREATE
- La modification => ALTER
- La suppression => DROP

Dautres actions sont possibles comme par exemple lexcution => EXECUTE

Les privilges peuvent tre dfinis soient :
- Pour les objets de lutilisateur
- Pour les objets de tous les utilisateurs ( mot cl ANY )

Privilge CREATE ALTER DROP DIVERS
CLUSTER OUI
ANY CLUSTER OUI OUI OUI
ANY CONTEXT OUI OUI
DATABASE OUI
DATABASE LINK OUI
PUBLIC DATABASE
LINK
OUI OUI
DIMENSION OUI
ANY DIMENSION OUI OUI OUI
ANY DIRECTORY OUI
ANY INDEX OUI OUI OUI
INDEXTYPE OUI
ANY INDEXTYPE OUI OUI OUI EXECUTE
LIBRARY OUI OUI
ANY LIBRARY OUI OUI
MATERIELIZED
VIEW
OUI OUI OUI QUERY
REWRITE
ANY MATERIELIZED
VIEW
OUI
OPERATOR OUI
ANY OPERATOR OUI OUI OUI EXECUTE
ANY OUTLINE OUI

Administration Oracle 31 / 69
E. MARCON V1.0
PROCEDURE OUI EXECUTE
ANY PROCEDURE OUI OUI OUI EXECUTE
PROFILE OUI OUI OUI
RESOURCE COST OUI
ROLE OUI
ANY ROLE OUI OUI GRANT
ROLLBACK
SEGMENT
OUI OUI OUI
SESSION OUI OUI
SEQUENCE OUI
ANY SEQUENCE OUI OUI OUI SELECT
SNAPSHOT OUI
ANY SNAPSHOT OUI OUI OUI QUERY
REWRITE
SYNONYM OUI
ANY SYNONYM OUI OUI
PUBLIC SYNONYM OUI OUI
TABLE OUI
ANY TABLE OUI OUI OUI LOCK
COMMENT
SELECT
INSERT
UPDATE
DELETE
TABLESPACE OUI OUI OUI MANAGE
TRIGGER OUI
ANY TRIGGER OUI OUI OUI
TYPE OUI
ANY TYPE OUI OUI OUI EXECUTE
USER OUI OUI OUI BECOME
VIEW OUI
ANY VIEW OUI OUI
8.4.2.2 Les autres privilges systmes
Privilge Action permise
ANALYZE ANY Analyser tout ( Cluster, table et index )
AUDIT ANY Auditer tout objet de la base de donnes
AUDIT SYSTEM Auditer toute commande ou privilge de la
base
GRANT ANY PRIVILEGE Accorder tout privilge systme
RESTRICTED SESSION Pouvoir se connecter une instance
dmarre par la commande SARTUP
RESTRICT
UNLIMITED TABLESPACE Lutilisateur na pas de limite sur TOUS les
tablespaces
FORCE TRANSACTION Force sa propre transaction distribue dans
la base locale
FORCE ANY TRANSACTION Force toute transaction distribue dans la
base locale
8.4.2.3 Affecter et retirer un privilge ou plusieurs privilges
GRANT priv1, priv2,
TO user1

REVOKE priv1,priv2,
FROM user1

Administration Oracle 32 / 69
E. MARCON V1.0
8.4.3. LES PRIVILEGES OBJETS
Quand un utilisateur cre des objets dans son schma, il possde tous les droits sur ses objets.
Il a lui seul la possibilit daccorder des privilges sur ses objets dautres utilisateurs.
Il existe une option permettant un utilisateur daccorder les privilges sur des objets ne lui appartenant
pas.

La syntaxe daffectation dun privilge est la suivante :

GRANT priv1, priv2, / ALL
ON objet
TO user / rle / PUBLIC
WITH GRANT OPTION

Loption ALL indique que tous les privilges objets possibles sont attribus lutilisateur
Loption PUBLIC indique que le(s) privilge(s) sont attribus tout le monde
Loption WITH GRANT OPTION indique que lutilisateur pourra a son tour attribuer ces privilges
dautres utilisateurs

8
88
.
..
5
55
.
..


L
LL
E
EE
S
SS


R
RR
O
OO
L
LL
E
EE
S
SS

Un rle est une agrgation de droits d'accs aux donnes et de privilges systme qui renforce la scurit
et rduit significativement la difficult et le cot de son administration.
8.5.1. CRATION D'UN RLE

Un rle est un ensemble nomm de privilges qui peut tre attribu des utilisateurs et/ou d'autres
rles. Il offre une facilit de gestion des privilges d'accs aux donnes. L'administrateur peut donc
centraliser la gestion de privilges par la cration de plusieurs rles et l'attribution de ces rles en fonction
de l'utilisateur, d'o une maintenance facile et structure.

La cration d'un rle peut servir deux aspects : application et utilisateur. Un rle d'application regroupe
tous les privilges ncessaires l'excution d'une application. Il peut tre compos d'autres rles, chacun
d'eux offre un ensemble de privilges d'accs des donnes diffrentes de l'application. Un rle
utilisateur gre des privilges communs ncessaires aux utilisateurs de la base, comme la cration de
session.

La cration d'un rle se fait par la commande suivante

CREATE ROLE rle
NOT IDENTIFIED
| IDENTIFIED {BY mot de passe | EXTERNALLY}

Un rle est cr initialement sans aucune caractristique, puis aliment par des ordres SQL GRANT. Il
peut tre protg par un mot de passe qui sera demand chaque fois que le crateur dcide de l'activer
par la commande SET ROLE. L'authenticit des rles dans Oracle est quivalente celle des utilisateurs.

Oracle cre automatiquement quelques rles qu'il attribue SYS et SYSTEM. Ces rles ne sont que des
privilges systme des anciennes versions CONNECT, RESOURCE et DBA.
L'importation et l'exportation de donnes ont t mises dans les rles respectifs IMP FULL DATABASE et
EXP FULL DATABASE. Les privilges systme attribus ces rles sont illustrs dans le tableau
suivant :

Rle Privilges systme
CONNECT ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK
, CREATE SEQUENCE, CREATE SESSION
, CREATE SYNONYM, CREATE TABLE, CREATE VIEW.

Administration Oracle 33 / 69
E. MARCON V1.0

RESOURCE CREATE CLUSTER, CREATE PROCEDURE, CREATE
SEQUENCE, CREATE TABLE, CREATE TRIGGER,
UNLIMITED TABLESPACE
DBA Tous les privilges

EXP-FULL-DATABASE SELECT ANY TABLE, BACKUP ANY TABLE,

IMP-FULL-DATABASE BECOME-USER

Exemple: Crer un rle nomm rutil1.

CREATE ROLE rutil1
IDENTIFIED BY test;


8.5.2. ACTIVATION D'UN RLE

Avant que les privilges associs un rle deviennent disponible l'utilisateur de la session, il faut que le
rle soit activ. La commande qui permet d'activer ou de dsactiver un rle est la suivante :

SET ROLE (rle [IDENTIFIED BY mot_de_passel
rle [IDENTIFIED BY mot de passe]
ALL [EXCEPT rle [, rle] ...
NONE}

Par dfaut, Oracle tablit au moment de la connexion tous les privilges d'un utilisateur. Ces privilges
ont t attribus soit directement en passant par des GRANT objets, soit indirectement par des GRANT
rles. La premire catgorie ne peut pas tre active et dsactive d'une faon slective ; autrement dit,
pour retirer les privilges d'accs une table quelconque, il faut l'expliciter par la commande REVOKE
tous les utilisateurs. En revanche, la seconde catgorie, qui concerne les privilges attribus par des
rles, peut tre slective par le mcanisme d'activation et de dsactivation et offre ainsi une meilleure
scurit qui dpend de la tche courante de l'utilisateur.

L'utilisation des options ALL et ALL EXCEPT ncessitent que tous les rles ne possdent pas de mot de
passe ou utilisent une authentification par systme d'exploitation.

1Le rle qui ne figure pas dans la liste est considr comme dsactiv. Il n'existe pas de commande
spcifique pour dsactiver explicitement un rle.

Exemple : Activer les rles rutill et rutil2.

SET ROLE rutil 1 IDENTIFIED BY malek, rutil2;

Nous constatons que seulement le premier rle ncessite un mot de passe. Ceci dpend de sa dfinition
(cration).

8.5.3. MODIFICATION D'UN RLE

Il est possible de modifier le mot de passe d'un rle existant.

ALTER ROLE rle
NOT IDENTIFIED
| IDENTIFIED {BY mot de passe | EXTERNALLY}



Administration Oracle 34 / 69
E. MARCON V1.0
Exemple: Mettre le rle rutil 1 sans mot de passe.

ALTER ROLE rutil 1 NOT IDENTIFIED;

8.5.4. 4. SUPPRESSION D'UN RLE

Pour supprimer un rle existant, il faut utiliser la commande suivante

DROP ROLE rle

Exemple: Supprimer le rle rutil1.

DROP ROLE rutil1


Administration Oracle 35 / 69
E. MARCON V1.0
9
9
9
.
.
.


C
C
C
O
O
O
M
M
M
P
P
P
L
L
L
E
E
E
M
M
M
E
E
E
N
N
N
T
T
T
S
S
S
Q
Q
Q
L
L
L
P
P
P
L
L
L
U
U
U
S
S
S

9
9
9.
.
. 1
1
1.
.
. L
L
L'
'
' E
E
EN
N
NV
V
VI
I
I R
R
RO
O
ON
N
NN
N
NE
E
EM
M
ME
E
EN
N
NT
T
T S
S
SQ
Q
QL
L
LP
P
PL
L
LU
U
US
S
S D
D
D'
'
' O
O
OR
R
RA
A
AC
C
CL
L
LE
E
E
SQLPLUS est l'outil d'Oracle permettant l'utilisation du langage SQL. Cependant il offre en plus diverses
commandes de manipulation de commandes SQL, de formatage des affichages cran etc ...formant ce
que nous appellerons l'environnement SQLPLUS et qui est prsent partiellement dans ce chapitre.

Une fois la connexion avec Oracle tablie, SQLPLUS affiche son message d'attente :
SQL>
indiquant qu'il attend une commande SQL ou SQLPLUS.

Les commandes SQL permettent de crer, mettre jour et exploiter les tables de donnes.

Ex : select * from biblio;

Les commandes SQLPLUS permettent de manipuler l'environnement dans lequel vont s'excuter les
commandes SQL :
diter, sauvegarder, rcuprer des commandes SQL
prciser le formatage dsir pour le rsultat des requtes SQL
diverses commandes

Ex : describe biblio

9
9
9.
.
. 2
2
2.
.
. S
S
SY
Y
YN
N
NT
T
TA
A
AX
X
XE
E
E D
D
DE
E
ES
S
S C
C
CO
O
OM
M
MM
M
MA
A
AN
N
ND
D
DE
E
ES
S
S S
S
SQ
Q
QL
L
LP
P
PL
L
LU
U
US
S
S
Voici quelques rgles d'criture des commandes SQLPLUS :
La commande peut tre entre indiffremment en majuscules ou minuscules.
La plupart des commandes SQLPLUS ont une abrviation. Par exemple la commande input peut tre
abrge par i.
Une commande SQLPLUS peut tre tape sur plusieurs lignes, chaque ligne intermdiaire tant
termine par - . SQLPLUS commence la ligne suivante par > :

SQL> column genre

> heading 'GENRE DU LIVRE'

Une commande SQLPLUS ne se termine par rien de particulier. Cependant le point virgule est
accept.
9
99
.
..
3
33
.
..


Q
QQ
U
UU
E
EE
L
LL
Q
QQ
U
UU
E
EE
S
SS
C
CC
O
OO
M
MM
M
MM
A
AA
N
NN
D
DD
E
EE
S
SS
S
SS
Q
QQ
L
LL
P
PP
L
LL
U
UU
S
SS


Nous nous proposons ici de voir quelques commandes SQLPLUS qui nous seront utiles dans notre tude
du langage SQL.
9.3.1. SORTIE DE SQLPLUS
syntaxe exit
action ramne au systme d'exploitation
9.3.2. EXECUTER UNE COMMANDE SYSTEME
host commande_systme excute la commande du systme d'exploitation.
host fait apparatre le "prompt" du systme d'exploitation. On peut alors taper des commandes
quelconques. On revient SQLPLUS par la commande exit.

Administration Oracle 36 / 69
E. MARCON V1.0

Exemples :
SQL> host pwd <-- rpertoire courant ?
/users/serge/oracle/sqlplus <-- rsultat
SQL> host ll <-- contenu du rpertoire courant ?
SQL> host <-- on appelle le systme
$ pwd <-- on est sous le systme. Rpertoire courant ?
/users/serge/oracle/sqlplus
$ mkdir rep <-- on cre un rpertoire
$ ll <-- vrification
total 1
drwxrwxr-x 2 serge enseign 512 Oct 11 15:25 rep
$ cd rep <-- changement de rpertoire courant
$ pwd <-- vrification
/users/serge/oracle/sqlplus/rep <-- a a march
$ exit <-- retour SQLPLUS

9.3.3. GESTION DU BUFFER SQL
Sous SQLPLUS, on entre des commandes SQL ou SQLPLUS. La dernire commande SQL entre au
clavier est enregistre dans une zone appele buffer SQL. Tant qu'elle est prsente dans ce buffer, la
commande peut tre modifie, sauvegarde, relance, etc... Les commandes de gestion du buffer SQL
sont des commandes SQLPLUS et obissent donc la syntaxe dj prsente. Noter que les
commandes SQLPLUS mises ne sont pas mmorises.
9.3.3.1 Edition du buffer
Les commandes d'dition du buffer s'appliquent une seule des lignes constituant la commande SQL qui
y est contenue. Celle-ci est signale par une toile et est appele ligne courante.

Exemple :

SQL> select * <-- commande SQL sur 3 lignes
2 from biblio <-- elle est automatiquement enregistre dans le buffer
3 where prix>100;
SQL> list <-- commande SQLPLUS visualisant le buffer SQL
1 select *
2 from biblio
3* where prix>100 <-- la ligne 3 est ligne courante
SQL> list 2 <-- on demande voir la ligne n2 du buffer
2* from biblio <-- elle est devenue ligne courante

9.3.3.2 les commandes d'dition du buffer SQL :
Commande Abrviation But
APPEND texte A texte ajoute texte la fin de la ligne courante
CHANGE /ancien/nouveau/ C /ancien/nouveau/ change texte ancien en texte nouveau dans la ligne courante
CHANGE /texte C /texte supprime texte dans la ligne courante
DEL supprime la ligne courante
INPUT I entre en saisie de lignes supplmentaires
INPUT texte I texte ajoute texte au buffer
LIST L visualise toutes les lignes
LIST n L n visualise la ligne n n
LIST * L * visualise la ligne courante
LIST LAST L LAST visualise la dernire ligne
LIST m n L m n visualise les lignes m n
CLEAR BUFFER CL BUFF vide le buffer

Exemples

SQL> list <-- contenu du buffer SQL

Administration Oracle 37 / 69
E. MARCON V1.0
1 select *
2 from biblio
3* where prix>100
SQL> clear buffer <-- vide le buffer
buffer cleared
SQL> list <-- vrification
No lines in SQL buffer.
SQL> input <-- ajoute des lignes au buffer
1 select *
2 from biblio
3 where prix>100
4 <-- on termine par une ligne blanche pour que la commande
<-- ne soit pas excute
SQL> l <-- vrification (l=list)
1 select *
2 from biblio
3* where prix>100
SQL> del <-- supprime la ligne courante (3 ici)
SQL> l <-- vrification
1 select *
2* from biblio
SQL> l 1 <-- visualise ligne 1 qui devient ligne courante


Une autre manire d'diter le buffer SQL est d'utiliser un diteur de texte par la commande EDIT. Celle-ci
appelle l'diteur dont le nom est dfini par la variable systme _EDITOR.

On peut obtenir la liste de des variables par la commande DEFINE :


SQL> define <-- liste des variables dfinies
DEFINE _EDITOR = "vi" (CHAR) <-- l'diteur est ici vi.
DEFINE _O_VERSION = "ORACLE RDBMS V6.0.30.2.1, transaction processing option - Production PL/SQL
V1.0.30.0.1 - Production" (CHAR)
DEFINE _O_RELEASE = "6003002" (CHAR)

Dans l'exemple prcdent, la commande EDIT copie le buffer dans un fichier appel afiedt.buf du
rpertoire courant puis appelle l'diteur vi pour diter ce fichier. On modifie et sauvegarde le fichier par les
commandes habituelles de l'diteur vi. Il sera recopi dans le buffer SQL.

SQL> l <-- liste le buffer
1 select *
2 from biblio2
3* where prix>200
SQL> edit <-- dition du buffer avec vi
// changer 200 en 100
Wrote file afiedt.buf <-- cration du fichier afiedt.buf
SQL> host ll <-- vrification
total 1
-rw-rw-r-- 1 serge enseign 38 Oct 11 15:35 afiedt.buf
SQL> host cat afiedt.buf <-- contenu de afiedt.buf
select *
from biblio
where prix>100
/
SQL> l <-- contenu du nouveau buffer
1 select *
2 from biblio
3* where prix>100

9.3.4. SAUVEGARDE ET RECUPERATION DU BUFFER
save fichier sauvegarde le buffer SQL dans fichier.
get fichier le buffer SQL est charg avec le contenu de fichier

Exemples


Administration Oracle 38 / 69
E. MARCON V1.0
SQL> l <-- contenu du buffer
1 select *
2 from biblio
3* where prix>100
SQL> save cmd1 <-- le buffer est sauvegard dans cmd1
Created file cmd1
SQL> host ll <-- vrification
total 2
-rw-rw-r-- 1 serge enseign 38 Oct 11 15:35 afiedt.buf
-rw-rw-r-- 1 serge enseign 38 Oct 11 15:49 cmd1.sql
<-- le fichier a en fait le suffixe .sql
SQL> host cat cmd1.sql <-- contenu du fichier ?
select *
from biblio
where prix>100
/
SQL> clear buffer <-- on vide le buffer SQL
buffer cleared
SQL> l <-- contenu du buffer ?
No lines in SQL buffer. <-- rien
SQL> get cmd1 <-- on charge le buffer avec cmd1
1 select * <-- rsultat
2 from biblio
3* where prix>100
SQL> l <-- vrification
1 select *
2 from biblio
3* where prix>100


9.3.5. EXECUTION DU BUFFER SQL
run (abbrviation r) excute la commande SQL du buffer
Exemple :

SQL> l <-- contenu du buffer SQL
1 select *
2 from biblio
3* where prix>100
SQL> run <-- excution du buffer
1 select *
2 from biblio
3* where prix>100
TITRE AUTEUR GENRE ACHAT PRIX D
-------------------- --------------- --------------- --------- ---------- -
Vipere au poing Bazin Roman 01-JAN-91 130 O
L'adieu aux armes Hemingway Roman 01-FEB-91 150 o


9
9
9.
.
. 4
4
4.
.
. G
G
GE
E
ES
S
ST
T
TI
I
I O
O
ON
N
N D
D
DE
E
ES
S
S F
F
FI
I
IC
C
CH
H
HI
I
IE
E
ER
R
RS
S
S D
D
DE
E
E C
C
CO
O
OM
M
MM
M
MA
A
AN
N
ND
D
DE
E
ES
S
S
Il est possible de rassembler des commandes SQL dans un fichier texte appel fichier de commandes.
Les commandes ont la mme syntaxe qu'en mode interactif. Le fichier peut tre construit l'aide d'un
diteur :
edit fichier_de_commandes
Il sera excut par la commande
start fichier_de_commandes
Exemples

SQL> edit cmd2 <-- cration du fichier de commandes SQL
SQL> host ll
total 3 <-- contenu du rpertoire courant
-rw-rw-r-- 1 serge enseign 38 Oct 11 15:35 afiedt.buf
-rw-rw-r-- 1 serge enseign 38 Oct 11 15:49 cmd1.sql
-rw-rw-r-- 1 serge enseign 107 Oct 11 16:07 cmd2.sql

Administration Oracle 39 / 69
E. MARCON V1.0
<-- en ralit, c'est le fichier cmd2.sql qui a t cr
SQL> host cat cmd2.sql <-- contenu du fichier de commandes
select titre,auteur,prix from biblio where prix>100;
select titre,auteur,prix from biblio where prix>140;
SQL> start cmd2 <-- excution du fichier de commandes cmd2
TITRE AUTEUR PRIX <-- rsultat du premier select
-------------------- --------------- ----------
Vipere au poing Bazin 130
L'adieu aux armes Hemingway 150
TITRE AUTEUR PRIX <-- rsultat du second select
-------------------- --------------- ----------
L'adieu aux armes Hemingway 150
SQL> l <-- qu'y a-t-il dans le buffer ?
1* select titre,auteur,prix from biblio where prix>140 <-- la dernire commande excute


Un fichier de commandes sera le plus souvent construit l'aide d'un diteur. On peut aussi le
construire l'aide des commandes d'dition du buffer SQL ainsi que des commandes get et save.
9
99
.
..
5
55
.
..


M
MM
I
II
S
SS
E
EE


E
EE
N
NN


F
FF
O
OO
R
RR
M
MM
E
EE
D
DD
E
EE
L
LL
'
''
A
AA
F
FF
F
FF
I
II
C
CC
H
HH
A
AA
G
GG
E
EE


E
EE
C
CC
R
RR
A
AA
N
NN


Il existe diverses commandes SQLPLUS (et non SQL) permettant le contrle de l'affichage cran.
9.5.1. TITRE DE LA COLONNE
COLUMN nom_colonne HEADING titre_colonne => donne le titre titre_colonne la colonne indique.
Exemples

SQL> select titre,prix from biblio;
TITRE PRIX
-------------------- ----------
Les fleurs du mal 120
Tintin au Tibet 70
La terre 52.5
Madame Bovary 136.5
Manhattan transfer 336
Tintin en Amrique 70
Du ct de ch. Swann 210
7 rows selected.
SQL> column titre heading 'Titre du livre' <-- on donne un titre la colonne titre
SQL> column prix heading 'Prix d''achat' <-- ainsi qu' la colonne prix
SQL> select titre,prix from biblio; <-- vrification
Titre du livre Prix d'achat
-------------------- ------------
Les fleurs du mal 120
Tintin au Tibet 70
La terre 52.5
Madame Bovary 136.5
Manhattan transfer 336
Tintin en Amrique 70
Du ct de ch. Swann 210
7 rows selected.

9.5.2. FORMAT D'UNE COLONNE NUMERIQUE OU TEXTE
COLUMN nom_colonne FORMAT format =>La colonne indique est formate au format indiqu.
Diffrents formats existent pour les divers types de colonnes :

Colonne de texte : Le format An permet d'afficher les valeurs sur n positions.
Colonne de nombres
format signification
9999 nombres cadrs sur 4 positions
0999 idem avec affichage des zros de tte
9990 idem - affiche de plus 0 au lieu d'un blanc si la valeur est nulle
$9999 fait prcder la valeur par $

Administration Oracle 40 / 69
E. MARCON V1.0
B9999 affiche une valeur nulle comme un blanc
9999MI affiche - derrire une valeur ngative
9999PR affiche les valeurs ngatives entre parenthses
9,999 une virgule sera place la position indique
99.99 un point dcimal sera plac l'endroit indiqu
9.99EEEE la valeur est affiche en notation scientifique

Exemples

SQL> column prix format 9999.99
SQL> select prix from biblio;
Prix d'achat
------------
120.00
70.00
52.50
136.50
336.00
70.00
210.00
7 rows selected.
SQL> column prix format 0999.99
SQL> select prix from biblio
Prix d'achat
------------
0120.00
0070.00
0052.50
0136.50
0336.00
0070.00
0210.00
7 rows selected.
SQL> column prix format 999.99EEEE
SQL> select prix from biblio;
Prix d'achat
------------
1.20E+02
7.00E+01
5.25E+01
1.37E+02
3.36E+02
7.00E+01
2.10E+02
7 rows selected.
SQL> column titre format A20
SQL> select titre from biblio;
Titre du livre
--------------------
Les fleurs du mal
Tintin au Tibet
La terre
Madame Bovary
Manhattan transfer
Tintin en Amrique
Du ct de ch. Swann
7 rows selected.
Introduction au langage SQL 24
SQL> column titre format A15
SQL> select titre from biblio;
Titre du livre
---------------
Les fleurs du m <-- les titres sont affichs raison de 15 caractres par ligne.
al
Tintin au Tibet
La terre
Madame Bovary
Manhattan trans
fer
Tintin en Amri
que
Du ct de ch.
Swann
7 rows selected.

Administration Oracle 41 / 69
E. MARCON V1.0
9
9
9.
.
. 6
6
6.
.
. V
V
VA
A
AR
R
RI
I
IA
A
AB
B
BL
L
LE
E
ES
S
S D
D
D'
'
' E
E
EN
N
NV
V
VI
I
IR
R
RO
O
ON
N
NN
N
NE
E
EM
M
ME
E
EN
N
NT
T
T
Sqlplus propose un ensemble de variables denvironnement permettant la configuration de cet outil.

Variable Description Valeurs possibles
ARRAY [SIZE] 20 | n
AUTO[COMMIT] OFF | ON | IMMEDIATE
BLO[CKTERMINATOR] . | c
CMDS[EP] ; | c | OFF | ON
COM[PATIBILITY]
CON[CAT]
COPYC[OMMIT]
CRT
DEF[INE]
ECHO
EMBEDDED
ESC[APE]
FEED[BACK]
FLU[SH]
HEA[DING]
HEADS[EP]
LINE[SIZE]
LONG
MAXD[ATA]
NEWP[AGE]
NULL
NUMF[ORMAT]
NUM[WIDTH]
PAGES[IZE]
PAU[SE]
RECSEP
RECSEPCHAR
SCAN
SHOW[MODE]
SPA[CE]
SQLC[ASE]
SQLCO[NTINUE]
SQLN[UMBER
SQLPRE[FIXE]
SQLP[ROMPT]
SQLT[ERMINATOR]
SUF[FIX]
TAB
TERM[OUT]
TI[ME]
TIMI[NG]
TRIM[OUT]
UND[ERLINE]
VER[IFY]
WRA[P]

Exemple dutilisation :
set long 1024
/* pour voir la totalit des dfinitions de vues */

set pagesize 20
/* formate la sortie cran par blocs de 20 lignes */

set pause on
/* ne visualise la sortie qu'aprs un 2e RC - bloc par bloc - */

set timing [on|off]
/* active ou dsactive le chronomtre */


Administration Oracle 42 / 69
E. MARCON V1.0
1
1
1
0
0
0
.
.
.
C
C
C
O
O
O
M
M
M
P
P
P
L
L
L
E
E
E
M
M
M
E
E
E
N
N
N
T
T
T
S
S
S
Q
Q
Q
L
L
L

Ce chapitre prsente le langage de dfinition de donnes (LDD) qui permet de spcifier le schma
dune base de donnes relationnelle. Ce langage correspond une partie de la norme SQL (structured
query language), lautre partie tant relative la manipulation des donnes (LMD).

La dfinition dun schma logique comprend essentiellement deux parties :
dune part la description des tables et de leur contenu,
dautre part les contraintes qui portent sur les donnes de la base.

La spcification des contraintes est souvent place au second plan bien quelle soit en fait trs importante:
elle permet dassurer, au niveau de la base des contrles sur lintgrit des donns qui simposent
toutes les applications accdant cette base. Un dernier aspect de la dfinition dun schma, rapidement
survol ici, est la description de la reprsentation physique.


Il existe plusieurs versions de SQL. Le plus ancien standard date de 1989. Il a t rvis de manire
importante en 1992 : la norme rsultant de cette rvision est SQL-92 ou SQL2. Une extension (SQL3)
comprenant lintroduction de caractristiques orientes - objet est en cours de discussion depuis trs
longtemps, et certains systmes ont dj anticip en proposant de nouvelles fonctionnalits.

1
11
0
00
.
..
1
11
.
..


T
TT
Y
YY
P
PP
E
EE
S
SS
S
SS
Q
QQ
L
LL

La norme SQL ANSI propose un ensemble de types qui sont donns dans le tableau ci dessous. Ce
tableau prsente galement la taille, en octets, des instances de chaque type, cette taille ntant ici qu
titre indicatif car elle peut varier selon les systmes.

Type Description Taille
INTEGER
Type des entiers relatifs 4 octets
SMALLINT
Idem. 2 octets
BIGINT
Idem. 8 octets
FLOAT
Flottants simple prcision 4 octets
DOUBLE PRECISION
Flottants double prcision 8 octets
REAL
Synonyme de FLOAT 4 octets
NUMERIC (M, D) Numrique avec prcision fixe. M octets
DECIMAL (M, D) Idem. M octets
CHAR(M) Chanes de longueur fixe M octets
VARCHAR(M) Chanes de longueur variable L+1 avec L<=h M
BIT VARYING
Chanes doctets Longueur de la chane.
DATE
Date (jour, mois, an) env. 4 octets
TIME
Horaire (heure, minutes, secondes) env. 4 octets
DATETIME
Date et heure 8 octets
YEAR
Anne 2 octets

10.1.1. TYPES NUMERIQUES EXACTS
La norme SQL ANSI distingue deux catgories dattributs numriques : les numriques exacts, et les
numriques flottants. Les types de la premire catgorie (essentiellement INTEGER et DECIMAL)
permettent de spcifier la prcision souhaite pour un attribut numrique, et donc de reprsenter une

Administration Oracle 43 / 69
E. MARCON V1.0
valeur exacte. Les numriques flottants correspondent aux types couramment utiliss en programmation
(FLOAT, DOUBLE) et ne reprsentent une valeur quavec une prcision limite.

Le type INTEGER permet de stocker des entiers, sur 4 octets en gnral, mais la taille du stockage nest
pas spcifie par la norme. Il existe deux variantes du type INTEGER : SMALLINT et BIGINT. Ces types
diffrent par la taille utilise pour le stockage ( voir le tableau ci dessus ).

Le type DECIMAL (M, D) correspond un numrique de taille maximale M, avec un nombre de dcimales
fix D. Le type NUMERIC est un synonyme pour DECIMAL. Ces types sont surtout utiles pour manipuler
des valeurs dont la prcision est connue, comme les valeurs montaires. Afin de prserver cette
prcision, les instances de ces types sont stockes comme des chanes de caractres.
10.1.2. TYPES NUMERIQUES FLOTTANTS
Ces types sappuient sur la reprsentation des numriques flottants propre la machine, en simple ou
double prcision. Leur utilisation est donc analogue celle que lon peut en faire dans un langage de
programmation comme le C.
Le type FLOAT correspond aux flottants en simple prcision.
Le type DOUBLE PRECISION correspond aux flottants en double prcision. Le raccourci DOUBLE est
accept.
Le type REAL est un synonyme pour DOUBLE.
10.1.3. CARACTERES ET CHAINES DE CARACTERES
Les deux types principaux de la norme ANSI, disponibles dans la plupart des SGBD relationnels, sont
CHAR et VARCHAR. Ces deux types permettent de stocker des chanes de caractres dune taille
maximale fixe par le paramtre M. Les syntaxes sont identiques :
Pour le premier, CHAR(M),
et pour le second VARCHAR(M).

La diffrence essentielle entre les deux types est quune valeur CHAR a une taille fixe, et se trouve donc
complte avec des blancs si sa taille est infrieure M. En revanche une valeur VARCHAR a une taille
variable et est tronque aprs le dernier caractre non blanc.

Quand on veut stocker des chanes de caractres trs longues (des textes, voire des livres), le type
VARCHAR ne suffit plus. La norme SQL propose un type BIT VARYING qui correspond de trs longues
chanes de caractres. Souvent les systmes proposent des variantes de ce type sous le nom BLOB
(pour Binary Long Object) ou LONG.
10.1.4. DATES
Un attribut de type DATE stocke les informations jour, mois et anne (sur 4 chiffres). La reprsentation
interne nest pas spcifie par la norme. Tous les systmes proposent de nombreuses oprations de
conversion (non normalises) qui permettent dobtenir un format daffichage quelconque.
Un attribut de type TIME stocke les informations _ heure _ , _ minute _ et _ seconde _ . Laffichage se
fait par dfaut au format HH:MM:SS. Le type DATETIME permet de combiner une date et un horaire,
laffichage se faisant au format AAAA-MM-JJ HH:MM:SS.
1
11
0
00
.
..
2
22
.
..


C
CC
R
RR
E
EE
A
AA
T
TT
I
II
O
OO
N
NN


D
DD
E
EE
S
SS


T
TT
A
AA
B
BB
L
LL
E
EE
S
SS

La commande principale est CREATE TABLE.
Voici la commande de cration de la table Internaute.

CREATE TABLE Internaute (email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4))

Administration Oracle 44 / 69
E. MARCON V1.0

La syntaxe se comprend aisment. La seule difficult est de choisir correctement le type de chaque
attribut.
10.2.1. NULL OU NOT NULL

Le NOT NULL dans la cration de table Internaute indique que lattribut correspondant doit toujours
avoir une valeur.

Il sagit dune diffrence importante entre la pratique et la _ thorie _ : on admet que certains attributs
peuvent ne pas avoir de valeur, ce qui est trs diffrent dune chane vide ou de 0. Quand on parle de
valeur NULL en SQL2, il sagit en fait dune absence de valeur. En consquence :
on ne peut pas faire dopration incluant un NULL ;
on ne peut pas faire de comparaison avec un NULL.

Loption NOT NULL oblige toujours indiquer une valeur. Loption suivante permet ainsi de garantir
que tout internaute a un mot de passe.
motDePasse VARCHAR(60) NOT NULL

Le SGBD rejettera alors toute tentative dinsrer une ligne dans Internaute sans donner de mot de passe.

Si les valeurs NULL sont autorises, il faudra en tenir compte quand on interroge la base. Cela peut
compliquer les choses, voire donner des rsultats surprenants : il est prfrable de forcer les attributs
important avoir une valeur.

10.2.2. DEFAULT
Une autre manire de forcer un attribut toujours prendre une valeur est de spcifier une valeur par
dfaut avec loption DEFAULT.

CREATE TABLE Cinma (nom VARCHAR (50) NOT NULL,
adresse VARCHAR (50) DEFAULT Inconnue)

Quand on insrera une ligne dans la table Cinma sans indiquer dadresse, le systme affectera
automatiquement la valeur Inconnu cet attribut. En gnral on utilise comme valeur par dfaut une
constante, sauf pour quelques variables fournies par le systme (par exemple SYSDATE qui peut indiquer
la date du jour).

10.2.3. CONTRAINTES
La cration dune table telle quon la vue prcdemment est extrmement sommaire car elle nindique
que le contenu de la table sans spcifier les contraintes que doit respecter ce contenu. Or il y a toujours
des
contraintes et il est indispensable de les inclure dans le schma pour assurer (dans la mesure du
possible)
lintgrit de la base.
Voici les rgles (ou contraintes dintgrit) que lon peut demander au systme de garantir :
1. Un attribut doit toujours avoir une valeur. Cest la contrainte NOT NULL vue prcdemment.
2. Un attribut (ou un ensemble dattributs) constitue(nt) la cl de la relation.
3. Un attribut dans une table est lie la cl primaire dune autre table (intgrit rfrentielle).
4. La valeur dun attribut doit tre unique au sein de la relation.
5. Enfin toute rgle sappliquant la valeur dun attribut (min et max par exemple).
Les contraintes sur les cls doivent tre systmatiquement spcifies. La dernire (clause CHECK)
sappuie
en grande partie sur la connaissance du langage dinterrogation de SQL et sera vue ultrieurement.

Administration Oracle 45 / 69
E. MARCON V1.0
10.2.3.1 Cls dune table
Une cl est un attribut (ou un ensemble dattributs) qui identifie(nt) de manire unique un tuple dune
relation.
Il peut y avoir plusieurs cls mais lune dentre elles doit tre choisie comme cl primaire. Ce choix est
important : la cl primaire est la cl utilise pour rfrencer une ligne et une seule partir dautres tables.
Il est donc assez dlicat de la remettre en cause aprs coup. En revanche les cls secondaires peuvent
tre cres ou supprimes beaucoup plus facilement.

La cl primaire est spcifie avec loption PRIMARY KEY.

CREATE TABLE Internaute (email VARCHAR (50) NOT NULL,
48 CHAPITRE 4. LE MODLE RELATIONNEL
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
anneeNaiss INTEGER,
PRIMARY KEY (email))

Une cl peut tre constitue de plusieurs attributs :

CREATE TABLE Notation (idFilm INTEGER NOT NULL,
email VARCHAR (50) NOT NULL,
note INTEGER DEFAULT 0,
PRIMARY KEY (titre, email))

Tous les attributs figurant dans une cl doivent tre dclars NOT NULL. Cela na pas vraiment de sens
en effet didentifier des lignes par des valeurs absentes.

On peut galement spcifier que la valeur dun attribut est unique pour lensemble de la colonne. Cela
permet dindiquer des cls secondaires. On peut par exemple indiquer que deux artistes ne peuvent avoir
les mmes nom et prnom avec loption UNIQUE.

CREATE TABLE Artiste(id INTEGER NOT NULL,
nom VARCHAR (30) NOT NULL,
prenom VARCHAR (30) NOT NULL,
anneeNaiss INTEGER,
PRIMARY KEY (id),
UNIQUE (nom, prenom));

Il est facile de supprimer cette contrainte de cl secondaire par la suite. Ce serait beaucoup plus difficile si
on avait utilis la paire (nom, prenom) comme cl primaire puisquelle serait alors utilise pour
rfrencer un artiste dans dautres tables.

10.2.3.2 Cls trangres
La norme SQL ANSI permet dindiquer quelles sont les cls trangres dans une table, autrement dit,
quels sont les attributs qui font rfrence une ligne dans une autre table.

On peut spcifier les cls trangres avec loption FOREIGN KEY.

CREATE TABLE Film (idFilm INTEGER NOT NULL,
titre VARCHAR (50) NOT NULL,
annee INTEGER NOT NULL,
idMES INTEGER,
codePays INTEGER,
PRIMARY KEY (idFilm),
FOREIGN KEY (idMES) REFERENCES Artiste,
FOREIGN KEY (codePays) REFERENCES Pays);


Administration Oracle 46 / 69
E. MARCON V1.0
La commande FOREIGN KEY (idMES) REFERENCES Artiste indique que idMES rfrence la cl
primaire de la table Artiste. Le SGBD vrifiera alors, pour toute modification pouvant affecter le lien entre
les deux tables, que la valeur de idMES correspond bien une ligne
de Artiste. Ces modifications sont :
linsertion dans Film avec une valeur inconnue pour idMES ;
la destruction dun artiste ;
la modification de id dans Artiste ou de idMES dans Film.

En dautres termes le lien entre Film et Artiste est toujours valide. Cette contrainte est importante pour
garantir quil ny a pas de fausse rfrence dans la base, par exemple quun film ne fait pas rfrence un
artiste qui nexiste pas. Il est beaucoup plus confortable dcrire une application par la suite quand on sait
que les informations sont bien l o elles doivent tre.

Il faut noter que lattribut idMES nest pas dclar NOT NULL, ce qui signifie que lon sautorise
ne pas connatre le metteur en scne dun film. Quand un attribut est NULL, la contrainte dintgrit
rfrentielle ne sapplique pas.

Que se passe-t-il quand la violation dune contrainte dintgrit est dtecte par le systme ? Par dfaut,
la mise jour est rejete, mais il est possible de demander la rpercussion de cette mise jour de
manire ce que la contrainte soit respecte. Les vnements que lon peut rpercuter sont la
modification ou la destruction de la ligne rfrence, et on les dsigne par ON UPDATE et ON DELETE
respectivement. La rpercussion elle-mme consiste soit mettre la cl trangre NULL (option SET
NULL), soit appliquer la mme opration aux lignes de lentit composante (option CASCADE).

Voici comment on indique que la destruction dun metteur en scne dclenche la mise NULL de la cl
trangre idMES pour tous les films quil a ralis.

CREATE TABLE Film (titre VARCHAR (50) NOT NULL,
annee INTEGER NOT NULL,
idMES INTEGER,
codePays INTEGER,
PRIMARY KEY (titre),
FOREIGN KEY (idMES) REFERENCES Artiste
ON DELETE SET NULL,
FOREIGN KEY (codePays) REFERENCES Pays);

Dans le cas dune entit faible, on dcide en gnral de dtruire le composant quand on dtruit le
compos.

La spcification des actions ON DELETE et ON UPDATE simplifie considrablement la gestion de la base
par la suite : on na plus par exemple se soucier de dtruire les salles quand on dtruit un cinma.

10.2.3.3 Enumration des valeurs possibles avec CHECK
La norme SQL ANSI comprend une option CHECK (condition) pour exprimer des contraintes portant
soit sur un attribut, soit sur une ligne. La condition elle-mme peut tre toute expression suivant la clause
WHERE dans une requte SQL. Les contraintes les plus courantes sont celles consistant restreindre un
attribut un ensemble de valeurs, comme expliqu ci-dessous. On peut trouver des contraintes
arbitrairement complexes, faisant rfrence dautres relations. Nous reviendrons sur cet aspect aprs
avoir tudi le langage dinterrogation SQL.

Voici un exemple simple qui restreint les valeurs possibles des attributs annee et genre dans la table
Film.
CREATE TABLE Film (titre VARCHAR (50) NOT NULL,
annee INTEGER
CHECK (annee BETWEEN 1890 AND 2000) NOT NULL,
genre VARCHAR (10)
CHECK (genre IN (Histoire,Western,Drame)),
idMES INTEGER,

Administration Oracle 47 / 69
E. MARCON V1.0
codePays INTEGER,
PRIMARY KEY (titre),
FOREIGN KEY (idMES) REFERENCES Artiste,
FOREIGN KEY (codePays) REFERENCES Pays);

Au moment dune insertion dans la table Film, ou dune modification de lattribut annee ou genre=, le
SGBD vrifie que la valeur insre dans genre appartient lensemble numr dfini par la clause
CHECK.

Une autre manire de dfinir, dans la base, lensemble des valeurs autorises pour un attribut en
dautres termes, une codification impose consiste placer ces valeurs dans une table et la lier
lattribut par une contrainte de cl trangre. Cest ce que nous pouvons faire par exemple pour la table
Pays.
CREATE TABLE Pays (code VARCHAR (4) DEFAULT 0 NOT NULL,
nom VARCHAR (30) NOT NULL,
langue VARCHAR (30) NOT NULL,
PRIMARY KEY (code))
INSERT INTO Pays VALUES (0, Inconnu, Inconnue);
INSERT INTO Pays VALUES (1, France, Franais);
INSERT INTO Pays VALUES (2, USA, Anglais);
INSERT INTO Pays VALUES (3, Allemagne, Allemand);
INSERT INTO Pays VALUES (4, Angleterre, Anglais);
...
Si on ne fait pas de vrification automatique, soit avec CHECK, soit avec la commande FOREIGN KEY,
il faut faire cette vrification dans lapplication, ce qui est plus lourd grer.


1
1
10
0
0.
.
. 3
3
3.
.
. M
M
MO
O
OD
D
DI
I
I F
F
FI
I
IC
C
CA
A
AT
T
TI
I
I O
O
ON
N
N D
D
DU
U
U S
S
SC
C
CH
H
HE
E
EM
M
MA
A
A
La cration dun schma nest quune premire tape dans la vie dune base de donnes. On est toujours
amen par la suite crer de nouvelles tables, ajouter des attributs ou en modifier la dfinition. La
forme gnrale de la commande permettant de modifier une table est :

ALTER TABLE nomTable ACTION description

o ACTION peut tre principalement ADD, MODIFY, DROP ou RENAME, et description est la
commande de modification associe ACTION. La modification dune table peut poser des problmes si
elle est incompatible avec le contenu existant. Par exemple passer un attribut NOT NULL implique que
cet attribut a dj des valeurs pour toutes les lignes de la table.


Voici quelques exemples dajout et de modification dattributs. On peut ajouter un attribut region la
table Internaute avec la commande :

ALTER TABLE Internaute ADD region VARCHAR(10);

Sil existe dj des donnes dans la table, la valeur sera NULL ou la valeur par dfaut. La taille de
region tant certainement insuffisante, on peut lagrandir avec MODIFY, et la dclarer NOT NULL par
la mme occasion :

ALTER TABLE Internaute MODIFY region VARCHAR(30) NOT NULL;

Il est galement possible de diminuer la taille dune colonne, avec le risque dune perte dinformation pour
les donnes existantes. On peut mme changer son type, pour passer par exemple de VARCHAR
INTEGER, avec un rsultat imprvisible.
Loption ALTER TABLE permet dajouter une valeur par dfaut.

ALTER TABLE Internaute ALTER region SET DEFAULT PACA;


Administration Oracle 48 / 69
E. MARCON V1.0
Enfin on peut dtruire un attribut avec DROP.

ALTER TABLE Internaute DROP region;

1
1
10
0
0.
.
. 4
4
4.
.
. C
C
CR
R
RE
E
EA
A
AT
T
TI
I
I O
O
ON
N
N D
D
D

I
I
I N
N
ND
D
DE
E
EX
X
X
Pour complter le schma dune table, on peut dfinir des index. Un index offre un chemin daccs aux
lignes dune table qui est considrablement plus rapide que le balayage de cette table du moins quand
le nombre de lignes est trs lev. Les SGBDL crent systmatiquement un index sur la cl primaire de
chaque table. Il y a deux raisons cela :
lindex permet de vrifier rapidement, au moment dune insertion, que la cl nexiste pas dj ;
beaucoup de requtes SQL, notamment celles qui impliquent plusieurs tables (jointures), se basent
sur les cls des tables pour reconstruire les liens. Lindex peut alors tre utilis pour amliorer les
temps de rponse.

Un index est galement cr pour chaque clause UNIQUE utilise dans la cration de la table. On peut
de plus crer dautres index, sur un ou plusieurs attributs, si lapplication utilise des critres de recherche
autres que les cls primaire ou secondaires.

La commande pour crer un index est la suivante :

CREATE [UNIQUE] INDEX nomIndex ON nomTable (attribut1 [, ...])

La clause UNIQUE indique quon ne peut pas trouver deux fois la mme cl. La commande ci-dessous
cre un index de nom idxNom sur les attributs nom et prenom de la table Artiste. Cet index a donc une
fonction quivalente la clause UNIQUE dj utilise dans la cration de la table.

CREATE UNIQUE INDEX idxNom ON Artiste (nom, prenom);

Il ne faut pas crer des index tort et travers, car ils ont un impact ngatif sur les commandes
dinsertion et de destruction. chaque fois, il faut en effet mettre jour tous les index portant sur la table,
ce qui reprsente un cot certain.
1
11
0
00
.
..
5
55
.
..


R
RR
E
EE
Q
QQ
U
UU
E
EE
T
TT
E
EE
S
SS


S
SS
I
II
M
MM
P
PP
L
LL
E
EE
S
SS
S
SS
Q
QQ
L
LL

10.5.1. SELECTIONS SIMPLES
Commenons par les requtes les plus simples.

Nous utiliserons les tables suivantes :
Station (nomStation, capacit, lieu, rgion, tarif)
Activite (nomStation, libell, prix)
Client (id, nom, prnom, ville, rgion, solde)
Sjour (idClient, station, dbut, nbPlaces)


Premire requte : on souhaite extraire de la base le nom de toutes les stations se trouvant aux Antilles.

SELECT nomStation
FROM Station
WHERE region = Antilles

Ce premier exemple montre la structure de base dune requte SQL, avec les trois clauses SELECT,
FROM et WHERE.

Administration Oracle 49 / 69
E. MARCON V1.0
FROM indique la (ou les) tables dans lesquelles on trouve les attributs utiles la requte. Un
attributpeut tre utile de deux manires (non exclusives) : (1) on souhaite afficher son contenu, (2)
on souhaite quil ait une valeur particulire (une constante ou la valeur dun autre attribut).
SELECT indique la liste des attributs constituant le rsultat.
WHERE indique les conditions que doivent satisfaire les n-uplets de la base pour faire partie du
rsultat.

Dans lexemple prcdent, linterprtation est simple : on parcourt les n-uplets de la relation Station.
Pour chaque n-uplet, si lattribut region a pour valeur Antilles, on place lattribut nomStation dans
le rsultat

Le rsultat dun ordre SQL est toujours une relation (une table) dont les attributs sont ceux spcifis dans
la clause SELECT. On peut donc considrer en premire approche ce rsultat comme un dcoupage,
horizontal et vertical, de la table indique dans le FROM, similaire une utilisation combine de la
slection et de la projection en algbre relationnelle.

En fait on dispose dun peu plus de libert que cela. On peut :
Renommer les attributs
Appliquer des fonctions aux valeurs de chaque tuple.
Introduire des constantes.

Les fonctions applicables aux valeurs des attributs sont par exemple les oprations arithmtiques (
,*, ...) pour les attributs numriques ou des manipulations de chane de caractres (concatnation, sous
chanes, mise en majuscule, ...).

Il nexiste pas de norme mais la requte suivante devrait fonctionner sur tous les systmes : on convertit
le prix des activits en euros et on affiche le cours de leuro avec chaque tuple.

SELECT libelle, prix / 6.56, Cours de leuro = , 6.56
FROM Activite
WHERE nomStation = Santalba


10.5.2. RE-NOMMAGE
Les noms des attributs sont par dfaut ceux indiqus dans la clause SELECT, mme quand il y a des
expressions complexes. Pour renommer les attributs, on utilise le mot-cl AS.

SELECT libelle, prix / 6.56 AS prixEnEuros,
Cours de leuro = , 6.56 AS cours
FROM Activite
WHERE nomStation = Santalba

Remarque : Sur certains systmes, le mot-cl AS est optionnel.

10.5.3. DOUBLONS
SQL permet lexistence de doublons dans les tables (il ne sagit donc pas densemble au sens strict du
terme). La spcification de cls permet dviter les doublons dans les relations stockes, mais il peuvent
apparatre dans le rsultat dune requte. Exemple :

SELECT libelle
FROM Activite

donnera autant de lignes dans le rsultat que dans la table Activite.

Pour viter dobtenir deux tuples identiques, on peut utiliser le mot-cl DISTINCT.

SELECT DISTINCT libelle

Administration Oracle 50 / 69
E. MARCON V1.0
FROM Activite

Attention : llimination des doublons peut tre une opration coteuse.
10.5.4. TRI DU RESULTAT
Il est possible de trier le rsultat dun requte avec la clause ORDER BY suivie de la liste des attributs
servant de critre au tri. Exemple :

SELECT *
FROM Station
ORDER BY tarif, nomStation

trie, en ordre ascendant, les stations par leur tarif, puis, pour un mme tarif, prsente les stations selon
lordre lexicographique. Pour trier en ordre descendant, on ajoute le mot-cl DESC aprs la liste des
attributs.

Voici maintenant la plus simple des requtes SQL : elle consiste afficher lintgralit dune table. Pour
avoir toutes les lignes on omet la clause WHERE, et pour avoir toutes les colonnes, on peut au choix lister
tous les attributs ou utiliser le caractre * qui a la mme signification.
SELECT *
FROM Station

10.5.5. LA CLAUSE WHERE
Dans la clause WHERE, on spcifie une condition boolenne portant sur les attributs des relations du
FROM. On utilise pour cela de manire standard le AND, le OR, le NOT et les parenthses pour changer
lordre de priorit des oprateurs boolens. Par exemple :

SELECT nomStation, libelle
FROM Activite
WHERE nomStation = Santalba
AND (prix > 50 AND prix < 120)

Les oprateurs de comparaison sont ceux du Pascal : =, <, <=, >, >= et <> pour exprimer la diffrence ( !=_
_ est galement possible).

Pour obtenir une recherche par intervalle, on peut galement utiliser le
mot-cl BETWEEN. La requte prcdente est quivalente :

SELECT nomStation, libelle
FROM Activite
WHERE nomStation = Santalba
AND prix BETWEEN 50 AND 120

10.5.6. CHAINES DE CARACTERES
Les comparaisons de chanes de caractres soulvent quelques problmes dlicats.
Il faut tre attentif aux diffrences entre chanes de longueur fixe et chanes de longueur variable. Les
premires sont compltes par des blancs ( ) et pas les secondes.
Si SQL ne distingue pas majuscules et minuscules pour les mot-cls, il nen va pas de mme pour les
valeurs. Donc SANTALBA est diffrent de Santalba.

SQL fournit des options pour les recherches par motif (pattern matching) laide de la clause LIKE.
Le caractre _ dsigne nimporte quel caractre, et le % nimporte quelle chane de caractres. Par
exemple, voici la requte cherchant toutes les stations dont le nom termine par un a.

SELECT nomStation
FROM Station
WHERE nomStation LIKE %a

Administration Oracle 51 / 69
E. MARCON V1.0

Quelles sont les stations dont le nom commence par un V et comprend exactement 6 caractres ?

SELECT nomStation
FROM Station
WHERE nomStation LIKE V_____

10.5.7. DATES
En fait tous les systmes proposaient bien avant la normalisation leur propre format de date, et la norme
prconise par SQL2 nest de ce fait pas suivie par tous.
Une date est spcifie en SQL2 par le mot-cl DATE suivi dune chane de caractres au format aaaa-
mm-jj, par exemple DATE 1998-01-01. Les zros sont ncessaires afin que le mois et le quantime
comprennent systmatiquement deux chiffres.

On peut effectuer des slections sur les dates laide des comparateurs usuels. Voici par exemple la
requte ID des clients qui ont commenc un sjour en juillet 1998.

SELECT idClient
FROM Sejour
WHERE debut BETWEEN DATE 1998-07-01 AND DATE 1998-07-31

Les systmes proposent de plus des fonctions permettant de calculer des carts de dates, dajouter des
mois ou des annes des dates, etc.
10.5.8. VALEURS NULLES
On admet que la valeur de certains attributs soit inconnue,et on parle alors de valeur nulle, dsigne par
le mot-cl NULL. Il est trs important de comprendre que la valeur nulle nest en fait pas une valeur mais
une absence de valeur, et que lon ne peut donc lui appliquer aucune des oprations ou comparaisons
usuelles.
Toute opration applique NULL donne pour rsultat NULL.
Toute comparaison avec NULL donne un rsultat qui nest ni vrai, ni faux mais une troisime valeur
boolenne, UNKNOWN.

Les valeurs boolennes TRUE, FALSE et UNKNOWN sont dfinies de la manire suivante :
TRUE vaut 1,
FALSE 0
et UNKNOWN 1/2.

Les conditions exprimes dans une clause WHERE sont values pour chaque tuple, et ne sont conservs
dans le rsultat que les tuples pour lesquels cette valuation donne TRUE. La prsence dune valeur nulle
dans une comparaison a donc souvent (mais pas toujours !) le mme effet que si cette comparaison
choue et renvoie FALSE.

1
11
0
00
.
..
6
66
.
..


R
RR
E
EE
Q
QQ
U
UU
E
EE
T
TT
E
EE
S
SS


S
SS
U
UU
R
RR


P
PP
L
LL
U
UU
S
SS
I
II
E
EE
U
UU
R
RR
S
SS


T
TT
A
AA
B
BB
L
LL
E
EE
S
SS

Les requtes SQL dcrites dans cette section permettent de manipuler simultanment plusieurs tables et
dexprimer les oprations binaires de lalgbre relationnelle : jointure, produit cartsien, union,
intersection, diffrence.
10.6.1. JOINTURES
La jointure est une des oprations les plus utiles (et donc une des plus courantes) puisquelle permet
dexprimer des requtes portant sur des donnes rparties dans plusieurs tables. La syntaxe pour
exprimer des jointures avec SQL est une extension directe de celle tudie prcdemment dans le cas
des slections simples : on donne simplement la liste des tables concernes dans la clause FROM, et on
exprime les critres de rapprochement entre ces tables dans la clause WHERE.

Administration Oracle 52 / 69
E. MARCON V1.0

Prenons lexemple de la requte suivante : donner le nom des clients avec le nom des stations o ils ont
sjourn. Le nom du client est dans la table Client, linformation sur le lien client/station dans la table
Sejour. Deux tuples de ces tables peuvent tre joints sils concernent le mme client, ce qui peut
sexprimer laide de lidentifiant du client. On obtient la requte :

SELECT nom, station
FROM Client, Sejour
WHERE id = idClient

On peut remarquer quil ny a pas dans ce cas dambigut sur les noms des attributs : nom et id
viennent de la table Client, tandis que station et idClient viennent de la table Sejour. Il peut
arriver (il arrive de fait frquemment) quun mme nom dattribut soit partag par plusieurs tables
impliques dans une jointure. Dans ce cas on rsout lambigut en prfixant lattribut par le nom de la
table.

Exemple : afficher le nom dune station, son tarif hebdomadaire, ses activits et leurs prix.

SELECT nomStation, tarif, libelle, prix
FROM Station, Activite
WHERE Station.nomStation = Activite.nomStation

Comme il peut tre fastidieux de rpter intgralement le nom dune table, on peut lui associer un
synonyme et utiliser ce synonyme en tant que prfixe. La requte prcdente devient par exemple :

SELECT S.nomStation, tarif, libelle, prix
FROM Station S, Activite A
WHERE S.nomStation = A.nomStation


Bien entendu, on peut effectuer des jointures sur un nombre quelconque de tables, et les combiner avec
des slections. Voici par exemple la requte qui affiche le nom des clients habitant Paris, les stations o
ils ont sjourn avec la date, enfin le tarif hebdomadaire pour chaque station.

SELECT nom, station, debut, tarif
FROM Client, Sejour, Station
WHERE ville = Paris
AND id = idClient
AND station = nomStation

Il ny a pas dambigut sur les noms dattributs donc il est inutile en loccurrence demployer des
synonymes. Il existe en revanche une situation o lutilisation des synonymes est indispensable : celle ou
lon souhaite effectuer une jointure dune relation avec elle-mme.

Considrons la requte suivante : Donner les couples de stations situes dans la mme rgion. Ici toutes
les informations ncessaires sont dans la seule table Station, mais on construit un tuple dans le rsultat
avec deux tuples partageant la mme valeur pour lattribut rgion.

Tout se passe comme sil on devait faire la jointure entre deux versions distinctes de la table Station.
Techniquement, on rsout le problme en SQL en utilisant deux synonymes distincts.

SELECT s1.nomStation, s2.nomStation
FROM Station s1, Station s2
WHERE s1.region = s2.region

On peut imaginer que s1 et s2 sont deux curseurs qui parcourent indpendamment la table Station
et permettent de constituer des couples de tuples auxquels on applique la condition de jointure.


Administration Oracle 53 / 69
E. MARCON V1.0
10.6.2. UNION, INTERSECTION ET DIFFERENCE
On construit deux requtes dont les rsultats ont le mme nombre de colonnes et les mmes types
dattributs, et on les relie par un des mot-cl UNION, INTERSECT ou EXCEPT.


Trois exemples suffiront pour illustrer ces oprations.
Donnez tous les noms de rgion dans la base.

SELECT region FROM Station
UNION
SELECT region FROM Client

Donnez les rgions o lon trouve la fois des clients et des stations.

SELECT region FROM Station
INTERSECT
SELECT region FROM Client

Quelles sont les rgions o lon trouve des stations mais pas des clients ?

SELECT region FROM Station
EXCEPT
SELECT region FROM Client

La norme SQL2 spcifie que les doublons doivent tre limins du rsultat lors des trois oprations
ensemblistes. Le cot de llimination de doublons ntant pas ngligeable, il se peut cependant que
certains systmes fassent un choix diffrent.

Lunion ne peut tre exprime autrement quavec UNION. En revanche INTERSECT peut tre exprime
avec une jointure, et la diffrence sobtient, souvent de manire plus aise, laide des requtes
imbriques.
1
11
0
00
.
..
7
77
.
..


R
RR
E
EE
Q
QQ
U
UU
E
EE
T
TT
E
EE
S
SS


I
II
M
MM
B
BB
R
RR
I
II
Q
QQ
U
UU
E
EE
E
EE
S
SS


Jusqu prsent les conditions exprimes dans le WHERE consistaient en comparaisons de valeurs
scalaires.
Il est possible galement avec SQL dexprimer des conditions sur des relations. Pour lessentiel, ces
conditions consistent en lexistence dau moins un tuple dans la relation teste, ou en lappartenance dun
tuple particulier la relation.

La relation teste est construite par une requte SELECT ... FROM ... WHERE que lon appelle sous-
requte ou requte imbrique puisquelle apparat dans la clause WHERE

Une premire utilisation des sous-requtes est doffrir une alternative syntaxique lexpression de
jointures. Les jointures concernes sont celles pour lesquelles le rsultat est constitu avec des attributs
provenant dune seule des deux tables, lautre ne servant que pour exprimer des conditions.

Prenons lexemple suivant : on veut les noms des stations o ont sjourn des clients parisiens. On peut
obtenir le rsultat avec une jointure classique.

SELECT station
FROM Sejour, Client
WHERE id = idClient
AND ville = Paris

Ici, le rsultat, station, provient de la table SEJOUR. Do lide de sparer la requte en deux parties :
(1) on constitue avec une sous-requte les ids des clients parisiens, puis (2) on utilise ce rsultat dans la
requte principale.

SELECT station
FROM Sejour

Administration Oracle 54 / 69
E. MARCON V1.0
WHERE idClient IN (SELECT id FROM Client
WHERE ville = Paris)

Le mot-cl IN exprime clairement la condition dappartenance de idClient la relation forme par la
requte imbrique. On peut remplacer le IN par un simple = si on est sr que la sous-requte ramne
un et un seul tuple. Par exemple :

SELECT nom, prenom
FROM Client
WHERE region = (SELECT region FROM Station
WHERE nomStation = Santalba)

est (partiellement) correct car la recherche dans la sous-requte seffectue par la cl. En revanche il se
peut quaucun tuple ne soit ramen, ce qui gnre une erreur.

Voici les conditions que lon peut exprimer sur une relation construite avec une requte imbrique.
EXISTS R. Renvoie TRUE si R nest pas vide, FALSE sinon.
t IN R o est un tuple dont le type est celui de R TRUE si t appartient R, FALSE sinon.
v comp ANY R, o comp est un comparateur SQL (<,=, etc.). Renvoie TRUE si la comparaison avec
au moins un des tuples de la relation unaire renvoie TRUE.
v comp ALL R, o comp est un comparateur SQL (<,=, etc.). Renvoie TRUE si la comparaison avec
tous les tuples de la relation unaire renvoie TRUE.

De plus, toutes ces expressions peuvent tre prfixes par NOT pour obtenir la ngation. Voici quelques
exemples.
O (station, lieu) ne peut-on pas faire du ski ?

SELECT nomStation, lieu
FROM Station
WHERE nomStation NOT IN (SELECT nomStation FROM Activite
WHERE libelle = Ski)

Quelle station pratique le tarif le plus lev ?

SELECT nomStation
FROM Station
WHERE tarif >= ALL (SELECT tarif FROM Station)

Dans quelle station pratique-t-on une activit au mme prix qu Santalba ?

SELECT nomStation, libelle
FROM Activite
WHERE prix IN (SELECT prix FROM Activite
WHERE nomStation = Santalba)


1
11
0
00
.
..
8
88
.
..


S
SS
O
OO
U
UU
S
SS


-
--
R
RR
E
EE
Q
QQ
U
UU
E
EE
T
TT
E
EE
S
SS


C
CC
O
OO
R
RR
R
RR
E
EE
L
LL
E
EE
E
EE
S
SS


Les exemples de requtes imbriques donns prcdemment pouvait tre valus indpendamment de
la requte principale, ce qui permet au systme (sil le juge ncessaire) dexcuter la requte en deux
phases. Il peut arriver que la sous - requte soit base sur une ou plusieurs valeurs issues des relations
de la requte principale. On parle alors de requtes corrles.

Exemple : quels sont les clients (nom, prnom) qui ont sjourn Santalba.

SELECT nom, prenom
FROM Client
WHERE EXISTS (SELECT x FROM Sejour
WHERE station = Santalba
AND idClient = id)


Administration Oracle 55 / 69
E. MARCON V1.0
Le id dans la requte imbrique nappartient pas la table Sejour mais la table Client rfrence
dans le FROM de la requte principale.

1
1
10
0
0.
.
. 9
9
9.
.
. A
A
AG
G
GR
R
RE
E
EG
G
GR
R
RA
A
AT
T
TI
I
I O
O
ON
N
N
Toutes les requtes vues jusqu prsent pouvaient tre interprtes comme une suite doprations
effectues tuple tuple. De mme le rsultat tait toujours constitu de valeurs issues de tuples
individuels.

Les fonctionnalits dagrgation de SQL permettent dexprimer des conditions sur des groupes de tuples,
et de constituer le rsultat par agrgation de valeurs au sein de chaque groupe.

La syntaxe SQL fournit donc :
Le moyen de partitioner une relation en groupes selon certains critres.
Le moyen dexprimer des conditions sur ces groupes.
Des fonctions dagrgation.

Il existe un groupe par dfaut : cest la relation toute entire. Sans mme dfinir de groupe, on peut utiliser
les fonctions dagrgation.

10.9.1. FONCTIONS DAGREGATION
Ces fonctions sappliquent une colonne, en gnral de type numrique. Ce sont :
COUNT qui compte le nombre de valeurs non nulles.
MAX et MIN.
AVG qui calcule la moyenne des valeurs de la colonne.
4. SUM qui effectue le cumul.

Exemple dutilisation de ces fonctions :

SELECT COUNT(nomStation), AVG(tarif), MIN(tarif), MAX(tarif)
FROM Station

Remarque importante : on ne peut pas utiliser simultanment dans la clause SELECT des fonctions
dagrgation et des noms dattributs (sauf dans le cas dun GROUP BY, voir plus loin). La requte suivante
est incorrecte :

SELECT nomStation, AVG(tarif)
FROM Station

10.9.2. LA CLAUSE GROUP BY
Dans les requtes prcdentes, on appliquait la fonction dagrgation lensemble du rsultat dune
requte (donc ventuellement lensemble de la table elle-mme). Une fonctionnalit complmentaire
consiste partitioner ce rsultat en groupes, et appliquer la ou les fonction(s) chaque groupe.

On construit les groupes en associant les tuples partageant la mme valeur pour une ou plusieurs
colonnes.

Exemple : afficher les rgions avec le nombre de stations.

SELECT region, COUNT(nomStation)
FROM Station
GROUP BY region


Administration Oracle 56 / 69
E. MARCON V1.0
Donc ici on constitue un groupe pour chaque rgion. Puis on affiche ce groupe sous la forme dun tuple,
dans lequel les attributs peuvent tre de deux types :
les attributs dont la valeur est constante pour lensemble du groupe, soit prcisment les attributs du
GROUP BY. Exemple ici lattribut region ;
le rsultat dune fonction dagrgation applique au groupe : ici COUNT(nomStation).

Bien entendu il est possible dexprimer des ordres SQL complexes et dappliquer un GROUP BY au
rsultat. De plus, il nest pas ncessaire de faire figurer tous les attributs du GROUP BY dans la clause
SELECT.

Exemple : on souhaite consulter le nombre de places reserves, par client.

SELECT nom, SUM (nbPlaces)
FROM Client, Sejour
WHERE id = idClient
GROUP BY id, nom

10.9.3. LA CLAUSE HAVING
Finalement, on peut faire porter des conditions sur les groupes avec la clause HAVING. La clause WHERE
ne peut exprimer des conditions que sur les tuples pris un un.

Exemple : on souhaite consulter le nombre de places rserves, par client, pour les clients ayant rserv
plus de 10 places.

SELECT nom, SUM (nbPlaces)
FROM Client, Sejour
WHERE id = idClient
GROUP BY nom
HAVING SUM(nbPlaces) >= 10

On voit que la condition porte ici sur une proprit de lensemble des tuples du groupe, et pas de chaque
tuple pris individuellement. La clause HAVING est donc toujours exprime sur le rsultat de fonctions
dagrgation.

1
1
10
0
0.
.
. 1
1
10
0
0.
.
. M
M
MI
I
I S
S
SE
E
ES
S
S A
A
A J
J
JO
O
OU
U
UR
R
R
Les commandes de mise jour (insertion, destruction, modification) sont considrablement plus simples
que les requtes.

10.10.1. INSERTION
Linsertion seffectue avec la commande INSERT dont la syntaxe est la suivante :

INSERT INTO R( A1, A2, ... An) VALUES (v1, v2, ... vn)

R est le nom dune relation, et les A1, ... An sont les noms des attributs dans lesquels on souhaite
placer une valeur. Les autres attributs seront donc NULL (ou la valeur par dfaut).
Tous les attributs spcifis NOT NULL (et sans valeur par dfaut) doivent donc figurer dans une clause
INSERT.

Les v1, ... vn sont les valeurs des attributs. Exemple de linsertion dun tuple dans la table Client.

INSERT INTO Client (id, nom, prenom)
VALUES (40, Moriarty, Dean)

Donc, lissue de cette insertion, les attributs ville et region seront NULL.
Il est galement possible dinsrer dans une table le rsultat dune requte. Dans ce cas la partie VALUES
est remplace par la requte elle-mme.

Administration Oracle 57 / 69
E. MARCON V1.0

Exemple :
on a cr une table Sites (lieu, region)
et on souhaite y copier les couples (lieu, region) dj existant dans la table Station.

INSERT INTO Sites (lieu, region)
SELECT lieu, region FROM Station

Bien entendu le nombre dattributs et le type de ces derniers doivent tre cohrents.
10.10.2. DESTRUCTION
La destruction seffectue avec la clause DELETE dont la syntaxe est :

DELETE FROM R
WHERE condition

10.10.3. MODIFICATION
La modification seffectue avec la clause UPDATE. La syntaxe est proche de celle du DELETE :

UPDATE R SET A1=v1, A2=v2, ... An=vn
WHERE condition

R est la relation, les Ai sont les attributs, les vi les nouvelles valeurs et condition est toute
condition valide pour la clause WHERE.

Exemple : augmenter le prix des activits de la station Passac de 10%.

UPDATE Activite
SET prix = prix * 1.1
WHERE nomStation = Passac

Une remarque importante : toutes les mises jour ne deviennent dfinitives qu lissue dune validation
par commit. Entre temps elles peuvent tre annules par rollback.

1
11
0
00
.
..
1
11
1
11
.
..
V
VV
U
UU
E
EE
S
SS

Les vues correspondent la possibilit dajouter au schma des tables virtuelles qui ne sont rien dautres
que le rsultat de requtes stockes. De telles tables sont nommes des vues dans la terminologie
relationnelle. On peut interroger des vues comme des tables stockes.

Une vue ninduit aucun stockage puisquelle nexiste pas physiquement, et permet dobtenir une
reprsentation diffrente des tables sur lesquelles elle est base.
10.11.1. CREATION ET INTERROGATION DUNE VUE
Une vue est tout point comparable une table : en particulier on peut linterroger par SQL. La grande
diffrence est quune vue est le rsultat dune requte, avec la caractristique essentielle que ce rsultat
est rvalu chaque fois que lon accde la vue. En dautre termes une vue est dynamique : elle
donne une reprsentation fidle de la base au moment de lvaluation de la requte.

Une vue est essentiellement une requte laquelle on a donn un nom. La syntaxe de cration dune vue
est trs simple :

CREATE VIEW <nom-vue>
AS <requte>
[WITH CHECK OPTION]


Administration Oracle 58 / 69
E. MARCON V1.0
Enfin un des intrts des vues est de donner une reprsentation d normalise de la base, en
regroupant des informations par des jointures. Par exemple on peut crer une vue Casting donnant
explicitement les titres des films, leur anne et les noms et prnoms des acteurs.

CREATE VIEW Casting (film, annee, acteur, prenom) AS
SELECT titre, annee, nom, prenom
FROM Film f, Role r, Artiste a
WHERE f.idFilm = r.idFilm
AND r.idActeur = a.idArtiste

Remarque : on a donn explicitement des noms dattributs au lieu dutiliser les attributs de la clause
SELECT.
Maintenant, on peut utiliser les vues et les tables dans des requtes SQL.
Par exemple la requte Quels acteurs ont tourn un film en 1997 sexprime par :

SELECT acteur, prenom
FROM Casting
WHERE annee = 1997

10.11.2. MISE A JOUR DUNE VUE
Lide de modifier une vue peut sembler trange puisquune vue na pas de contenu. En fait il sagit bien
entendu de modifier la table qui sert de support la vue. Il existe de svres restrictions sur les droits
dinsrer ou de mettre - jour des tables travers les vues.

Un exemple suffit pour comprendre le problme. Imaginons que lon souhaite insrer une ligne dans la
vue Casting.

INSERT INTO CASTING (film, annee, acteur, prenom)
VALUES (Titanic, 1998, DiCaprio, Leonardo);

Cet ordre sadresse une vue issue de trois tables. Il ny a clairement pas assez dinformation pour
alimenter ces tables de manire cohrente, et linsertion nest pas possible (de mme que toute mise
jour). De telles vues sont dites non modifiables.

Les rgles dfinissant les vues modifiables sont trs strictes.
La vue doit tre base sur une seule table.
Toute colonne non rfrence dans la vue doit pouvoir tre mise NULL ou disposer dune valeur
par dfaut.
On ne peut pas mettre jour un attribut qui rsulte dun calcul ou dune opration.

On peut insrer dans une vue, sans tre en mesure de voir la ligne insre au travers de la vue par la
suite ! Afin dviter ce genre dincoherence, SQL2 propose loption WITH CHECK OPTION qui permet
de garantir que toute ligne insre dans la vue satisfait les critres de slection de la vue.

CREATE VIEW ParisCinemas
AS SELECT * FROM Cinema
WHERE ville = Paris
WITH CHECK OPTION


Enfin on dtruit une vue avec la syntaxe courante SQL :

DROP VIEW ParisCinemas


Administration Oracle 59 / 69
E. MARCON V1.0
1
1
1
1
1
1
.
.
.
C
C
C
O
O
O
M
M
M
P
P
P
L
L
L
E
E
E
M
M
M
E
E
E
N
N
N
T
T
T
P
P
P
L
L
L
/
/
/
S
S
S
Q
Q
Q
L
L
L

1
1
11
1
1.
.
. 1
1
1.
.
. I
I
I N
N
NT
T
TR
R
RO
O
OD
D
DU
U
UC
C
CT
T
TI
I
I O
O
ON
N
N
PL/SQL : Langage de programmation
- utilisant les commandes SQL
- disposant d'un ensemble de fonctionnalits supplmentaires (programmation structure)
Dclarations
variables
variables initialises
constantes
Saisie au clavier par &valeur
Structures algorithmiques (itrations, alternatives)
1
11
1
11
.
..
2
22
.
..


S
SS
T
TT
R
RR
U
UU
C
CC
T
TT
U
UU
R
RR
E
EE
D
DD
'
''
U
UU
N
NN


B
BB
L
LL
O
OO
C
CC
P
PP
L
LL
/
//
S
SS
Q
QQ
L
LL

5.2.1 Schma d'un script intgrant un bloc PL/SQL
- - bloc de commandes SQL
______;
______;
- - fin commandes SQL
- - Bloc PL/SQL
DECLARE
- - dclaration de variables et de curseurs
______;
______;
BEGIN
bloc d'instructions
______ ;
______ ;
[EXCEPTION
traitement des erreurs ]
END;
- - fin du bloc pl/sql
/ - - excution du bloc PL/SQL ; sans espace en dbut de ligne

- - autres commandes SQL pour sortir les rsultats
Remarque : on peut crer une table temporaire en SQL, on l'utilise en PL/SQL pour y stocker des
rsultats, puis en SQL, nouveau, on affiche les rsultats et on dtruit la table temporaire.
Exemple :
-- nombre d'artistes ns aprs une anne donne en paramtre

Administration Oracle 60 / 69
E. MARCON V1.0
CREATE TABLE temp
(nombre NUMBER(3));
DECLARE
ANNEE NUMBER(4);
Xnombre NUMBER(3);
BEGIN
ANNEE:=&annee_naissance;
SELECT COUNT(*) INTO Xnombre
FROM A_artiste
WHERE datns > ANNEE;
INSERT INTO temp VALUES(Xnombre);
COMMIT;
END;
/
SELECT * FROM temp;
1
1
11
1
1.
.
. 3
3
3.
.
. D
D
DE
E
ET
T
TA
A
AI
I
I L
L
LS
S
S D
D
DU
U
U S
S
SC
C
CR
R
RI
I
I P
P
PT
T
T P
P
PL
L
L/
/
/S
S
SQ
Q
QL
L
L
11.3.1. PARTIE DECLARATION :
11.3.1.1 Variables
DECLARE nom_variable TYPE;
cas particuliers de types :
nom_variable nom_table.nom_colonne%TYPE ; (variable de mme type que la colonne)
nom_variable nom_table%ROWTYPE ; (record avec les mmes champs que la table)
variable initialise
pays VARCHAR2(20):='FRANCE' ;
11.3.1.2 Constantes
DECLARE nom_constante CONSTANT TYPE;
pays CONSTANT VARCHAR2(20):='FRANCE' ;
La valeur de la constante ne peut pas tre modifie dans le bloc PlSql.
11.3.1.3 Curseurs
DECLARE CURSOR nom_curseur IS
SELECT nom_colonne(s)
FROM nom_table(s)
WHERE condition
[ORDER BY nom_colonne(s)];
11.3.2. CORPS DU BLOC :
Le corps d'un bloc PL/SQL est tout entier enferm entre BEGIN et END;
S'il est vide, le mot BEGIN est omis mais END; demeure.
[BEGIN ...] END;
Exemple
DECLARE
BEGIN
UPDATE test
SET chps1='test',chps2 = 1
WHERE idtest = 1;
COMMIT;
END;
/
PROMPT 'Aprs mise jour : ';
SELECT chps1||'-'||chps2
FROM test ;


Administration Oracle 61 / 69
E. MARCON V1.0
1
1
11
1
1.
.
. 4
4
4.
.
. S
S
ST
T
TR
R
RU
U
UC
C
CT
T
TU
U
UR
R
RE
E
ES
S
S A
A
AL
L
LG
G
GO
O
OR
R
RI
I
I T
T
TH
H
HM
M
MI
I
I Q
Q
QU
U
UE
E
ES
S
S
Boucle LOOP - END LOOP
LOOP
Bloc d'instructions avec
EXIT WHEN condition;
END LOOP;
Boucle FOR
FOR condition -- l'indice de boucle n'est pas dclar
LOOP
Bloc d'instructions;
END LOOP;
Boucle WHILE
WHILE condition
LOOP
Bloc d'instructions;
END LOOP;
Alternatives/conditionnelles
IF condition
THEN Bloc_Instructions
[ELSE
Bloc_Instructions]
END IF;
Alternatives embotes
IF condition
THEN Bloc_Instructions
ELSIF condition
THEN Bloc_Instructions
ELSE Bloc_Instructions
END IF;
Action nulle
NULL ;
Squence
GOTO nom ;
Bloc_Instructions ;
----------
----------
<<nom>>
Bloc_Instructions ;




1
1
11
1
1.
.
. 5
5
5.
.
. S
S
SA
A
AI
I
I S
S
SI
I
I E
E
E D
D
DE
E
E D
D
DO
O
ON
N
NN
N
NE
E
EE
E
ES
S
S A
A
AU
U
U C
C
CL
L
LA
A
AV
V
VI
I
IE
E
ER
R
R
&nom : saisie d'un mot au clavier ; un mot est un nombre ou une chane de caractres alphanumriques
(ventuellement entre apostrophes)
Oracle substitura la suite des caractres saisis &nom.
'&nom' ou '%&nom%' : permettront de ne saisir que les caractres indispensables.

Pour marquer le fin du paramtre de saisie, on peut mettre un point.
SELECT prnom, nom, telephone
FROM CLIENT
WHERE nom LIKE '%M&chaine.ET%';

Administration Oracle 62 / 69
E. MARCON V1.0
1
1
11
1
1.
.
. 6
6
6.
.
. A
A
AF
F
FF
F
FI
I
I C
C
CH
H
HA
A
AG
G
GE
E
ES
S
S D
D
DE
E
E R
R
RE
E
ES
S
SU
U
UL
L
LT
T
TA
A
AT
T
TS
S
S
On utilise le package (ensemble de procdures et fonctions) DBMS_OUTPUT.
Tout d'abord utiliser l'instruction :
set serveroutput on;
Puis pour chaque affichage :
dbms_output.put_line('texte'||X);
Nous remarquons la concatnation de chanes de caractres avec : ||

1
1
11
1
1.
.
. 7
7
7.
.
. L
L
LE
E
ES
S
S C
C
CU
U
UR
R
RS
S
SE
E
EU
U
UR
R
RS
S
S
Les curseurs sont des zones tampon utiliss pour tout SELECT multi ligne.
A chaque ordre SELECT on associe un curseur nomm et on y fait rfrence dans la suite du programme
pour traiter les lignes les unes aprs les autres jusqu' la fin de la table.
On peut utiliser des types de variables prdfinis et des attributs de curseur prdfinis pour faciliter le
codage :
Types de variables prdfinis utiles
type prdfini Signification Exemple
%ROWTYPE
le type
enregistrement
d'une table
DECLARE ligne fournisseur%ROWTYPE
(fournisseur est un nom de table...)
%TYPE
le type d'une
colonne
DECLARE v_nom nom_fournisseur%TYPE
(nom_fournisseur est une colonne de la table
fournisseur...)
Attributs de curseurs prdfinis utiles
Attribut TYPE Signification
SQL%NOTFOUND boolen renvoie TRUE lorsque l'ordre SQL prcdent n'a affect aucune ligne.
SQL%ROWCOUNT entier renvoie le nombre de lignes traites par l'ordre SQL prcdent.
SQL%FOUND boolen
ngation logique de SQL%NOTFOUND, donc vrai ds qu'une ligne a
t affecte par l'ordre SQL.
SQL%ISOPEN boolen vrai si curseur ouvert
Les diffrentes tapes ncessaires sont les suivantes :
- dclaration, o l'on associe, dans la zone de dclaration un curseur avec un ordre SQL (CURSOR
nom_curseur IS ordre_select)
- ouverture du curseur, o l'on analyse l'ordre et l'on identifie les lignes candidates (OPEN nom_curseur )
- rapatriement des valeurs dans les variables de rception ( FETCH nom_curseur INTO liste_variables )
- fermeture du curseur, ( CLOSE nom_curseur )
Exemple :
SQL>
DECLARE
nom_fournisseur fournisseur.nom%TYPE;
ca_fournisseur fournisseur.ca%TYPE;
CURSOR C1 IS SELECT nom,ca FROM fournisseur;
BEGIN
OPEN C1;
LOOP
FETCH C1 INTO nom_fournisseur, ca_fournisseur;
EXIT WHEN C1%NOTFOUND;
dbms_output.put_line( nom_fournisseur||' '||ca_fournisseur);

Administration Oracle 63 / 69
E. MARCON V1.0
END LOOP;
CLOSE C1;
END;
.
SQL> SET SERVEROUTPUT ON
SQL> R
DiDier 1000
Daredevil 2000

Procedure PL/SQL terminee avec succes.
SQL>




Administration Oracle 64 / 69
E. MARCON V1.0
1
1
1
2
2
2
.
.
.
G
G
G
L
L
L
O
O
O
S
S
S
S
S
S
A
A
A
I
I
I
R
R
R
E
E
E


administrateur de base de donnes (DBA) : utilisateur privilgi en charge de concevoir et de faire
voluer les schmas externes, le schma conceptuel et le schma physique d'une base de donnes.
C'est lui qui utilise un langage de dfinition de donnes.
agrgat : fonction dfinie en SQL qui permet de calculer un rsultat atomique (un entier ou un rel)
partir d'un ensemble de valeurs. Les agrgats sont au nombre de 5 : COUNT, SUM, MIN, MAX, AVG.
algbre relationnelle : modle formel permettant d'exprimer et de calculer les requtes sur les relations.
Ce modle est quivalent aux langages d'interrogation prdicatifs. L'algbre relationnelle est constitue
d'un ensemble d'oprateurs algbriques. Les plus utiliss sont la slection, la jointure, la projection et les
oprateurs ensemblistes. Le rsultat de l'excution d'un oprateur est toujours une relation, ce qui permet
la composition. L'algbre relationnelle est utilise galement pour l'optimisation de requtes. Une requte
algbrique peut se prsenter sous forme d'un arbre algbrique.
arbre algbrique : visualisation d'une requte sous une forme graphique d'arbre plus facile lire qu'une
forme linaire. Se prte bien galement l'optimisation de requtes.
architecture ANSI/SPARC : architecture de rfrence d'un SGBD. Elle est constitue de 3 niveaux : le
niveau externe (proche des utilisateurs) constitu des schmas externes, le niveau conceptuel (celui du
milieu) constitu du schma conceptuel et le niveau physique (celui des disques) constitu du schma
physique.
attribut : c'est un des concepts du modle relationnel. Un attribut dsigne un domaine par un nom qui
identifie le rle jou par l'attribut dans la relation.
base de donnes : c'est une collection d'informations structures. Cette structure est dfinie par un
schma (appel aussi intention) dcrit selon un modle de donnes. Les donnes respectent le schma
et sont appeles aussi extension.
base de donnes rpartie : c'est une base de donnes dont l'extension est rpartie sur diffrents sites et
l'intension est duplique sur tous ces sites. Une base de donnes rpartie est supporte par un SGBD
rparti.
benchmarks : ils permettent de mesurer les performances d'un SGBD sur une machine donne. Les plus
utilises sont les TPC/A, TPC/B, TPC/C et TPC/D. Ils sont censs valuer l'efficacit transactionnelle.
cl : un des concepts du modle relationnel. Une cl est compose d'un ou plusieurs attributs d'un
schma de relation dont la valeur permet de dsigner au plus un tuple de l'extension de la relation.
cl trangre : c'est un concept du modle relationnel. Une cl trangre est constitue d'un ou plusieurs
attributs d'un schma de relation qui sont la cl d'un autre schma de relation. Cela permet de reprsenter
une notion de pointeur symbolique entre deux tuples. Une contrainte d'intgrit rfrentielle doit tre
associe chaque cl trangre.
contraintes d'intgrit : il s'agit d'une proprit du schma qui permet de restreindre l'ensemble des
valeurs prises par l'extension de la base de donnes aux valeurs du monde rel. Un petit nombre de
contraintes d'intgrit peuvent tre codes directement par un SGBD relationnel, la plupart doivent tre
codes dans les programmes d'applications, par exemple crit en embedded SQL.
contraintes d'intgrit rfrentielle : cas particulier de contraintes d'intgrit lie la notion de cl
trangre. Cette contrainte interdit d'ajouter ou de supprimer des tuples si cela conduit avoir des cls
trangres qui dsignent des tuples inexistants.

Administration Oracle 65 / 69
E. MARCON V1.0
contrle de concurrence : c'est un mcanisme d'un SGBD qui permet de supporter l'accs simultan
la mme donne sans risque de corrompre la base de donnes (perte d'informations par exemple). Ceci
est directement li la notion de transaction. La plupart du temps dans les systmes commerciaux, le
contrle de concurrence est assur par des mcanismes de verrouillage des donnes de type protocole
de verrouillage deux phases.
datawarehouse et datamining : ces deux termes dsignent des outils d'infocentre. Un datawarehouse
(ou entrept de donnes) est une base de donnes construite par agrgation de plusieurs autres bases
de donnes (toutes celles de l'entreprise plus ventuellement d'autres). Ce processus d'agrgation est
trs complexe et utilise de nombreux outils (de fusion, de qualit, ...). La plupart du temps ce
datawarehouse est construit dans un but dcisionnel, c'est dire que les applications qui l'exploitent sont
des systmes d'aide la dcision. Ces systmes ncessitent des architectures matrielles et logicielles
complexes pour avoir un niveau de performances correct. Au niveau logiciel on trouve les SGBD
multidimensionnels et au niveau matriel des machines parallles. Les outils de datamining (ou fouille de
donnes) font partie des outils d'aide la dcision. Il s'agit d'extraire/apprendre des informations partir
des donnes stockes dans la base de donnes. On trouve dans cette catgorie des outils venant de
l'analyse de donnes mais aussi des travaux sur l'apprentissage symbolique en intelligence articifielle.
dcomposition (algorithme de) : c'est un algorithme qui permet de transformer un schma relationnel
qui n'est pas en 3me forme normale en un schma en 3me forme normale. Le principe est celui de
dcomposition binaire d'une relation selon une dpendance fonctionnelle. Au bout d'un nombre fini de
dcompositions binaires, on obtient un schma en 3me forme normale.
dpendances fonctionnelles : proprit d'un schma relationnel qui exprime le fait que la valeur d'un
attribut (ou d'un ensemble d'attributs) est dtermine par la valeur d'un autre attribut (ou ensemble
d'attributs). Les dpendances fonctionnelles sont la base de l'algorithme de dcomposition ainsi que de
la dfinition des formes normales.
dictionnaire de donnes (ou mta-base) : un schma relationnel peut tre considr comme de
l'information structure et rien n'interdit de dfinir une base de donnes dcrivant un ensemble de
schmas relationnels. Cette base est appele dictionnaire de donnes ou mta-base. Elle peut tre
manipule l'aide d'un langage de manipulation de donnes comme l'algbre relationnelle ou SQL.
domaine : un des concepts du modle relationnel. Un domaine est un ensemble de valeurs dfini de
manire intentionnelle ou extensionnelle. Le rle que joue un domaine dans une relation est identifi par
l'attribut. Dans les systmes commerciaux, la notion de domaine est moins riche, puisque le concepteur
d'un schma relationnel ne peut dfinir ses propres domaines (il doit utiliser des domaines prdfinis).
droits d'accs : une base de donnes est accessibles par un ensemble d'utilisateurs. Ceci pose des
problmes de contrle de concurrence mais aussi de confidentialit. En effet, il ne faut pas que tous les
utilisateurs puissent voir toutes les informations de la base de donnes. Ceci peut se traiter par deux
mcanismes. Tout d'abord l'attribution de droits sur les relations ainsi que par la dfinition de vues
permettant de masquer certaines informations. Il existe diffrents droits sur une relation correspondant
aux diffrentes oprations possibles dans le langage de manipulation de donnes (insertion, interrogation,
...). La dfinition de droits d'accs fait partie du langage de dfinition de donnes et est faite par
l'administrateur de la base de donnes.
embedded SQL (sql immerg) : partie de la norme SQL concernant le couplage de SQL avec un
langage de programmation classique (C, Pascal, Cobol, Fortran, ...). Il s'agit d'une interface de
programmation d'assez haut niveau (par opposition OBDC qui est une interface d'assez bas niveau). Ce
couplage se fait par prcompilation d'un code source compos d'instructions du langage de
programmation (par exemple C) et d'ordres SQL. Le rsultat de la prcompilation est un code C contenant
des appels une librairie C de fonctions d'accs au SGBD. Il suffit ensuite d'utiliser le compilateur C et
l'diteur de liens fournis avec le systme d'exploitation. Dans le systme Oracle, le nom du produit
correspondant est Pro*C.

Administration Oracle 66 / 69
E. MARCON V1.0
extension : ensemble d'informations dont la structure est dfinie dans une intention. On parle d'extension
d'une relation (il s'agit alors d'un ensemble de tuples), ou d'extension d'un schma relationnel (il s'agit
alors de l'ensemble des extensions des relations composant le schma).
formes normales : expression de la qualit d'un schma relationnel. La qualit value est la non-
redondance d'informations du schma. La dfinition des formes normales 1 3 est base sur l'tude des
dpendances fonctionnelles. Si on veut aller plus loin il faut traiter d'autres dpendances comme les
dpendances multivalues. Il ne s'agit pas d'un ordre total mais d'un ordre partiel. Un schma de bonne
qualit est en 3me forme normale.
GROUP BY : oprateur de SQL permettant de structurer une relation en un ensemble de sous-relations
(appeles partitions). On parle galement de partitionnement. Il faut noter que cet oprateur n'a pas
d'quivalent en algbre relationnelle puisque le rsultat n'est pas une relation.
index : il s'agit d'un lment du schma physique. Un index est une structure de donnes permettant
d'accder de manire efficace un tuple en connaissant la valeur d'un de ses attributs (ou ensemble
d'attributs). Les oprations qui sont rendues plus efficaces sont la slection ou la jointure. Dans les
systmes commerciaux le type d'index le plus utilis est l'arbre B+. Attention, un index amliore les
performances d'accs en interrogation mais pnalise les mises jour et prend de la place sur le disque.
intention : dfinition de la structure d'une base de donnes. Intension s'oppose normalement extension.
JDBC (interface Java vers SGBD relationnels) : interface de programmation permettant d'adresser des
requtes n'importe quel SGBD depuis le langage Java ainsi que de rcuprer le rsultat. Attention,
JDBC n'utilise pas forcment ODBC comme support sous-jacent.
jointure : opration de l'algbre relationnelle. Elle permet de construire une relation partir de deux
autres en fusionnant chaque tuple de la premire relation avec tous les tuples de la seconde relation qui
respectent une condition appele condition de jointure.
langages d'interrogation prdicatifs : ce sont des modles formels de requtes sur des relations. Ce
modle est quivalent l'algbre relationnelle. Les quantificateurs de SQL ainsi que le langage QBE
(Query By Example) sont inspirs des langages prdicatifs.
LDD - DDL (langage de description de donnes) : langage permettant de dfinir et modifier la partie
intention d'une base de donnes, ainsi que les utilisateurs et leurs droits d'accs. Ce langage est
principalement utilis par l'administrateur de la base de donnes.
LMD - DML (langage de manipulation de donnes) : langage permettant de manipuler la partie
extension d'une base de donnes. Par manipulation on entend l'interrogation, la suppression, l'ajout et la
mise jour d'informations.
mta-base : voir dictionnaire de donnes
modle de donnes : ensemble de rgles permettant de crer un schma de donnes. les modles les
plus connus sont le modle relationnel, le modle Entit-Association.
modle Entit-Association : il s'agit d'un modle utilis au niveau conceptuel. C'est un modle
intermdiaire entre l'application qui est non formalise et le modle relationnel qui est un modle
informatique. Le modle Entit-Association est simple ce qui en fait un outil de dialogue entre
informaticiens et utilisateurs.
modle relationnel : c'est un modle de donnes dfini par Codd en 1970. Il forme la base de la
technologie relationnelle qui s'est impose aujourd'hui. Les concepts de base du modle relationnel sont
la relation et le domaine. La partie manipulation du modle relationnel est l'algbre relationnelle.
normalisation : processus permettant de passer d'un schma relationnel qui n'est pas en 3me forme
normale un schma en 3me forme normale. Ce processus est mis en oeuvre l'aide de l'algorithme de

Administration Oracle 67 / 69
E. MARCON V1.0
dcomposition ou de l'algorithme de synthse. Ces algorithmes reposent sur la notion de dpendances
fonctionnelles.
oprateurs ensemblistes : ce sont les oprateurs ensemblistes classiques (union, intersection,
diffrence) qui sont dfinis dans l'algbre relationnelle et dans SQL.
optimisation de requtes : c'est l'opration qui permet de construire le programme d'accs le plus
efficace partir d'une expression SQL en entre. Un programme d'accs peut se voir comme un arbre
algbrique. L'optimisation se passe en plusieurs tapes, la premire utilise les proprits de l'algbre
relationnelle et la seconde la connaissance du schma physique de la base de donnes (en autre les
index).
Oracle : il s'agit du SGBD le plus vendu au monde (environ 25% du march mondial) et c'est celui que
nous utilisons l'INT. En plus du noyau de SGBD proprement dit qui assure les fonctions de base
(support de SQL, contrle de concurrence, ...), Oracle est compos de nombreux outils comme Sql*Plus
un interprte SQL, Pro*C l'interface embedded SQL pour le langage C, un langage de programmation
pour les procdures stockes appel PL/SQL, etc. Il existe galement une version rpartie, Oracle rparti.
Oracle rparti : c'est le SGBD rparti d'Oracle.
ODBC (Open DataBase Connectivity) : interface de programmation d'assez bas niveau permettant de
transmettre des requtes SQL un SGBD et de rcuprer les rsultats. Cette interface est surtout
prsente dans le monde Windows.
partitionnement : voir GROUP BY.
PL/SQL d'Oracle : langage propritaire d'Oracle d'criture des procdures stockes et de la partie action
des triggers. Il s'agit d'une extension au langage de programmation Ada qui inclut les ordres SQL.
Pro*C d'Oracle : version d'Oracle de embedded SQL pour le langage C.
procdure stocke : tous les SGBD permettent de dfinir, stocker et excuter des programmes (appels
procdures stockes) manipulant leurs bases de donnes. Cela permet une plus grande efficacit et le
partage de programmes entre diffrentes applications. La version Oracle s'appelle PL/SQL. Sybase et
SQLSERVER de Microsoft utilisent un langage appel Transact/SQL.
projection : opration de l'algbre relationnelle permettant de ne garder que certains attributs d'une
relation. Correspond peu prs la clause SELECT de SQL.
protocole de validation deux phases (two phase commit, 2PC) : il s'agit du protocole permettant la
validation des transactions rparties. Il synchronise les transactions locales pour les faire valider (ou
abandonner) toutes ensemble pour assurer la proprit d'atomicit. Un SGBD rparti implante ce
protocole.
protocle de verrouillage deux phases (two phase locking, 2PL) : il s'agit du protocole utilis dans les
SGBD pour assurer le contrle de concurrence par verrouillage.
quantificateurs (ANY, ALL, EXISTS) : les quantificateurs se trouvent dans les langages prdicatifs et en
SQL. Il s'agit des quantificateurs classiques (quelque soit et il existe).
relation (ou table) : un des concepts du modle relationnel. Une relation est dfinie par un schma de
relation ou intention. Une cl doit tre associe chaque schma de relation. Le contenu ou extension
d'une relation est un ensemble de tuples. Attention dans les systmes commerciaux, une relation n'est
pas forcment un ensemble (on peut avoir plusieurs fois le mme tuple).
restriction : voir slection.
requte : expression d'un langage de dfinition de donnes ou d'un langage de manipulation de donnes.

Administration Oracle 68 / 69
E. MARCON V1.0
reprise aprs panne : mcanisme offert par un SGBD pour supporter la proprit d'atomicit (tout ou
rien) d'une transaction. La reprise va souvent de paire avec le contrle de concurrence.
rtro-conception d'un schma relationnel : on peut obtenir un schma Entit - Association par rtro-
conception d'un schma relationnel. Ce processus n'a pas de solution unique.
schma conceptuel : correspond au niveau intermdiaire dans l'architecture ANSI/SPARC. Il s'exprime
avec le modle Entit-Association dans la phase de conception puis avec un modle informatique de haut
niveau comme le modle relationnel.
schma de relation : voir intention.
schma entit-association : schma conceptuel exprim avec le modle Entit-Association. On peut
transformer un schma Entit - Association en un schma relationnel quivalent.
schma externe : un des schmas dfinis dans l'architecture ANSI/SPARC. Il correspond au niveau le
plus proche des utilisateurs. Dans les SGBD relationnels il s'exprime par des vues.
schma physique : un des schmas dfinis dans l'architecture ANSI/SPARC. Il correspond au niveau le
plus proche des disques. Il comprend entre autre la dfinition des index.
schma relationnel : il s'agit d'un schma conceptuel exprim avec le modle relationnel. Il est constitu
d'un ensemble de schma de relation. La rtro-conception d'un schma relationnel permet d'obtenir un
schma Entit - Association.
slection (ou restriction) : opration de l'algbre relationnelle qui permet de ne garder que certains
tuples d'une relation (ceux respectant une certaine condition).
SGBD (Systme de Gestion de Bases de Donnes) : logiciel supportant la dfinition de bases de
donnes, leur exploitation efficace, la dfinition d'utilisateurs, le tout dans un contexte multi-utilisateurs.
Nous en sommes la troisime gnration de SGBD, les SGBD relationnels. Ils sont appels ainsi car ils
supportent des bases de donnes dcrites selon le modle relationnel. Ils supportent galement le
langage SQL. Un SGBD est administr par un administrateur de base de donnes.
Des exemples de SGBD sont Oracle, DB2 IBM, Sqlserver, Sybase, Informix.
Depuis la fin des annes 1980, il existe galement des SGBD objets.
SGBD objet : c'est un SGBD implantant un modle de donnes objet et offrant un langage de requtes
qui est le plus souvent une extension de SQL. Le SGBD O2 est un exemple de SGBD objet. Les SGBD
objets sont normaliss par un organisme qui s'appelle l'ODMG.
SGBD rparti : c'est un SGBD grant une base de donnes rpartie. Les fonctionnalits aditionnelles
d'un SGBD rparti sont l'accs des donnes distantes ainsi que l'excution de transactions rparties au
moyen du protocole de validation deux phases. Oracle rparti est un exemple de SGBD rparti.
SQL (Structured Query Language) : langage normalis par l'ISO incluant la fois un langage de
dfinition de donnes et un langage de manipulation de donnes. SQL est li au modle relationnel. Tous
les SGBD supportent SQL mais le plus souvent ils tendent le langage. La version actuelle de la norme
est la V2, une V3 est en prparation mais semble assez monstrueuse (le draft s'approche des 1000
pages!). SQL peut tre vu comme un habillage syntaxique de l'algbre relationnelle avec quelques
lments emprunts aux langages prdicatifs (les quantificateurs) et quelques extensions (agrgats et
GROUP BY).
SqlPlus d'Oracle : interprte SQL d'Oracle. Il prend en entre une expression SQL, la soumet Oracle et
affiche les rsultats sur la sortie standard. Il supporte quelques fonctions de personnalisation de
l'affichage ainsi que de gestion de fichiers (sauvegarde d'une expression SQL dans un fichier, ...).
table : voir relation

Administration Oracle 69 / 69
E. MARCON V1.0
transaction : programme accdant une base de donnes pour y faire de l'interrogation et/ou de la mise
jour. Une transaction doit supporter les proprits ACID (Atomicity, Consistency, Isolation and
Durability). La reprise sur panne et le contrle de concurrence sont dfinis dans le contexte de
transactions.
transformation d'un schma Entit - Association vers un schma relationnel : un schma Entit -
Association peut se transformer de manire systmatique vers un schma relationnel quivalent. Cette
transformation est d'ailleurs prsente dans de nombreux logiciels de type AGL (Atelier de Gnie Logiciel).
trigger : permet la programmation vnementielle dans un contexte de base de donnes. On peut
associer l'excution d'une action (la plupart du temps une procdure stocke) un vnement survenant
dans la base de donnes (insertion, suppression ou modification d'un tuple). Permet de programmer par
exemple la vrification de contraintes d'intgrit ou de la gestion de replica dans le cadre de base de
donnes rparties.
tuple (nuplet) : l'extension d'une relation est constitue de tuples. Un tuple est une ligne structure
comme une squence de valeurs d'attributs.
vue relationnelle : mcanisme permettant le support de schma externe dans le modle relationnel. Une
vue est une relation virtuelle qui est calcule chaque fois que l'on cherche y accder. Une vue est
dfinie par une requte d'interrogation en SQL. En interrogation une vue se manipule comme une relation,
par contre la mise jour d'une vue est impossible sauf cas trs particulier (la requte d'interrogation
dfinissant la vue est mono-relation).

You might also like