Documente Academic
Documente Profesional
Documente Cultură
ADMINISTRATION DU
SYSTÈME ORACLE 10G
M. NEMICHE (IGE Semestre 5 Faculté Polydiscilinaire de Ouarzazate)
COMPOSITION DU MODULE
2
Matières
1 : Architecture et Installation Oracle
2 : Programmation sous oracle (PL/SQL)
3 : Les outils d'administration Oracle
1
23/11/2010
3 Architecture Oracle
Objectifs
1. Installation d’Oracle
2. Comprendre l'architecture d'un serveur de BD Oracle
3. Démarrage et arrêt d’une instance et d’une base de
données Oracle
4. Création d’une base de données opérationnelle
5. Gestion des fichiers d'une base de données Oracle
6. Gestion de la structure logique (tablespaces,
segments, extents et blocs)
2
23/11/2010
3
23/11/2010
Transactions
7
8
Transactions
Action atomique : entièrement ou pas du tout
Préservant la consistance de la BD
Comme si l'usager était isolé sur la BD : ses résultats
intermédiaires (état temporairement incohérent) sont
masqués aux autres transactions.
A effet durable sur la BD, une fois terminées comme
prévu
les effets d’une transaction globalement terminée ne peuvent pas
être détruits ultérieurement par une quelconque défaillance.
Modèle ACID de transactions
4
23/11/2010
Démarrer sauvegarde et
et arrêter de récupération
la Base
Comprendre
l' Architecture Concevoir
du Serveur et créer
Oracle une Base
L'Administrateur
de la Base
de Données Rassembler
Créer et
des Statistiques
Surveiller les
avec l'Audit
Utilisateurs
5
23/11/2010
Histoire d’Oracle
11
Histoire d’Oracle
12
6
23/11/2010
Histoire d’Oracle
13
Histoire d’Oracle
14
7
23/11/2010
Généralités
15
Généralités
16
8
23/11/2010
17
Généralités
18
9
23/11/2010
Généralités
19
Généralités
20
l'état du curseur
…
10
23/11/2010
Généralités
21
Généralités
22
11
23/11/2010
Généralités
23
24
12
23/11/2010
Généralités
25
26
13
23/11/2010
Généralités
27
28
14
23/11/2010
Architecture - Instance
29
30
15
23/11/2010
32
16
23/11/2010
Shared Pool
Elle est composée de deux structures; le library cache et le
dictionary cache. Sa taille est définie via le paramètre
SHARED_POOL_SIZE.
Le LC contient pour chaque requête récemment exécutée
trois informations:
- Son texte
- Sa compilation
- Son plan d’exécution
Lorsqu’une requête existe encore dans le LC, Oracle ne perd pas son
temps à la ré-exécuter.
Le DC stocke toutes les informations nécessaires à l’analyse
sémantique de la requête (table? Colonnes? Droits
d’accès?...)
17
23/11/2010
18
23/11/2010
Le JAVA Pool : Stocke les objets et applications Java les plus récemment
utilisés lorsque la machine virtuelle Java JVM optionnelle est utilisée.
Paramètre JAVA_POOL_SIZE.
Le Large Pool : Stocke des données lors de l’exécution d’opérations
volumineuses. Il est utilisé dans le cas d’une configuration serveur
partagé. Paramètre LARGE_POOL_SIZE.
Le Streams Pool : C’est le cache des données relatives à la queue de
messages utilisées par Oracle. Paramètre STREAMS_POOL_SIZE.
A noter que dans la SGA, il y a une petite zone mémoire appelée SGA
fixe. Elle inclut des infos sur l’état de la base, l’instance, les verrous…
Les vues V$SGA et V$SGA_DYNAMIC_COMPONENTS.
19
23/11/2010
Les processus d’arrière plan ont chacun un rôle bien précis dans le
fonctionnement de l’instance.
Maximisent les performances de l’instance.
Démarrent avec ou après (sur demande) le démarrage de l’instance.
Certains peuvent être exécutés en n exemplaires.
Architecture - Instance :
40
Processus en arrière plan
5 principaux processus sont lancés pour une instance donnée
DBWR (processus d'écriture des blocs de données)
LGWR (processus d'écriture du fichier de reprise)
CKPT : point de synchronisation
SMON (processus System Monitor)
PMON ( processus Process Monitor)
D'autres processus sont lancés suivant le type de serveur
serveur dédié/partagé
suivant le mode d'archivage
archivelog ou noarchivelog
...
20
23/11/2010
Architecture - Instance :
41
Processus en arrière plan
DBWR (Data Base WRiter)
Ecrit les blocs modifiés dans le cache de données sur les
disques.
DBWn se déclenchera lors des événements suivants :
Lorsque le nombre de bloc dirty atteint une certaine limite
Lorsqu'un processus sera à la recherche de blocs libres dans le
Database Buffer Cache, et qu'il ne sera pas en mesure d'en
trouver.
Lors de timeouts (environ toutes les 3 secondes par défaut)
Lors d'un checkpoint.
Architecture - Instance :
42
Processus en arrière plan
21
23/11/2010
Architecture - Instance :
43
Processus en arrière plan
LOGWR (LoG WRiter)
Ecrit dans les fichiers Redo Log le contenu du cache
Redo Log
Le processus LGWR transcrit les informations contenues dans
le REDO LOG Buffer vers les fichiers REDOLOG FILE quand :
une transaction s'est terminée avec un COMMIT (déclenche
uniquement le LGWR)
le REDO LOG Buffer est au 1/3 plein
il y a plus de 1Mo d'informations de log contenues dans le
buffer
Avant que DBWn n'écrive le contenu du Database Buffer Cache
dans les fichiers du disque dur
Architecture - Instance :
44
Processus en arrière plan
CKPT (CHECKPOINT)
Ce processus va servir à mettre à jour les en-têtes des fichiers de
données, et mettre à jour les fichiers CONTROL FILE afin de
spécifier que l'action de CHECKPOINT s'est bien déroulée (par
exemple lors d'un changement de groupe de REDO LOG FILES).
Lorsqu’un point de vérification est déclenché, le CKPT envoie un
message au DBWn pour qu’il écrive tous les blocs dirty sur les fichiers
de données.
Une fois le DBWn termine sa tâche, le CKPT écrit le SCN (System Change
Number ou de System Commit Number ) de la dernière transaction
confirmée dans les entêtes des fichiers de données ainsi que dans le
fichier de contrôle.
En cas de crash du système, le point de reprise est défini par ce SCN et
Oracle récupère à partir des fichiers de journalisation toutes les
transactions qui ont été confirmées après le SCN inscrit sur le fichier
de contrôle/entêtes de fichiers de données
22
23/11/2010
Architecture - Instance :
45
Processus en arrière plan
CKPT (CHECKPOINT)
Les événements qui déclenchent un point de vérification
(CKPT):
1. Lorsque le LGWR bascule d’un groupe à un autre. En fait le
LGWR ne prend pas le risque d’écraser des entrées Redo sans
écrire les blocs qui leurs correspondent dans les fichiers de
données.
2. A la fermeture de la base de données.
3. Lors de la mise en offline d’un tablespace.
Exemple
1. Insert…;
1 2 3 4 1 2. Update…;
2 Le DBW est déclenché !
5
3
4 3. Update…;
5 commit;
Un message est
DB Buffer Cache
envoyé au LGWR LOG Buffer 4. Insert…;
Check point (fermeture du tblsp) !
DBWn CKPT LGWR
5. Update…;
SCN 1 commit;
1 2 3 4 1 2 3 SCN 1
SCN 1
4 5
SCN 2
Data Files Control File LOG Files
23
23/11/2010
Architecture - Instance :
47
Processus en arrière plan
SMON (System MONITOR)
assure le monitoring (la surveillance) du système
Il se charge particulièrement de redémarrage après un arrêt brutal
Il se charge aussi de faire le ménage dans la mémoire : mémoire des
tris, regroupement des espaces libres des fichiers de données.
PMON (Process MONITOR)
Charger du nettoyage lors du plantage d’un e processus utilisateur
Si un incident survient (arrêt brutal du poste client)
PMON annule les transactions en cours (rollback)
Il supprime les verrous posés sur les tables et les lignes
Et libère les ressources utilisées
Architecture - Instance :
48
Processus en arrière plan
ARCHIVE (ARCn)
Ecriture du contenu des fichiers journaux dans les fichiers journaux
archivés.
Déclenché par le basculement dans les fichiers journaux d’un groupe à
un autre.
Activé si le serveur fonctionne en mode ARCHIVELOG.
Le paramètre LOG_ARCHIVE_MAX_PROCESSES spécifie le nombre
d’exemplaires d’ARCn
24
23/11/2010
Traitement d'une
requête SELECT
49
Traitement d'une
requête SELECT
50
25
23/11/2010
Traitement d'une
51
requête Update
1. Phase de parse : La même que pour une requête SELECT.
2. Phase d’exécution :
Le processus serveur charge dans le DB Buffer Cache les blocs de
données à modifier si elles n’y sont pas déjà et verrouille les lignes à
modifier.
Par la suite, une entrée Redo (Redo Entry) correspondant à la requête
(incluant entre autres l’image avant et après des données) stocké dans
le Redo Log Buffer.
Finalement les blocs de données sont modifiés dans le DB Buffer Cache,
ils seront écrits de manière différée sur le disque par le DBWn.
3. Phase de fetch : il n’y a pas d’opération fetch dans le cas d’une
requête DML, l’utilisateur reçoit
juste un message concernant le déroulement de l’opération.
Traitement des
Commit et rollback
52
26
23/11/2010
Architecture - BDD
53
BD Oracle : Rappel
54
27
23/11/2010
Fichiers de données
28
23/11/2010
Présentation du dictionnaire de
58
données
Le dictionnaire de données est un ensemble de
tables et de vues où est stockée l’information sur la
structure logique et physique de la BDD:
Les utilisateurs des bases de données
Noms et caractéristiques des objets stockés dans la
base de donnée
Contraintes d’intégrités
Ressources physiques allouées à la base
…
29
23/11/2010
Présentation du dictionnaire de
59
données
Le dictionnaire de données est créé à la création de la
BDD, mis à jour au fur et à mesure de la création
d’objets.
Présentation du dictionnaire de
60
données
Le dictionnaire de données possède deux
composants :
1. les tables de base
2. les vues du dictionnaire de données
30
23/11/2010
Présentation du dictionnaire de
61
données
1. Les tables de base sont les tables réelles d'Oracle qui
stockent les informations sur une base de données.
Ces tables sont créées avec le script sql.bsq. Ce script est stocké
dans le répertoire ORACLE_HOME\rdbms\admin. Les informations
stockées dans les tables de base sont lues et écrites par le serveur
Oracle. Ces informations sont rarement accédées directement par
les utilisateurs car ces informations sont normalisées et stockées sous
une forme encodée.
Les utilisateurs ou administrateurs de bases de données ne doivent
pas utiliser de commandes LMD, telles que INSERT, UPDATE et
DELETE, pour mettre à jour les tables de base directement, à
l'exception de la table de trace d'audit lorsque la fonctionnalité
d'audit est utilisée.
Présentation du dictionnaire de
62
données
2. Les vues du dictionnaire de données sont des vues
sur les tables de base.
Elles sont crées par le script catalog.sql.
Les vues du dictionnaire de données simplifient et
résument les informations contenues dans les tables de
base.
Les vues du dictionnaire stockent également ces
informations sous une forme que les utilisateurs de la
base de données peuvent lire facilement.
Ces vues permettent au DBA de gérer et
d’administrer la base de données.
31
23/11/2010
Présentation du dictionnaire de
63
données
Les utilisateurs n’ont pas accès à ce dictionnaire
éventuellement en le lecture à traves trois
catégories des vues:
1. USER_<vues> : Vues sur les objets créé par un
utilisateur
Par exemple, la vue USER_TABLES contient les informations
sur les tables appartenant à un utilisateur.
Présentation du dictionnaire de
64
données
2. ALL_<vues>: Vues sur les objets auxquels un
utilisateur a accés (pas nécessairement qu’il a créés(à
travers l’obtention publique ou explicite de rôles et de
privilèges)
32
23/11/2010
Présentation du dictionnaire de
65
données
Présentation du dictionnaire de
66
données
33
23/11/2010
34
23/11/2010
35
23/11/2010
Exemple
SQL> ALTER DATABASE
ADD LOGFILE GROUP 3
('c:\orant\database\logorcl3.ora') SIZE 1000K;
Exemple
36
23/11/2010
37
23/11/2010
38
23/11/2010
39
23/11/2010
40
23/11/2010
81
Fichiers de Contrôles
41
23/11/2010
Fichiers de Contrôles
83
Fichier binaire
Sert pour la base de données
lors du démarrage normal
A chaque fois qu'une instance monte une base de données, elle lit le
fichier de contrôle pour localiser emplacement des fichiers de
données et des fichiers de reprise
lors du démarrage après panne
Contient les informations nécessaires à la remise en état de la base
de données
pour le bon fonctionnement
doit être disponible quand une base de données est montée ou
ouverte
Si un fichier de contrôle devient indisponible => la base ne
fonctionne pas correctement
Fichiers de Contrôles
84
42
23/11/2010
Fichiers de Contrôles
85
Fichiers de Contrôles
86
43
23/11/2010
Multiplexage
87
du fichier de contrôle
Avec le init.ora (Fichiers de paramètres) :
Eteindre la base de données.
Fichiers de Contrôles
88
44
23/11/2010
Architecture - BDD
89
Autres fichiers
Fichiers de paramètres d’initialisation
Architecture - BDD
90
45
23/11/2010
Tablespace
93
46
23/11/2010
Tablespace
95
47
23/11/2010
Fichiers de données
96
Fichiers de données
97
48
23/11/2010
Exemples
98
Créer un tablespace
99
49
23/11/2010
Les Blocs
100
101
50
23/11/2010
103
51
23/11/2010
104
Les Blocs
105
52
23/11/2010
Blocs
107
53
23/11/2010
Extents
108
Exemple
109
54
23/11/2010
Segments
110
→ segments de données
→ segments d’index
→ segments d’annulation ou Rollback Segments
→ segments temporaires
Types de Segments
111
Table
ressource la plus courante pour stocker les données
données stockées sans ordre particulier
55
23/11/2010
Types de Segments
112
Index
Toutes les entrées d'un index sont stockées dans un
segment d'index
Si une table à 3 index, 3 segments d'index sont utilisés
Types de Segments
113
Undo segment
utilisé par une transaction
avant de changer les blocs de données ou d'index,
l'ancienne valeur est stockée dans le rollback segment
10g : possibilité de déléguer à Oracle leur gestion
Segment temporaire
pourgérer l’opération de tri omniprésente en SQL
permet d’implanter un algorithme de tri « out of core »
56
23/11/2010
Les Tablespaces
114
Le tablespace System:
Indispensable au fonctionnement de la base de donnée.
Il contient les informations du dictionnaire de données, les
définitions des procédures stockées, des packages … .
Ne devrait pas contenir de données utilisateurs
57
23/11/2010
117
58
23/11/2010
118
Avec
clause_storage
STORAGE(
[INITIAL valeur [K|M]]
[NEXT valeur [K|M]]
[MINEXTENTS valeur ]
[MAXENTENTS {valeur | UNLIMITED}]
[PCTINCREASE valeur ])
Clause_auto_extend
AUTOEXTEND {OFF | ON [NEXT valeur [K|M]]
[MAXSIZE UNLIMITED | valeur [K|M]]}
59
23/11/2010
60
23/11/2010
61
23/11/2010
Tablespaces temporaires
125
Tablespaces temporaires
Utilisé pour les opérations de tri
Ils ne peuvent pas contenir d’objets permanents
Exemple :
CREATE TEMPORARY TABLESPACE temp
TEMPFILE ‘/DISK2/temp01.dbf’ SIZE 500M
Extent management local uniform size 4M;
62
23/11/2010
Exemple 3
63
23/11/2010
Statut OFFLINE
129
64
23/11/2010
Lecture seule
130
65
23/11/2010
Exemple
DROP TABLESPACE data
INCLUDING CONTENTS AND DATAFILES
CASCADE CONSTRAINTS;
66
23/11/2010
V$tempfile
67
23/11/2010
Quelques conseils
136
68
23/11/2010
Objectifs
138
139
69
23/11/2010
140
141
70
23/11/2010
71
23/11/2010
72
23/11/2010
73
23/11/2010
74
23/11/2010
Fonctionnement de la commande
151
STARTUP
Ordre de priorités:
spfileSID.ora
SPFILE par défaut
initSID.ora
75
23/11/2010
OPEN
MOUNT
NOMOUNT
Instance
démarrée.
SHUTDOWN
76
23/11/2010
OPEN
MOUNT
Fichier de
Contrôle ouvert
pour cette
NOMOUNT instance.
Instance
démarrée.
SHUTDOWN
77
23/11/2010
OPEN
Tous les fichiers
ouverts, définis dans
le fichier de contrôle,
MOUNT pour cette instance.
Fichier de
Contrôle ouvert
pour cette
NOMOUNT instance.
Instance
démarrée.
SHUTDOWN
78
23/11/2010
La commande STARTUP
158
La commande STARTUP
159
Dépannage:
Si vous rencontrez des erreurs à l’exécution de la
commande startup. Vous devez d’abort lancer la
commande shutdown AVANT d’exécuter LA COMMANDE
STARTUP
Remarque:
Startup et Shutdown son des commande de
SQL*PLUS et non SQL
79
23/11/2010
80
23/11/2010
81
23/11/2010
Mode d’arrêt:
ABORT (A)
IMMEDIATE (I)
TRANSACTIONAL (T)
NORMAL (N) (mode par défaut)
Mode d’arrêt A I T N
82
23/11/2010
83
23/11/2010
84
23/11/2010
85
23/11/2010
86
23/11/2010
87
23/11/2010
Tables
177
88
23/11/2010
Tables
178
Syntaxe
Tables
179
89
23/11/2010
Tables
180
Tables
181
Attention
Pour accéder à une table d'un autre utilisateur, il faut
précéder le nom de la table par le nom du propriétaire
Ex: SCOTT.EMP
La création d'une table fait appel à un ordre du LDD
⇒sa validation est automatique
L'option DEFAULT
Permet de définir la valeur par défaut
Ex:
– DATE_PRET DATE DEFAULT SYSDATE
– DEPARTEMENT VARCHAR2(25) DEFAULT 'Commercial'
90
23/11/2010
91
23/11/2010
92
23/11/2010
93
23/11/2010
94
23/11/2010
95
23/11/2010
L'ordre RENAME
Permet de modifier le nom d'une table, d'une vue, d'une
séquence, et d'un synonyme
Syntaxe
SQL> RENAME nom_objet TO nouveau_Nom;
Ou
SQL> ALTER TABLE nom_table RENAME
TO nouveau_Nom;
Vous devez être propriétaire de l'objet
96
23/11/2010
97
23/11/2010
Tables
196
L'ordre COMMENT ON
Permet d'ajouter des commentaire à une table
Syntaxe
SQL> COMMENT ON [TABLE nom_table| COLUMN
nom_table.nom_colonne]IS 'commentaire';
Tables
197
L'ordre COMMENT ON
98
23/11/2010
Tables
198
L'ordre COMMENT ON
Pour afficher les commentaire, on peut utiliser
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS
Tables
199
Intégrité de données
Garantit que les données d’une base respectent
certaines règles
pour empêcher l’utilisateur d’entrer des données invalides
dans la base
Empêchent la suppression d'une table lorsqu'il existe
des dépendances
99
23/11/2010
Tables
200
Tables
201
NOT NULL Spécifie que cette colonne ne doit pas contenir une
valeur NULL
UNIQUE Spécifie une colonne (ou une combinaison de colonnes)
dont les valeurs doivent être uniques
100
23/11/2010
Tables
202
Tables
203
101
23/11/2010
Tables
204
Tables
205
102
23/11/2010
Tables
206
Tables
207
103
23/11/2010
Tables
208
Tables
209
104
23/11/2010
Tables
210
Tables
211
105
23/11/2010
Tables
212
Désactivation de contraintes
ALTER TABLE Emp
DISABLE CONSTRAINT pk_emp CASCADE;
Tables
213
Activation de contraintes
ALTER TABLE Emp
ENABLE CONSTRAINT pk_emp;
106
23/11/2010
Tables
214
Tables
215
107
23/11/2010
Données
216
Données
217
108
23/11/2010
Données
218
Données
219
109
23/11/2010
Données
220
Données
221
110
23/11/2010
Données
222
Vues
223
111
23/11/2010
Vues
224
Vues
225
112
23/11/2010
Vues
226
Vues
227
113
23/11/2010
Vues
228
Vues
229
114
23/11/2010
Vues
230
Vues
231
115
23/11/2010
Séquences
232
Séquences
233
116
23/11/2010
Séquences
234
Séquences
235
117
23/11/2010
Séquences
236
Séquences
237
118
23/11/2010
Séquences
238
Séquences
239
119
23/11/2010
Séquences
240
Synonymes
241
120
23/11/2010
Synonymes
242
Synonymes
243
121
23/11/2010
Index
244
Index
245
122
23/11/2010
Index
246
Index
247
Exemple :
SQL> CREATE INDEX emp_ename_idx
ON emp(ename);
123
23/11/2010
Index
248
Exemple :
SQL> CREATE INDEX emp_ename_idx
ON emp(ename);
Index
249
Supprimer un index
Iln’est pas possible de modifier un index, il faut le
supprimer ou recréer.
DROP INDEX nomindex;
124