0
0
0
➢Architecture Oracle
➢Sqlplus
➢PL/SQL
➢Administrer les structures de stockage de base de données
➢Administrer les utilisateurs
➢Sauvegarde / Restauration de base de données
➢Déplacement de données
Administration des bases de données
sur Oracle 11g
➢ Architecture mémoire
➢ Architecture fichiers
➢ Architecture processus
➢ Structure logique de la base de donnée
➢ Fonctionnement
Architecture Mémoire
Architecture de base de données Oracle
Un serveur Oracle :
Instance
Zone de mémoire Mémoire SGA
partagée
Structures mémoire
Cache
Cache Tampon de
de tampons
"library" journalisation
de la base
Cache du de données
dictionnaire Zone de mémoire
Zone de
de données mémoire Java LARGE POOL
Structures de processus
PMON SMON DBWR LGWR CKPT Autres
d'arrière-plan
Mémoire SGA
Streams
Java Pool Large Pool
Pool
La mémoire SGA
Zone de mémoire
partagée
Cache
"library"
Cache du
dictionnaire
de données
SGA DB Buffer Cache
❑ Lorsqu’une requête est exécutée, Oracle vérifie d’abord si les blocs de données
à ramener ne soient pas déjà chargés dans le DB buffer.
❑ Si les blocs à renvoyer n’existent pas dans le DB buffer cache, Oracle les
charge à partir des fichiers de donnée les y stocke (et libère d’autres blocs s’il
le faut).
❑ La taille du DB Buffer Cache est définie via le paramètre DB_CACHE_SIZE
Cache
de tampons
de la base
de données
SGA Redo Log Buffer
Tampon de
journalisation
Mémoire SGA
SGA
Dictionary
PGA Cache
Library
SGA Cache
PGA
DB Buffer Shared Redo Log
Cache Pool Buffer
PGA
Processus 1 Processus 2 Processus 3 Processus ...
Streams
Java Pool Large Pool
Pool
SERVEUR BD = INSTANCE =
ZONES MÉMOIRES =
Instance Zones mémoires
+ + 3 + 3
BD (fichiers) Processus
Mémoire PGA
➢Nom de la base,
➢Noms et chemins des fichiers de données et de journalisation,
➢Informations de restaurations ,
➢,,etc.
- Certains tris.
- Certaines jointures.
- Création d’index.
- Etc.
Fichiers de journalisation
Groupe 1
DELETE DELETE
UPDATE UPDATE
INSERT INTO INSERT INTO
UPDATE UPDATE
UPDATE… UPDATE…
INSERT INTO INSERT INTO
Membre 1 Membre 2
Groupe 2
Membre 1 Membre 2
Archives des Fichiers de journalisation
❑ L’écriture des fichiers journaux est cyclique, ce qui fait qu’à un certain
moment, certaines transactions seront écrasées.
❑ Les fichiers journaux archivés peuvent être stockés sur des disques
(serveurs) distants, ce qui optimisera la sécurité de la BD.
➢ Fichiers de contrôle : contiennent des données relatives à la base physique. Sans eux,
vous ne pouvez pas ouvrir les fichiers de données pour accéder aux données de la base.
➢ Fichier de paramètres : utilisé pour définir la façon dont l'instance est configurée au
démarrage.
Synthèse
➢ Fichiers trace : Chaque processus serveur et processus en arrière-plan peut écrire dans
un fichier trace associé. Lorsqu'un processus détecte une erreur interne, il réalise dans son
fichier trace un dump des informations relatives à cette erreur.
Processus
Connexion serveur
établie Session crée
Processus Serveur Oracle
utilisateur
User Process
Shared Streams
Server Java Pool Large Pool
Pool
Process
DB Buffer Shared Redo Log
Cache Pool Buffer
D000
Dictionary
Cache
User Process
PGA Library
Cache
Dedicated
Server
Process
User Process
Base de Données
Instance
Mémoire SGA
Cache
de tampons
de la base
de données
DBWn
Base de données
Processus database writer (DBWn)
Seuil = 13
DB Buffer Cache
Processus database writer (DBWn)
1 2 3 4 1
2 1. Insert…;
5
CRASH !!! 3
4
2. Update…;
Le DBW est déclenché !
5
DB Buffer Cache LOG Buffer 3. Update…;
Le point de reprise est la position
dans les fichiers journaux à partir
commit;
1 2 1 2 3 de laquelle les données sont
4. Insert…;
4 5 récupérables = le plus ancien
5. Update…;
tampon dirty du DB cache.
Data Files LOG Files commit;
Processus database writer (DBWn)
Instance
Mémoire SGA
Tampon de
journali-
sation
DBWn LGWR
Base de données
Processus LGWR (Log Writer)
❑ Le LGWR écrit le contenu du Redo Log Buffer sur les fichiers journaux
pour libérer de l’espace au PS.
❑ Le LGWR est déclenché par :
1. COMMIT → écriture des entrés redo relatives à la transaction
confirmée.
2. Après un délai (3 secondes)
3. Quand le Redo Log Buffer est plein au tiers
4. Avant que le DBWn n’écrive sur les fichiers de données des blocs
dirty non confirmés. Ainsi, en cas de crash, l’annulation se fait lors du
démarrage du serveur.
Le fast COMMIT & le SCN
❑ La notion de fast COMMIT est liée à l’écriture différée des blocs dirty
confirmés sur les fichiers de données.
❑ Dans le cas où après un COMMIT, seules les entrées Redo de la transaction
confirmée sont écrites sur les fichiers journaux (les blocs dirty ne sont pas
écrits sur les fichiers de données par le DBWn), cela s’appelle Fast COMMIT.
❑ Le SCN (System Change Number) est un code affecté à toute transaction
confirmée par un COMMIT.
❑ Le SCN est inscrit sur les entrées redo de la transaction confirmée sur les
fichiers journaux.
Processus CKPT (Checkpoint)
Base de données
Processus CKPT (Checkpoint)
1. Insert…;
1 2 3 4 1 2. Update…;
2
5
CRASH !!! 3
4
Le DBW est déclenché !
3. Update…;
5 commit; SCN1
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; SCN2
1 2 3 4 1 2 3 SCN 1
SCN 1
4 5
SCN 2
Data Files Control File LOG Files
Processus SMON (System Monitor)
Instance
Mémoire SGA
SMON
Base de données
Processus SMON (System Monitor)
Instance
Mémoire SGA
PMON
Mémoire PGA
Processus PMON (Process Monitor)
❑ 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.
PGA SGA
User Process
Shared Streams
Server Java Pool Large Pool
Pool
Process
DB Buffer Shared Redo Log
Cache Pool Buffer
D000
Dictionary
Cache
User Process
PGA Library
Cache
Dedicated
Server
Process
User Process
Base de Données
Fichier de données
Segment Segment
Extent Blocs
Structures de base de données logiques et physiques
Logique Physique
Base de données
Fichier de
Schéma Tablespace
données
Segment
Extent
❑ Les tablespaces
- Un tablespace est une unité logique qui correspond physiquement à un ou
plusieurs fichiers de données.
- L’administrateur (DBA) agit sur les tablespaces et non sur les fichiers de
données.
- EX: On peut créer plusieurs tablespaces dans une BD d’une Ese commerciale qui gère la
FACTURATION, la GRH, et le PARC INFO.
Tablespace Fichier de
données
Segment B (Extent 2)
Segment
Segment B (Extent 1)
Extension
Segment C (Extent 1)
Fact01.dbf Fact02.dbf
Structure Logique Structure Physique
❑ Les tablespace
- Les vues DBA_TABLESPACES et DBA_DATA_FILES incluent toutes les
informations relatives aux tablespaces et aux fichiers de données de la base.
- Pour afficher les noms des fichiers de données ainsi que les tablespaces auxquelles
ils correspondent:
SELECT tablespace_name, file_name
FROM DBA_DATA_FILES
ORDER BY tablespace_name;
Segments, extents et blocs
❑ Les principaux types d’objets d’un schéma sont les tables, les index, les vues,
les déclencheurs, les fonctions et procédures stockées et les packages
PL/SQL.
❑ Seuls les tables et les index sont stockés sous forme de segments, les autres
objets correspondent à des définitions dans le dictionnaire de données.
❑ Les objets d’un schéma peuvent être stockés sur différents tablespaces tandis
qu’un unique tablespace peut inclure plusieurs schémas.
Exemples du cours : Le schéma HR
Dictionnaire de données oracle
❑ Il est créé dans le tablespace SYSTEM, et c’est l’utilisateur SYS qui en est le
propriétaire.
Dictionnaire de données – Les vues statiques
❑ Elles sont basées sur des tables créés réellement dans le dictionnaire de données.
❑ Accessibles uniquement si la base est ouverte. Commencent par les préfixes:
❑ La vue DICTIONARY inclut des informations sur les vues statiques et dynamiques du
dictionnaire de données.
Dictionnaire de données – Les vues statiques
Nom de la Description
vue
%_TABLES Toutes les informations des tables de la base de données.
%_TAB_COLUMNS Toutes les informations concernant les colonnes des tables de la base de
données.
%_OBJECTS Toutes les informations des objets –tous types confondus- de la base de
données.
Dictionnaire de données – Les vues dynamiques
❑ Elles ne sont pas basées sur des tables du dictionnaire de données. Leurs
informations sont extraites de la mémoire et/ou des fichiers de contrôle.
I. Démarrage de l’instance
- Lecture du fichier de paramètres
- Allocation de la SGA et des processus selon les valeurs des paramètres
→ État NOMOUNT : seuls les vues dynamiques du DD relatives à l’instance sont
consultables (V$INSTANCE, V$PARAMETER, V$SGA etc.)
→ Utilisé généralement pour créer une nouvelle BD
→ STARTUP NOMOUNT
Démarrage de l’instance (2)
I. Arrêt normal
- Oracle ne permet plus l’ouverture des nouvelles sessions
- Oracle attend que le dernier utilisateur soit déconnecté pour arrêter
l’instance
- Il s’agit d’un arrêt propre (checkpoint avant fermeture)
→ SHUTDOWN NORMAL
Arrêt de la base de données (2)
I. Arrêt normal
II. Arrêt Transactionnel
- Oracle ne permet plus le lancement de nouvelles transactions
- Oracle attend que la validation/annulation des transactions courantes
- Il s’agit d’un arrêt propre (checkpoint avant fermeture)
→ SHUTDOWN TRANSACTIONAL
Arrêt de la base de données (3)
I. Arrêt normal
II. Arrêt transactionnel
III. Arrêt immédiat
- Oracle annule toutes les transactions courantes et ferme la BD
- Il s’agit d’un arrêt propre (checkpoint avant fermeture)
→ SHUTDOWN IMEDIATE
Arrêt de la base de données (4)
I. Arrêt normal
II. Arrêt transactionnel
III. Arrêt immédiat
IV. Arrêt d’abandon
- Oracle ferme la BD sans faire de checkpoint. C’est l’arrêt le plus brutal.
- Au prochain démarrage, une récupération des données, par le SMON, est
effectuée
→ SHUTDOWN ABORT
Fonctionnement d’Oracle – Requête SELECT (1)
a. Chargement des blocs à modifier dans le DBC, si elles n’y existent pas
b. Verrouillage des lignes à modifier
c. Un Redo Entry est généré pour la requête et est écrit dans le RLB
d. Modification des blocs dans le DBC, et écriture différée (par le DBW) des
modifications sur les fichiers de données
II. Écriture des Redo Entry de la transaction sur les fichiers journaux, par le
LGWR
1. Les blocs modifiés (dirty) sont déjà enregistrés dans les fichiers de données.
-SQL*Plus
-iSQLPlus
- OEM (DB Control)
-Oracle Reports, Oracle Forms
- PL/SQL
Connexion à SQLPlus
C:>sqlplus
SQL*Plus: Release 10.0.2.1.0 - Production on Mon APR 13 18:14:18 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter user-name: SYSTEM
Enter password: orcl
Connected to:
Oracle Database 10g Enterprise Edition Release 10.0.2.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing
options
SQL>
>SQL
EXECUTION DES REQUÊTES ENVOI DE LA REQUÊTE AU SERVEUR
– GESTION DU BUFFER
98
ENVIRONNEMENT SQLPLUS
Commande APPEND
Commande DEL
La commande DEL supprime la ligne courante.
La nouvelle ligne courante est la ligne suivant la ligne supprimée
(ou la ligne précédente si la ligne supprimée était la dernière).
Exemple :
SQL> L
SQL> L2 SQL> L
1 SELECT DEPT,
2* NOMD, 1 SELECT DEPT,
2 NOMD,
SQL> DEL 2* FROM DEP
3* FROM DEP
ENVIRONNEMENT SQLPLUS
La commande INPUT
(abréviation : I) permet d'insérer une ou plusieurs lignes après la ligne
courante.
Le numéro de la première ligne insérée s'affiche. Il est alors possible de
saisir plusieurs lignes. L'insertion se termine par la saisie d'une ligne
vide.
Exemple :