Vous êtes sur la page 1sur 47

Université CAD de Dakar Page 1 Département Maths-Informatique

Université Cheikh Anta Diop


Faculté des Sciences et Techniques
Département de Mathématiques-Informatique

COURS DE DBA ORACLE

DU Dr. MBAYE SENE

Maîtrise Informatique

2006/2007

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 2 Département Maths-Informatique
TABLE DES MATIERES
Première Partie : Généralités, architecture et Tuning

I Architecture du système Oracle (physique et logique)


I.1 Les fichiers de la base
I.1.1 Fichiers base
I.1.2 Fichiers Redo log
I.1.3 Fichiers de contrôle

I.2 Mémoire centrale


I.2.1 Zone des exécutables
I.2.2 La SGA (System Global Area)
I.2.3 PGA (Programm Global Area)
I.2.4 Zones des ordres SQL

I.3 Principaux process Oracle


I.3.1 Le process DBWR
I.3.2 Le process LGWR
I.3.3 Le process SMON
I.3.4 Le process PMON
I.3.5 Le process ARCH
I.3.6 Les autres processus

I.4 Architecture OFA (Optimal Flexible Architecture)


I.4.1 Définitions et objectifs
I.4.2 Avantages et caractéristiquesd
I.4.3 Configuration recommandée

I.5 Nouveautés de la version 9i/10g par rapport à la 8i

TP : Constituants de la base

II Optimisation sous Oracle


II.1 Optimisation au niveau conceptuel
II.1.1 Indexation sous Oracle
II.1.2 Choix des clusters
II.1.3 Redondance calculée
II.1.4 Partitionnement des tables
II.1.5 Choix des paramètres de stockage
TP : Indexation

II.2 Optimisation des programmes d’application


II.2.1 Règles de l’optimiseur
II.2.2 Ordonnancement par restructurations algébriques

II.3 Tuning d’une base de données (Voir partie administration)

Deuxième partie
I. Création/démarrage d’une base de donnée
I.1 Préparation du fichier d’initialisation
I.2 Création d’une base de données (mode graphique et/ou mode manuel)
I.3. Démarrage/Arrêt d’une base

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 3 Département Maths-Informatique
I.4 Ajout, suppression ou modification des fichiers de la base

AtelierINIT

II Gestion des utilisateurs


II.1 Création
II.2 Modification
II.3 Suppression
Atelier 1

III Contrôle des accès


III.1 Gestion des privilèges systèmes
III.2 Gestion des privilèges objets
III.3 Audit de contrôle d’accès
- Audit système
- Audit des propriétaires d ‘objets
Atelier 2

IV Administration réseau
IV.1 Les fichiers de configurations
IV.2 Configuration de SQL*NET
IV.3 Accès à une base distante
Atelier 3

V Tuning d’une base Oracle (Avancé)


V.1 Les outils de mesures : les vues
V.2 Tuning de la mémoire cache
- Optimisation du dictionnaire cache
- Optimisation des buffers de la SGA
V3.3 Tuning des E/S disque
VI Sauvegarde, restauration de la base (avancé)
VI.1 Le mode archivage
VI.2 Sauvegarde avec l’OS
VI.3 Sauvegarde avec l’outil EXPORT
VI.4 Restauration de la base
- En mode archivelog
- En mode noarchivelog
VI.5 Réorganisation d’une base

VII Gestion des objets dans une base répartie (avancé)


VII.1 Concept de database link, accès à des objets distants
VII.2 Quelques techniques de répartition
- Méthodes des copies
- Méthode des partionnements
VII.3 Réplication par cliché
VII.3 Réplication par trigger

VIII Quelques outils d’Oracle (Avancé)


IX.1 SQL*Loader
IX.2 Oracle Network manager
IX.3 Oracle Enterprise Manager

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 4 Département Maths-Informatique

Introduction : Présentation du système Oracle


On distingue deux composantes dans un système d’information : les données et les
traitements. Les données sont représentées par une base de données et les
traitements par un ensemble d’applications informatiques et par des procédures
manuelles. Un système de gestion de base de données (SGBD) a pour vocation de
donner la possibilité de créer une base de données et de l’entretenir d’une part, et de
développer des applications pour l’exploiter d’autre part. C’est un outil permettant
d’insérer, de modifier et de rechercher efficacement des données spécifiques dans une
grande masse d’informations partagées par les usagers.

Une base de données Oracle comprend deux types d’informations: le dictionnaire de


données et les données. Le dictionnaire de données est un ensemble de tables qui
décrivent la base ; les données sont de deux types : les données des utilisateurs
(essentiellement les tables et les index) et les données nécessaires au fonctionnement
d’Oracle (exemple les segments de rollback).
Le noyau d’Oracle réalise les fonctionnalités requises chez un SGBD, permettant ainsi
d’assurer le fonctionnement normal d’une base de données (stockage des données et
gestion de l’espace disque, gestion du dictionnaire de données, recherche et
modification des données, sécurité des données ainsi que leur intégrité et leur
confidentialités et enfin gestion de la concurrence d’accès).
I Architecture d’Oracle
Une base de données Oracle est un ensemble de fichiers sur disque ayant chacun une
structure et une vocation particulière.
Sous le terme d’architecture, il faut distinguer deux parties :
- l’architecture physique : elle est constituée d’un ensemble de fichiers qui
contiennent l’ensemble des données de la base : données de gestions de la base
et données des utilisateurs. L’architecture physique d’une base Oracle comprend
les fichiers de données, les fichiers de reprise et les fichiers de contrôle.
- L’architecture logique : elle comprend les tablespaces, les segments, les
extensions, les blocs et les objets de schéma. Ces derniers comprennt les tables,
les vues, les index, les procedures, les clusters, les fonctions, les triggers etc…
Rappel :
- Bloc : c’est le niveau logique le plus bas, il est composé d’un certain nombre
d’octets.

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 5 Département Maths-Informatique
- Extension : c’est le niveau intermédiaire, il est constitué d’un certain nombre de
blocs consécutifs alloués simultanément à un objet de schéma.
- Segment : c’est le niveau supérieur, il est constitué d’un ensemble d’extensions
allouées au même objet schéma.
Il ne faut pas confondre une base de données Oracle et une instance Oracle qui est un
ensemble de 5 principaux process (dont un optionnel) et une zone de la mémoire
centrale appelée SGA (voir plus loin). Une instance travaille sur une et une seule base
de données. La figure Fig1 illustre une architecture générale d’une instance.

SGA: Partie de la mémoire


centrale réservée à l'instance

User1 Usern DBWR LGWR SMON PMON ARCH

Premier Deuxième 1er fichier 2ieme


Premier Deuxième control fichier Fichier redo log
fichier redo fichier redo
fichier base fichier base control archivés
log log

Fig1 : Architecture générale d’une instance Oracle


I.1 Fichiers de la base
Les fichiers de la base sont de trois types : les fichiers base (database files), les fichiers
de journalisation (redo log files) et les fichiers de contrôle (control files)
I.1.1 Fichiers base
Les fichiers base contiennent essentiellement deux types d’in formations : les données
des utilisateurs et du dictionnaire de données (DD) et les données de travail. Les
premières constitent le cœur de la base de données et consistent en des tables et des
index, les dernières elles sont nécessaires pour qu’Oracle puisse fonctionner.
Les fichiers base sont regroupés en unités logiques appelées tablespace.

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 6 Département Maths-Informatique

Dic.Don. Seg. temporaire Table T1 Table T3 Index T1


Table T2 Table T4 sur Table T1
Rollback Rollback segment Rollback seg. Rollback seg. Table T3
segment "RS" RS1 RS2
"SYSTEM"

Tablespace "SYSTEM" Tablespace TS1 Tablesapce TS2

FigTS: Les tablesapces

Une table d’utilisateur ou du DD occupe un certain nombre de blocs oracle. Les blocs
pris par une table forment ce qu’on appelle un segment de données ; un index occupe
un segment d’index.
Les segments de travail représentent une partie des blocs des fichiers base ; il y a 4
types de segments de travail : les rollback segments, les segments temporaires, les
segments différés et les segments du démarrage.
Les rollback segments sont utilés pour la réalisation du concept de transaction : les
blocs de données ou d’index qui sont en cours de modification sont copiés avec leurs
anciennes valeurs (l’image avant) dans un rollback segment. Si la transaction de
modification se termine normalement, ces blocs d’image avant ne sont pas utiles. Par
contre si la transaction est annulée ou anormalement arrêtée, ces blocs seront utilisés
pour restituer l’état de la base de données avant le début de la transaction.
Les segments temporaires (temporary segments) sont utilisés par Oracle pour les
requêtes SQL qui ne peuvent pas être réalisées en mémoire ; ces segments sont pris
soit dans le tablespace système soit dans les tablespaces des utilisateurs.
Les rollbacks segments différés (Differed Rollback segments) sont utilisées par Oracle
pour ranger des blocs « image avant » d’un tablespace lorsque celui-ci est mis hors
service (Offline), et par la même occasion, l’espace qu’ils occupaient est libéré.
Le segment de Bootstrap (cache segment) est un segment de moins de 50 blocs qui
est créé par Oracle pour ses propres besoins, lors de la création de la base.
I.1.2 Fichiers Redo log
Ce sont des fichiers de journanlisation des modifications successives, ils sont au moins
au nombre de 2. Ils contiennent tous les changements d’état de la base de données et
sont utiles pour la restauration d’une base suite à un incident de l’instance ou du disque.
Cette restauration consiste en une ré-application du contenu des fichiers redo log sur la
base.

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 7 Département Maths-Informatique
I.1.3 Fichiers de contrôle
Ce sont de petits fichiers qui contiennent essentiellement : les noms des fichiers base et
redo log, le nom de la base, la date de création de la base et des informations sur l’état
de cohérence de la base (les checkpoints). Une base doit avoir au moins un fichier de
contrôle ; les autres ne sont qu’une copie conforme du premier et existent dans un but
de sécurité.
I.2 Mémoire centrale
Lorsqu’une base de données Oracle est en activité, il y a quatre types de zone mémoire
utilisées :
I.2.1 Zone des exécutables
Cette zone mémoire contient l’exécutable du noyau et des outils Oracle en cours
d’utilisation, et des applications des utilisateurs. La taille de cette zone mémoire dépend
du système d’exploitation et de la version d’Oracle. Ces exécutables peuvent être
partagés par plusieurs instances à la fois sur une même machine.
I.2.2 La SGA (System Global Area)
C’est la zone mémoire réservée à l’instance; elle est allouée au démarrage et contient
les informations d’une et une seule instance Oracle. Sa taille ne change pas durant
l’exploitation, et dépend des valeurs de certains paramètres du fichier de démarrage
INIT.ORA. Cette zone est libérée à l’arrêt de l’instance. Plus la taille du SGA est grande,
plus Oracle va travailler en mémoire et moins il va accéder au disque. Les types
d’informations contenues dans la SGA sont: des blocs de données et d’index des
utilisateurs, des blocs du dictionnaire de données, des enregistrements redo log etc.
La SGA est constituée de quatre principales parties :
• Fixed size : c’est une petite zone réservée pour le système, sa taille est
pratiquement non paramétrable.
• Variable size : elle correspond essentiellement au Dictionnaire de Données ; sa
taille dépend des paramètres commençant par DC_.
• Database buffer : c’est la taille de la zone des buffers de données et de rollback,
elle est fonction du paramètre db_block_buffers.
• Redo buffer : c’est la taille de la zone des enregsitrements redo log ; elle est
fonction du paramètre log_buffer.
Pour ontenir ces composants, il suffit de lancer la commande show sga sous le
compte system ou la requête select * from v$sga.
I.2.3 PGA (Programm Global Area)

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 8 Département Maths-Informatique
Une zone est affectée à chaque process connecté à la base, le process peut être un
process Oracle ou utilisateur. Cette zone dont la taille dépend du système d’exploitation
contient des informations sur l’état du process et sur son activité.
I.2.4 Zones des ordres SQL
Chaque ordre SQL est stocké sous une forme particulière dans une zone mémoire
appelée curseur, elle contient essentiellement le texte de l’ordre et le schéma d’accès. Il
faut noter que cette zone est en dehors de la PGA de l’utilisateur et de la SGA.
I.3 Principaux processus Oracle
Les lectures de la base vers la SGA sont assurées par les processus d’arrière plan ou
utilisateurs.
I.3.1 Le process DBWR
Il est responsable de l’écriture des blocs de la SGA vers la base, et plus précisément
vers les fichiers de la base. Pour réduire au maximun les entrées/sorties disques, ce
process est asynchrone dans la mesure où il n’écrit pas systématiquement dans la base
suite à un ordre modifiant l’état de la base (exemple suite à un ordre SQL update): il
retarde au plus l’écriture sur disque.
I.3.2 Le process LGWR
Il travaille conjointement avec le DBWR. Il écrit dans le fichier redo log pour tracer toute
activité de mise à jour de la base de données.
Cette écriture a lieu dans deux cas :
a) quand la SGA est pleine
b) quand on atteint un point de contrôle (checkpoint) : un checkpoint est est atteint
quand le fichier redo log courant est plein ou quand la valeur du paramètre
log_checkpoint_interval est atteint ; ce paramètre détermine le nombre de blocs
oracle qui doit être atteint pour écrire les enregistrements de la SGA vers les
fichiers base.
I.3.3 Le process SMON
Il a pour tâche principale la restauration de la cohérence d’une base à son démarrage.
Au lancement de la base, le rôle de SMON consiste à vérifier si l’instance s’était arrêtée
normalement la dernière fois; auquel cas il n’a rien à faire. Sinon il restaure la base en
récupérant dans le fichier redo log les modifications qui ont été terminées (par un
Commit ou Rollback) et que Oracle n’avait pas encore écrites dans la base avant l’arrêt
anormal. Ce process intervient également pour faire le ménage suite à la désactivation
et à la réactivation d’une partie de la base de données (tablespace offline puis online).

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 9 Département Maths-Informatique
I.3.4 Le process PMON
Il intervient lorsqu’un process utilisateur a un problème ou lorsqu’il est anormalement
terminé. Cette intervention consiste à libérer les ressources occupées par le process
utilisateur et à supprimer ce dernier de la liste des process utilisateurs de l’instance.
I.3.5 Le process ARCH
Il est optionnel et a pour rôle d’archiver les versions successives des fichiers redo log.
Ces archives pourront être utilisées pour restaurer la base de données en cas de perte
de fichiers base.
I.3.6 D’autres processus d’arrière plan
D’autres processus background pourraient être actifs dépendant des options
d’installations prises :
• CKPT (the checkpoint process) : il est responsable de la MAJ des entêtes des
fichiers base lors d’un checkpoint,
• Snnn (the Shared Server Process) : Avec une configuration MTS (Multi-Threaded
Server), un ou plusieurs processus servers sont créés avec les noms S001 ,
S002, S003 etc… Ces processus permettent à plusieurs processus utilisateurs de
se connecter à l’instance, ce qui permet de redure l’overload tout en augmentant
le nombre d’utilisateurs supportés.
• Dnnn (the Dispatcher process) : Avec une configuration MTS,un ou plusieurs
processus dispatcher D001 , D002, D003 etc… sont créés ; ils reçoivent les
demandes de requêtes du LISTENER et les redirigent vers le processus server
partagé le moins chargé. Le nombre de processus dispatcher est donné par le
paramètre MTS_MAX_DISPATCHERS.
• RECO (the Recoverer process) : il est utilisé dans une architecture distribuée
.transactionnelle ; il permet de recouvrir aux pannes rencontrées dans les
transactions distribuées en se connectant sur les bass distantes impliquées dans
la transaction distribuée et en en supprimant les lignes résultant d’une transaction
« douteuses ».
• LCKn (the Lock process) : Plusieurs processus de vérouillages (LCK0, LCK2…)
sont utilisés avec l’option Parralel server pour offrir des possibilités de vérouillage
inter-instance.
• Pnnn (the Parralel Query process): ils sont responsables de l’éxécution des

requêtes SQL dans les cas suivants : requêtes parralèles, création parralèle

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 10 Département Maths-Informatique
d’index, chargement parralèl de données etc…Leur nombre minimal est spécifié

par le paramètre PARRALEL_MAX_SERVERS

I.4 Architecture OFA (Optimal Flexible Architecture)


I.4.1 Définition et objectifs

Oracle Optimal Flexible Architecture (meilleure architecture évolutive), est un ensemble


de convention de nommage et de répartition de fichiers sur les différents disques dur du
serveur. OFA peut être défini comme un ensemble de bonnes habitudes à prendre pour
la création d'une base. Il n’est pas pas indispensable à la création d'une base mais
Oracle recommande son utilisation si vous prévoyez une augmentation du nombre
d'utilisateurs ou encore si vous souhaitez mettre en place d'autres bases de données
dans votre environnement.

Son objectif est de prévenir tout un ensemble de problèmes qui pourraient survenir en
cas d’utilisation de plusieurs versions d'Oracle, plusieurs bases de données, ou des
bases de données à fort taux d'utilisation. La norme OFA a été réalisée afin d'offrir des
avantages non négligeables, notamment dans les cas suivants :

• Facilité de maintenance des bases de données à travers une organisation de


fichiers standardisée

• Fiabilité grâce à des données réparties sur plusieurs disques

• Performance accrue par des réductions de conflits d'entrée/sortie sur les disques

Oracle Universal Installer sépare les fichiers exécutables des fichiers de base de
données. Cette opération prend tout son sens lorsque vous souhaitez mettre à jour votre
version d'Oracle : vous voulez tout mettre à jour sans que votre base de données soit
altérée. C'est nettement plus simple lorsque les exécutables sont séparés de votre base.

I.4.2 Avantages et caractéristiques d'une base compatible OFA

Une base OFA apporte plusieurs avantages :

• Facilité d'administration de la base de données et meilleure gestion de


l'évolutivité : le système de fichier est organisé de manière à simplifier la
recherche de fichiers de données spécifiques. Il permet en outre d'ajouter
simplement des fichiers de données au fur et à mesure que la base prend de
l'ampleur

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 11 Département Maths-Informatique
• Moins de "bouchons" aux entrées/sorties du disque grâce à la séparation des
fichiers binaires, des fichiers de données, des fichiers temporaires (fichiers
utilisés pour les opérations de tri)

• Davantage de garanties face aux problèmes de disques : en répartissant les


fichiers sur plusieurs disques, on minimise autant que possible la perte de
données en cas de problèmes

• Plusieurs version d'Oracle peuvent s'exécuter en même temps : cela peut par
exemple permettre au DBA de tester les fonctionnalités d'une nouvelle version
avant de l'appliquer aux bases de données

Quelques avantages de OFA sont :

• Indépendance des sous-répertoires :les opérations sur un fichier d'une certaine


catégorie ne sont pas répercutées sur un fichier d'une autre catégorie

• Convention de nommage pour les fichiers de données : on peut ainsi identifier les
fichiers plus facilement

• Séparation des différents types de tablespace pour obtenir les avantages d'I/O,
mais aussi réduire la fragmentation

I.4.5 Configuration recommandée (exemple sous LINUX)

Afin de satisfaire les objectifs, Oracle recommande une architecture en 4 disques

Les fichiers de contrôle doivent être copiés sur au moins deux disques afin que la base
puisse quand même démarrer si un des disques est corrompu. Les fichiers présentant

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 12 Département Maths-Informatique
des caractéristiques d'utilisation différentes doivent être placés dans des tablespaces
différents.

Au cas où vous ne disposeriez que de trois disques, Oracle recommande la


configuration suivante :

HD1 Système d'exploitation + Répertoire Racine


Code de l'application + copie des fichiers de contrôle + copie des fichiers redo +
HD2
copie des fichiers de données
HD3 Copie du fichier de contrôle + fichiers redo + fichiers de données

Enfin, le DBA se repérera plus facilement au sein des nombreux fichiers possibles en
adoptant la convention de nommage OFA. Comme plusieurs fichiers peuvent exister, un
numéro est rajouté avant l'extension. Par exemple les fichiers de contrôle s'appelleront
control01.ctl, control02.ctl ...

Fichier Nommage

CONTROL01.CTL fichier de contrôle

fichier de données du tablespace Oracle Enterprise Manager


OEMREP01.DBF
REPository

SYSTEM01.DBF tablespace système

RBS01.DBF tablespace du RollBack Segment

INDX01.DBF fichier de données du tablespace d'index

TEMP01.DBF fichier de données d'un tablespace temporaire

USERS01.DBF fichier de données d'un tablespace utilisateur

REDO01.LOG fichier redo du groupe 1, membre 1

I.5 Les nouveautés des nouvelles versions par rapport à Oracle8i


Par souci de compatibilité avec les versions précédentes, peu de caractéristiques
techniques disparaissent : seuls des ajouts sont effectués ; d’où l’apparition d’une
nouvelle version d’Oracle : Oracle9i.
C’est presque l’intégrité de la gestion interne d’oracle qui a été améliorée avec cette
nouvelle version. Parmi ces nouveautés nous pouvons citer :

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 13 Département Maths-Informatique

I.5.1 Nouveau mode de gestion des tablespaces


Pour simplifier et améliorer les performances d’accès aux tablespaces, deux modes de
gestion existent : le mode LOCAL et le mode DICTIONNARY.
Le nouveau mode LOCAL stocke tous les aspects d’allocation de segment à l’intérieur
de chaque tablespaces et les informations sont codées au format bipmat dans chaque
en-tête de tablespaces.
L’ancien mode DICTIONNARY centralise l’allocation d’espace dans le dictionnaire de
données de chaque base.
I.5.2 Allocation automatique des segments de stockage
Le mode LOCAL apporte de nombreuses options d’allocations des espaces disque. Les
fastidieuses clauses STORAGE disparaissent au profit d’options comme
AUTOALLOCATE
I.5.3 Les tablespaces temporaires
Oracle effectue de nombreux tris, à la demande des utilisateurs ou pour son
fonctionnement interne. Ils sont principalement effectués dans une zone de tri en
mémoire. Si cette zone s’avère trop petite, un espace disque est réservé à cet effet :
c’est le tablespace temporaire ou TEMPORARY TABLESPACE.

I.5.4 Les tablespaces UNDO ou d’annulation


Un tablespace de type Undo est un nouveau tablespace hébergeant les segments
d’annulation, destiné à remplacer les rollbacks segments. C’est dans cet espace
qu’Oracle gère les données en attente de validation ou d’annulation. L’utilisation d’un
tablespace UNDO est beaucoup plus simple que celle de rollbacks segments.

I.5.5 La période de rétention d’un tablespace UNDO


Le flashback Query permet d’interroger les données dans l’état où elles étaient plusieurs
heures auparavant. Pour cela on indique au tablespace UNDO une durée de rétention
des informations. Il est aussi possible d’interroger les données de la base de données
telles qu’elles étaient plusieurs heures auparavant.

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 14 Département Maths-Informatique

I.5.6 Réorganisation des objets base ouverte


De nombreux objets peuvent être cependant réorganisés, base ouverte, utilisateur
connecté. La réorganisation en ligne des tables, index et tablespaces augmente ainsi la
disponibilité des bases. Des assistants permettent d’automatiser ces actions.
I.5.7 Extension automatique d’un fichier de données
Auparavant, l’un des problèmes les plus difficiles à résoudre pour les administrateurs,
Oracle était la gestion de la taille des tablespace. Oracle permet l’augmentation
automatique de la taille des fichiers pour tous les types de tablespaces, qu’il soit en
mode gestion local ou dictionnaire.

I.5.8 Les tablespaces transportables


Cette caractéristique permet de transférer un tablespace d’une base de données
Oracle9i vers une autre base de données9i. Les utilisateurs sont multiples : déplacer
l’ensemble des données d’une application d’une base à une autre, créer rapidement un
environnement de test identique à celui de production, transférer les tablespaces d’une
base de production vers une base infocentre1.

I.5.9 Une base peut comporter plusieurs DB_BLOCK_SIZE


Une base de données est toujours créée avec un DB_BLOCK_SIZE unique pour le
tablespace SYSTEM. Comme les tablespaces transportables peuvent parvenir de bases
configurées avec des DB_BLOCK_SIZE différents, Oracle accepte maintenant des
tablespaces possédant une valeur différente de celle définie pour son tablespace
SYSTEM. L’utilisation des tablespaces transportables est limitée entre bases Oracle9i.

I.5.10 L’exportation des fichiers redo-logs :le Log Miner


Oracle propose un outil d’analyse du contenu des fichiers redo-logs d’une base : le Log
Miner. Cet utilitaire utilise de manière séquentielle l’ensemble des opérations réalisées
sur une base. L’avantage de Log Miner est que rien ne doit être prévu a priori, tout est
analysé a posteriori.

I.5.11 La gestion automatique des fichiers par Oracle


La gestion des fichiers proposée par Oracle offre de multiples options pour en faciliter
l’administration : accroissement automatique de leur taille, gestion interne, etc.

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 15 Département Maths-Informatique
Oracle9i permet aussi la gestion de l’ensemble des fichiers composant la base, y
compris leurs création, suppression, nom, etc. Les paramètres d’initialisation
DB_CREATE_FILE_DEST et DB_CREATE_ONLINE_LOG_DEST_n gèrent la création :
- des fichiers liés aux tablespaces
- des fichiers redo-logs
- des fichiers de contrôle.

I.5.12 La suppression automatique des fichiers


L’ordre DROP TABLESPACE possède maintenant une option permettant de supprimer
les fichiers liés au tablespace en même temps que l’ordre ALTER DATABASE
TEMPFILE effectue la même opération pour les fichiers liés aux tablespaces de tri.

I.5.13 Gestion des fichiers d’initialisation


Historiquement, toutes les versions d’Oracle ont utilisé un simple fichier texte pour y
conserver les paramètres d’initialisation. Avec Oracle9i, ces valeurs peuvent maintenant
être gérées automatiquement dans un fichier binaire persistant.

I.5.14 Valeurs dynamiques du fichier d’initialisation


De plus en plus de paramètres d’initialisation sont modifiables dynamiquement, ce qui
signifie que leur modification est immédiatement prise en compte, sans nécessiter l’arrêt
puis le démarrage de la base.

I.5.15 Contrôle dynamique de la mémoire SGA


Les paramètres d’initialisation qui dimensionnent l’allocation mémoire d’une instance
sont dynamiques. Le paramètre dynamique DB_CACHE_SIZE remplace l’ancien
DB_BLOCK_BUFFER qui était statique.

I.5.16 Nouvelle syntaxe pour démarrer une instance


Une nouvelle syntaxe est utilisée pour créer, démarrer et arrêter une instance. Elle
s’effectue à partir de SQL*Plus qui devient l’interface privilégiée de la création d’une
base.
• sqlplus /nolog
• connect system/manager as sysdba
• startup pfile=c:\repertoire\init.ora

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 16 Département Maths-Informatique

I.5.17 Disparition du CONNECT INSTERNAL


Il n’est plus possible d’utiliser un CONNECT INTERNAL pour une base. Les privilèges
SYSOPER et SYSDBA qui existent de puis plusieurs versions le remplacent
• sqlplus / nolog
• connect system/manager as SYSDBA
• startup pfile =/u01/app/oracle/admin/test/scripts /init.ora

I.5.18 Utilisation d’un fichier mot de passe


Pour démarrer une base de données en mode client serveur ou à partir d’oracle
Entreprise Manager, Oracle recommande l’utilisation d’un fichier mot de passe. Il
autorise les utilisateurs possédant les privilèges SYSOPER et SYSDBA à administrer
une base à distance.
I.5.19 Modification du moteur Java et XML d’oracle
Le moteur Jserveur à la base Oracle a été revu et de très nombreuses possibilités
concernant Java et Xml sont apparues.

I.5.20 Nouvelle version D’oracle9i Portal


Oracle Portal est le successeur d’Oracle WebDB. Il apporte de nombreuses possibilités
supplémentaires.

I.5.21 Les outils et assistants


Pour exploiter les nouvelles possibilités d’Oracle, de nombreux assistants sont apparus.
Ils facilitent les actions de configuration et d’administration.

I.5.22 Créer une base Oracle9i


Le logiciel DBCA (Oracle Database Configuration Assistant) offre une interface
graphique conviviale pour guider. Cet utilitaire réclamé par tous les administrateurs
Oracle depuis des années est disponible depuis Oracle8. Il s’avère très bien conçu et sa
dernière version prend en compte toutes les nouveautés apportées par Oracle9i.
I.5.23 Paramétrer Oracle Net :
Oracle Net correspond à l’ancien SQL*Net ou Net8. L’assistant NETCA (Oracle Net
Configuration Assistant) permet de créer rapdiment une configuration client-serveur

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 17 Département Maths-Informatique
opérationnelle. L’assistant NETMGR (Oracle Net Manager) accède à toutes les
possibilités de paramétrage d’Oracle Net.

I.5.24 Administrer votre environnement Oracle


Oracle Entreprise Manager, la console d’administration graphique d’Oracle a
considérablement évolué. Elle possède de nombreuses possibilités nouvelles que je
vous conseille d’exploiter.
Oracle a effectué depuis quelques années une percée remarquée dans le domaine du
groupe de travail, avec ses produits Oracle9i Server et avec Personal Oracle9i sur les
postes personnels.
Des versions d’évaluation des produits regroupant l’ensemble des fonctionnalités sont
diffusées gratuitement par l’éditeur sur CD-ROM ou téléchargeables sur le Web. Ces
logiciels ne contiennent pas de clé de cryptage ni de « bombe à retardement »
permettant de les verrouiller à l’issue de la période légale d’essai, ce qui permet de
convertir simplement la licence de prêt en licence achetée. Cette tendance, loin d’être
une action commerciale ponctuelle, est d’évidence l’orientation future de la diffusion de
masse des logiciels. Il faut occuper le terrain par l’installation d’une version de prêt, de
sorte qu’un concurrent ne puisse venir occuper cette place.

II Tuning d’une base de données


NB : Les parties A et B doivent être traitées dans le cours de BD

A. Optimisation au niveau conceptuel


A.1 Indexation sous Oracle
A.2 Choix des clusters
A.3 Redondance calculée
A.4 Partitionnement des tables
A.5 Choix des paramètres de stockage

TP : Indexation

B. Optimisation des programmes d’application


B.1 Règles de l’optimiseur
B.2 Ordonnancement par restructurations algébriques

La notion de tuning couvre les techniques permettant de mettre au point les interactions
entre la machine et la base de données, afin d’optimiser au mieux les performances en
terme de temps de réponse. Le tuning intervient dans deux phases du cycle de vie d’un

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 18 Département Maths-Informatique
système d’information : dans la phase de réalisation et de test et dans la phase de
production sous forme de maintenance.
Dans les deux phases, le tuning consiste à :
- analyser l’environnement des utilisateurs : nombre maximum et moyen d’utilisateurs
connectés simultanément, leur type d’activité, leur fréquence de connexion ;
- analyser la nature des applications : le type de transaction (en interrogation et/ou
mise à jour…), les volumes de données manipulés ;
- réaliser des observations et des statistiques sur l’activité de la base ;
- régler la base en exploitant au maximum les ressources matérielles à disposition :
mémoire cache et disque.

II.1 Les outils de mesures : les vues


L’idéal serait que toutes les requêtes puissent s’exécuter en mémoire sans accès au
disque. Or la taille de la mémoire est limitée, et les accès disque sont nécessaires. Le
tuning de la mémoire consiste donc à réduire au mieux les accès disques.
Si un accès disque est nécessaire, il doit se faire au moindre coût : pas d’attente et pas
de « navigation » sur le disque .
Les statistiques sur l’activité de la base sont stockées dans des tables d’information
virtuelles, ; elles sont alimentées par le noyau d’Oracle et commencent par X$.
On peut accéder à des vues contenant les mêmes informations que ces tables ; ces
vues sont décomposées en deux groupes : les vues contenant des informations en
temps réel sur les utilisateurs connectés, les verrous posées, etc… :
- v$process : process connectés
- v$rollname : nom des rollback segments en utilisation
- v$session : les sessions d’utilisateurs
- v$lock : les verrous posés
Et les vues contenant des statistiques cumulées depuis le début du démarrage de
l’instance :
- v$rowcache : statistiques sur le dictionnaire de données cache,
- v$rollstat : statistiques sur l’activité des rollback segments,
- v$filestat : statistiques sur E/S des fichiers base
- v$waitstat : statistiques sur la contention mémoire (les attentes)
- v$sysstat : statistiques cumulées pour toutes les sessions
- v$sesstat : statistiques sur chaque session utilisateur

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 19 Département Maths-Informatique
II.2 Tuning de la mémoire cache
II.2.1 Optimisation du dictionnaire cache
Le dictionnaire cache est une partie du dictionnaire de données qui est en mémoire et
dont la taille est déterminée par les paramètres de INIT.ORA commençant par DC_ Lors
d’un ordre SQL, si une définition n’est pas en mémoire (cache miss), Oracle génère des
ordres SQL qui vont chercher la définition manquante dans la base de données
(recursives calls).
Pour examiner la valeur cumulée des recursive calls, visualisez v$rowcache.
Select parameter, gets, getmisses, count, usage from v$rowcache ;
II.2.2 Optimisation des buffers de la SGA
On rappelle que la SGA est une zone en mémoire qui est allouée à une instance Oracle
à son démarrage. La SGA contient deux types de buffers : les buffers de données et de
rollback, et les buffers de redo log.
• Buffers de données et de Rollback
Le paramètre DB_BLOCK_BUFFERS détermine la taille de la zone de ces buffers. Plus
cette zone est grande, plus petite est la probabilité d’accéder au disque suite à un ordre
SQL.
• Buffers de Redo log
La zone de ces buffers est une zone tampon qui contient des enregistrements qui seront
écrits dans le fichier redo log courant. Pour diminuer les contentions sur cette zone, on
peut augmenter cette zone en augmentant le paramètre LOG_BUFFER de INIT.ORA.
• Optimisation de la mémoire pour les opérations de tri
Oracle trie les données pour réaliser les ordres SQL qui utilisent :
- les clauses ORDER BY, GROUP BY
- la clause DISTINCT, la jointure
- la création d’index (sauf lorsque la colonne indexée est déjà triée et qu’on utilise
NOSORT), et
- les opérateurs UNION, INTERSECT et MINUS.
Oracle réalise l’opération de tri dans une zone mémoire allouée au process qui a
demandé le tri lorsque le volume de données à trier est faible. Avec un grand volume de
données, cette zone peut s ‘avérer trop petite, auquel cas Oracle utilise le segment
temporaire sur disque pour stocker les résultats intermédiaires de tri, ce qui génère un
surplus d’E/S.

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 20 Département Maths-Informatique
Pour augmenter la taille de cette zone en mémoire, l’administrateur peut modifier le
paramètre SORT_AREA_SIZE.
Cette modification peut être envisagée lorsque :
- on utilise fréquemment le tri dans les applications ;
- on est certain qu’il y a un surplus d’E/S (on peut le vérifier avec la vue v$sysstat)
- on est certain que la zone agrandie tienne en mémoire.
II.3 Tuning des E/S disque
Les actions de tuning des E/S comprennent :
- répartir au maximum les données et les index sur tous les disques disponibles ;
l’idéal serait que chaque tablespace soit sur un disque à part afin d’éviter la
contention disque.
- Séparer les données d’une table de ses index au niveau des disques : ceci réduit
aussi la contention et « parallélise » les accès disque pour une requête accédant aux
tables et aux index ;
- Compacter les blocs de données et d’index en réduisant les blocs chaînés : choisir
pour cela les valeurs adaptées pour les paramètres PCTFREE et PCTUSED lors de
la création d’objets de la base ;
- Compacter l’étendue des objets en réduisant leur fragmentation sur plusieurs
extensions : choisir pour cela les valeurs adaptées pour les paramètres INITIAL,
NEXT et PCTINCREASE

Annexe1
Paramètres de stockage
INITIAL : spécifie la taille en octets de la première extension de l’objet, cette extension sera
réservée automatiquement pour l’objet à sa création. Assurez vous que l’extension initiale peut
contenir tout l’objet pour éviter sa fragmentation sur plusieurs extensions.
NEXT : spécifie la taille en octets de la deuxième extension d’un objet (en dehors de la
première). Ce paramètre n’est pris en compte que lorsque PCTINCREASE est égal à zéro.
MINEXTENTS : spécifie le nombre minimal d’extensions qui sont allouées à l’objet à sa création
(y compris l’extension initiale). Il ne peut pas être modifié pour un objet déjà créé. (Valeur par
défaut = 1)
MAXEXTENTS : spécifie le nombre maximal d’extensions qui seront allouées à un objet à sa
création (y compris l’extension initiale). (Valeur par défaut = 255)
PCTINCREASE : est un pourcentage (P) qui permet de calculer la taille (TN) en octets d’une
nouvelle extension par rapport à la taille de la dernière extension créée (TD).

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 21 Département Maths-Informatique
Formule de calcul : TN=TD + TP x TD
(Valeur par défaut = 50%)
PCTFREE : spécifie le pourcentage à réserver en tant que zone de débordement dans l’espace
utile du bloc. (Valeur par défaut 10%)
PCTUSED : spécifie le pourcentage de la place utilisée par les lignes du bloc au dessous duquel
un bloc peut de nouveau être utilisé pour insérer de nouvelles lignes.
(Valeur par défaut = 40%) .
INITRANS, MAXTRANS : nombre minimum et maximum de transactions en concurrence sur
l’objet.

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 22 Département Maths-Informatique

TP1 sous Oracle

I Constituants de la base et paramètres de la SGA

A. Fichiers de la base/rollback segment


- Afficher les fichiers base (v$datafile), les fichiers redo log (v$logfile) et les fichiers de
contrôle (v$controlfile)
- afficher les noms des rollback segment et leur statut (dba_rollback_segs)
- afficher la liste des tablespaces et des fichiers associés (dba_data_files,
dba_tablespaces)
I. Rq : Décrire les tables concernées pour choisir les colonnes à afficher
B. Afficher les valeurs des paramètres de la SGA
A partir de la vue v$sga, ou à partir de show, visualiser les paramètres de la SGA.

II Redirection des résultats dans des fichiers

A. Lister les rollback segments et leur statut et stocker le résultat dans un fichier
rollback.txt
B. On veut nettoyer une base en détruisant toutes les tables exceptées celles
appartenant à
SYS et à SYSTEM. Ecrire une requête SQL générant ce script (le script s’appellera
drobtab.sql)
C. Afficher toutes les variables d’environnement, le résultat est stocké dans le fichier
var.txt.

III. Plan d’exécution des requêtes SQL


a) Créer une table audit_sql permettant d’enregistrer les plans d’exécution fournis par
EXPLAIN PLAN
b) Créer une requête permettant d’exploiter le contenu de la table audit_sql
c) Utiliser EXPLAIN PLAN pour obtenir le plan d’exécution de la requête donnée en b)

IV Example d’un fichier INIT.ORA


Les paramètres d’initialisation sont spécifiés dans un fichier (INIT.ORA généralement) ;

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 23 Département Maths-Informatique
Ce fichier peut se trouver dans divers endroits suivant les plates-formes sur lesquelles
vous avez votre système Oracle.

Système d’exploitation Localisation


Unix $ORACLE_HOME/dbs
Windows NT \orant\dbs
Windows 95/98 (Personal Oracle) \orawin95\dbs

# -------Installation/Database Size------
# SMALL MEDIUM LARGE
# Block 2K 4500K 6800K 17000K
# Size 4K 5500K 8800K 21000K
#
# replace DEFAULT with your database name
db_name=FSTM
db_files = 80 # SMALL
# db_files = 400 # MEDIUM
# db_files = 1000 # LARGE
db_file_multiblock_read_count = 8 # SMALL
# db_file_multiblock_read_count = 16 # MEDIUM
# db_file_multiblock_read_count = 32 # LARGE
db_block_buffers = 100 # SMALL
# db_block_buffers = 550 # MEDIUM
# db_block_buffers = 3200 # LARGE
shared_pool_size = 3500000 # SMALL
# shared_pool_size = 5000000 # MEDIUM
# shared_pool_size = 9000000 # LARGE
log_checkpoint_interval = 10000
processes = 50 # SMALL
# processes = 100 # MEDIUM
# processes = 200 # LARGE
parallel_max_servers = 5 # SMALL
# parallel_max_servers = 4 x (number of CPUs) # MEDIUM
# parallel_max_servers = 4 x (number of CPUs) # LARGE

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 24 Département Maths-Informatique
log_buffer = 8192 # SMALL
# log_buffer = 32768 # MEDIUM
# log_buffer = 163840 # LARGE
sequence_cache_entries = 10 # SMALL
# sequence_cache_entries = 30 # MEDIUM
# sequence_cache_entries = 100 # LARGE
sequence_cache_hash_buckets = 10 # SMALL
# sequence_cache_hash_buckets = 23 # MEDIUM
# sequence_cache_hash_buckets = 89 # LARGE
audit_trail = true # if you want auditing
timed_statistics = true # if you want timed statistics
max_dump_file_size = 10240 # limit trace file size to 5 Meg each
# Uncommenting the line below will cause automatic archiving if archiving has
# been enabled using ALTER DATABASE ARCHIVELOG.
# log_archive_start = true
# log_archive_dest = disk$rdbms:[oracle.archive]
# log_archive_format = "T%TS%S.ARC"

# If using private rollback segments, place lines of the following


# form in each of your instance-specific init.ora files:
# rollback_segments = (name1, name2)
# If using public rollback segments, define how many
# rollback segments each instance will pick up, using the formula

# of rollback segments = transactions / transactions_per_rollback_segment


# In this example each instance will grab 40/10 = 4:
transactions = 40
II. transactions_per_rollback_segment = 10
# Global Naming -- enforce that a dblink has same name as the db it connects to
III. global_names = TRUE
# Edit and uncomment the following line to provide the suffix that will be
# appended to the db_name parameter (separated with a dot) and stored as the
# global database name when a database is created. If your site uses
# Internet Domain names for e-mail, then the part of your e-mail address after

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 25 Département Maths-Informatique
# the '@' is a good candidate for this parameter value.
# db_domain = us.acme.com # global database name is db_name.db_domain
# define parallel server (multi-instance) parameters
#ifile = ora_system:initps.ora
# define two control files by default
control_files = (ora_control1, ora_control2)
# Uncomment the following line if you wish to enable the Oracle Trace product
# to trace server activity. This enables scheduling of server collections
# from the Oracle Enterprise Manager Console.
# Also, if the oracle_trace_collection_name parameter is non-null,
# every session will write to the named collection, as well as enabling you
# to schedule future collections from the console.
IV. oracle_trace_enable = TRUE
__________________________________________________________________

Correction TP2

I Constituants de la base et paramètres de la SGA


A. Fichiers de la base/rollback segment
Fichiers base (v$datafile)
• SQL> select name, status, enabled from v$datafile;

fichier redo log (v$logfile)


• SQL> select * from v$logfile;

fichier de contrôle
• select member from v$controlfile;

afficher les noms des rollback segment et leur status (dba_rollback_segs)


• SVRMGR> select segment_name, owner, status from dba_rollback_segs;

SEGMENT_NAME OWNER STATUS


------------------------------ --------- ----------------
SYSTEM SYS ONLINE
R01 SYS ONLINE
R02 SYS ONLINE
R03 SYS ONLINE
R04 SYS ONLINE
5 rows selected.

afficher la liste des tablespaces et des fichiers associés (dba_data_files,


dba_tablespaces)

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 26 Département Maths-Informatique

• SQL> select t.tablespace_name tablespace,


2> f.file_name fichier
3> from dba_tablespaces t,
4> dba_data_files f
5> where f.tablespace_name=t.tablespace_name;

B Paramètres de la SGA
A partir de la vue v$sga, visualiser les paramètres de la base
• SVRMGR> show sga
Ou
• SQL> select * from v$sga;

II Redirection des résultats dans des fichiers


Rollback segments dans rollback.txt
• SQL> spool rollback.txt
• SVRMGR> select segment_name, owner, status from dba_rollback_segs;

• SQL> spool off


B. Nettoyage de la base
• SQL> set heading off
• SQL> spool droptab.sql
• SQL> select 'drop table ' || owner || '.' || table_name || '/'
from dba_tables where owner not in ('SYS','SYSTEM');
• SQL> spool off
C. Variables dans var.txt
• SQL> spool var.txt
• SQL> Show all
• SQL> spool off
III Plan d’exécution des requêtes SQL
a) Création de la table contenant le plan d’exécution
(tabaudit.sql)
CREATE TABLE audit_sql(
statement_id char(30),
timestamp date,
remarks char(80),
operation char(30),
options char(30),

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 27 Département Maths-Informatique
object_node char(30),
object_owner char(30),
object_name char(30),
object_instance number,
object_type char(30),
search_columns number,
id number,
parent_id number,
position number,
other long
);
b) Exemple de requête dont le plan est stocké dans la table audit_sql
(explreq.sql)

EXPLAIN PLAN
SET STATEMENT_ID='1'
INTO audit_sql
FOR
SELECT TABLESPACE_NAME, USERNAME, BYTES, MAX_BYTES
FROM dba_ts_quotas
WHERE USERNAME in ('MASTER1','MAITRISE2', 'LICPRO1', 'MOUSSA')
ORDER BY USERNAME;

c) affichage de certaines colonnes décrivant le plan (myaudit.sql)


SET ECHO OFF
SET VER OFF
spool resultat.txt
prompt EXAMEN DES PLANS D'EXECUTION DES REQUETES
prompt TP Maîtrise Infomartique
prompt ******************
prompt
prompt Entrer la reference de la requete analysee:
accept val prompt "->"
col op heading operation format a23
col objn heading "table|/index" format a25
col obi heading "nu.|objet" format 99990
col id format 99
col pid heading p_id format 9990
col p heading ordre format 99990

SELECT operation ||' '|| options op


,object_name ||' '|| object_type objn
,object_instance obi
,id
,parent_id
,position p
FROM audit_sql
WHERE statement_id='&val'
ORDER BY id;
V. spool off

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 28 Département Maths-Informatique
Remarque : - On peut aussi regrouper le b) et le c) dans un même script
- Consulter le fichier resultat.txt

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 29 Département Maths-Informatique

DEUXIEME PARTIE

I. Création/démarrage d’une base de donnée


La préparation d’un fichier d’initialisation (en général initNOMBASE.ORA) est
nécessaire pour créer une base sous Oracle. Ce fichier contient tous les paramètres
ainsi que leurs valeurs (nom de la base, nom de l’instance, la liste des fichiers de
contrôle, le nom du domaine etc…)

I.1 Création d’une base de donné


Pour créer une base, il faut deux étapes :
- installer le logiciel Oracle
- Créer la base avec la commande create database.
Syntaxe de la commande create databse:
create database NomBaseDeDonnees
[controlfile reuse] (lors d’une suppreesion suivie d’une création d’une
BD)
[logfile fichier1 [,fichier2]…] (définit les fichiers de reprise « rdo log file)
[datafiles fichierA [,fichierB]…] (définit les fichiers bases)
[maxlogfiles valeur] (le nombre maximum de fichiers de reprise)
[maxdatafiles valeur] (le nombre max de fichiers de données)
[maxinstances valeur] (le nombre max d’instances pouvant accéder simultanément à la
base)
[archivelog | noarchivelog] (positionne le fonctionnement en mode archivage| non
archivage)
Exemple de fichier complet (sous 8i)
REM *Script de création d'une base de donnees

spool c:\orant\oradata\DB1\logInstall.log
connect internal
startup nomount pfile=c:\orant\database\initDB1.ora
REM *
create databse "DB1"
maxinstances 2
maxlogfiles 32
maxdatafiles 1000
datafile 'c:\orant\oradata\DB1\system01..dbf' size 1024K
logfile 'c:\orant\oradat\DB1\log01.log ' size 512K,
'c:\orant\oradat\DB1\log02.log ' size 512K,
'c:\orant\oradat\DB1\log03.log ' size 512K;

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 30 Département Maths-Informatique
REM * Dictionnaire de donnees
@c:\orant\....\admin\catalog.sql

REM * Procedural components


@c:\orant\....\admin\catproc.sql

create rollback segment SYSROLL tablespace system


storage (initial 25K next 25K minextents 2 maxextents 99);

alter rollback segment SYSROLL online;

create tablespace ROLLBACK


datafile 'c:\orant\oradata\DB1\rbs01.dbf' size 10M
default sorage (
initial 200K
next 200K
pctincrease 0
minextents 2
);

create rollback segment RBS01 tablespace ROLLBACK


storage (initial 500K next 500K minextents 2);

create rollback segment RBS02 tablespace ROLLBACK


storage (initial 500K next 500K minextents 2);

create rollback segment RBS03 tablespace ROLLBACK


storage (initial 500K next 500K minextents 2);

alter rollback segment RBS01 online;


alter rollback segment RBS02 online;
alter rollback segment RBS03 online;

alter rollback segment SYSROLL offline;

create tablespace TEMP


datafile 'c:\orant\oradata\DB1\temp01.dbf' size 10M
default sorage (
initial 100K
next 100K
maxextents UNLIMITED
pctincrease 0
);

create tablespace TOOLS


datafile 'c:\orant\oradata\DB1\tools01.dbf' size 10M
default sorage (
initial 50K
next 50K
maxextents UNLIMITED
pctincrease 0
);

create tablespace DATA


datafile 'c:\orant\oradata\DB1\data01.dbf' size 10M
default sorage (

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 31 Département Maths-Informatique
initial 300K
next 300K
maxextents UNLIMITED
pctincrease 0
);

alter user sys temporary tablespace TEMP;


alter user system default tablespace TOOLS temporary tablespace TEMP;
REM Oracle supplied scripts
@c:\orant\....\admin\catexp.sql
@c:\orant\....\admin\dbmspool.sql
@c:\orant\....\admin\prvtpool.plb
REM * vues du DBA
connect system/manager
@c:\orant\....\admin\catdbsyn.sql
spool off
exit

I.2. Démarrage de la base


La mise en œuvre d’une base de données s’effectue en 3 étapes par utilisation des
commande STARTUP et ALTER DATABASE sous DBA.
1. démarrer l’instance (initialisation de l’environnement de la BD en allouant les
ressources) : la base est dans l’état démarré non montée (NOMOUNT).
Exemple : SQLDBA> STARTUP NOMOUNT
2. le démarrage de la base qui consiste à associer une base à l’instance créée à
l’étape 1. La base est accessible en mode INTERNAL par les utilisateurs qui ont les
privilèges d’administration. Et qui peuvent effectuer des opérations de maintenance
telles que renommer les fichiers de la base ou gérer les fichiers de reprise.
Exemple : SQLDBA> CONNECT INTERNAL
SQLDBA> ALTER DATABASE nom_base MOUNT
3. Ouverture de la base pour rendre ses données accessibles aux utilisateurs. La base
est à l’état ouvert OPEN.
Exemple : SQLDBA> ALTER DATABASE nom_base OPEN
I.3 Arrêt de la base
La fermeture s’effectue en trois étapes :
1. Déconnexion des utilisateurs de la base
2. Détachement de la base de l’instance
3. Arrêt de l’instance
Pour arrêter une base utiliser l’ordre :
SHUTDOWN [option]

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 32 Département Maths-Informatique
Où option peut prendre les valeurs :
- NORMAL : aucune nouvelle connexion permise, terminaison normale des
transactions et arrêt lorsque le dernier utilisateur se déconnecte
- IMMEDIATE : arrêt immédiat sans attente de la fin des transactions en cours, qui
sont alors avortées.
- ABORT : arrêt immédiat sans détachement de la base ni déconnexion préalable des
utilisateurs. C’est un mode de fermeture rapide mais nécessitant une reprise lors du
redémarrage de la base
Exercice : Créer la base de donnée s COMDB suivant :

I.4 Ajout de fichiers, de tablespaces dans la base


I.4.1 Ajout d’un fichier de contrôle
Pour ajouter un fichier de contrôle (par exemple CONTROLE04.CTL), il faut suivre la
procédure suivante :
• arrêter l’instance
• copier avec l’OS un fichier de contrôle existant et le renommant sous le nom de
CONTROLE04.CTL

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 33 Département Maths-Informatique

• ajouter dans le paramètre control_files du fihier d’initialisation ce nouveau fichier de


contrôle puis enregistrer.
• Démarrer la base avec startup.
I.4.2 Ajout d’un fichier log
Pour ajouter un fichier de log (par exemple log4.ORA), on suit les étapes suivantes :
• arrêter l’instance
• démarrer la base en mode mount
• lancer la commande
alter database add logfile member ‘Chemin_complet_du_fichier\log4.ora’ to groupe Numero_groupe

• Vérifier l’état du fichier ajouté avec select * from v$logfile


• Rendre la base ouverte
• Lancer autant de fois que c’est nécessaire l’ordre alter system switch logfile
• Vérifier encore l’état du fichier log ajouté.
I.4.3 Ajout d’un fichier base dans un tablespace
Pour ajouter un fichier base (par exemple user05.ora) il suffit de lancer l’ordre
alter tablespace Nom_tablespace add datafile ‘Chemin_complet\user05.ora’ size taille_init K|M

I.4.4 Ajout d’un tablespace


Pour ajouter un tablespace (par exemple DEV) il suffit de lancer la commande :
create tablespace DEV
datafile ‘Chemin_complet\Nom_fichier’ size taille_init
default storage (initial valeur K|M
next valeur K|M
pctincrease valeur
minextents valeur
maxextents valeur|unlimited)

II Gestion des utilisateurs


II.1 Création
Pour créer un utilisateur, on utilise la commande suivante suivante :
CREATE USER nom_utilisateur
IDENTIFIED BY mot_de_passe
[DEFAULT TABLESPACE nom_tablespace]
[TEMPORARY TABLESPACE nom_tablespace]
[QUOTA [nombre | UNLIMITED] ON nom_tablespace] (limitation ou non d’espace)

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 34 Département Maths-Informatique
[PASSWORD EXPIRE] (demande le changement du mot de passe)
[ACCOUNT {LOCK | UNLOCK}] (Compte bloqué | non bloqué)

II.2 Modification
Pour modifier un utilisateur, utilisez
ALTER USER nom_utilisateur
IDENTIFIED BY mot_de_passe
[DEFAULT TABLESPACE nom_tablespace]
[TEMPORARY TABLESPACE nom_tablespace]
[PASSWORD EXPIRE] (demande le changement du mot de passe)
[ACCOUNT {LOCK | UNLOCK}] (Compte bloqué | non bloqué)

II.3 Suppression
La suppression d’un utilisateur s’effectue par l’ordre :
DROP USER schéma [CASCADE]
Sans l’option CASCADE, l’utilisateur n’est pas supprimé s’il possède des objets.

Atelier 1
1. Créer un utilisateur toto (avec comme mot de passe toto) sans le rattacher à un
tablespace et vérifier par la table dba_users si l’utilisateur toto existe bien.
2. A quel tablespace le système associe l’utilisateur toto (examiner la vue dba_users)
3. Lister l’ensemble des tablespaces et choisir users comme tablespace par défaut et
temp comme tablespace temporaire.
4. L’utilisateur toto peut se connecter, créer ses tables ? Si oui essayer de vous
connecter sous toto et créer une table T (nom char(20)) sinon dites pourquoi.
5. Le nouveau mot de passe de toto est maitrise, faites la modification.

III Contrôle des accès


Ce contrôle comporte plusieurs niveaux :
- Gestion des accès à la base de données
- Gestion des accès aux données de la base
- Limitation des ressources accessibles aux utilisateurs
- Attribution d’accès par défaut

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 35 Département Maths-Informatique
L’accès à la base s’effectue par l’intermédiaire de la notion d’utilisateur (compte oracle) ;
chaque USER est défini par son nom, son mot de passe, un ensemble de privilèges et
profil. A la création de la base, deux utilisateurs sont créés : SYSTEM (qui permet de
créer les autres USER) et SYS qui est propriétaire de la majorité des tables du
dictionnaire ainsi que des vues crées sur ces tables.
Un privilège est le droit attribué à un utilisateur d’exécuter un ensemble particulier
d’ordres SQL ou d’accéder à certains objets de la base; il peut être au niveau système
(autorisation d’effectuer une action particulière) ou au niveau objet (autorisation donnée
par le créateur de l’objet à un autre utilisateur). Il faut noter que le privilège peut être
attribué soit directement à un utilisateur soit à un rôle. Un rôle est un groupement de
privilèges qui peut être attribué
Cinq rôles sont définis dans Oracle8 :
- CONNECT : l’utilisateur peut se connecter à la base de données et manipuler les
objets de la base pour lesquels ils ont préalablement eu un droit de manipulation
(lecture, modification, insertion, suppression)
- RESOURCE : l’utilisateur peut créer ses propres tables, index, procédures,
fonctions et déclencheurs.
- DBA : l’utilisateur possède tous les privilèges système nécessaires à l’administrateur
de la base de données
- EXP_FULL_DATABASE : l’utilisateur peut exporter la base de données
- IMPORT_FULL_DATABASE: l’utilisateur peut importer la base de données

III.1 Gestion des privilèges systèmes


A Création

GRANT {Privilège niveau système | rôle}[,Privilège niveau système |rôle}]…


TO {nom utilisateur | rôle | PUBLIC}[,nom utilisateur | rôle | PUBLIC]…
[WITH ADMIN OPTION] (autorise la transmission du privilège)
PUBLIC désigne tous les utilisateurs.

B. Suppression
REVOKE {Privilège niveau système | rôle}[,Privilège niveau système |rôle}]…
FROM {nom utilisateur | rôle | PUBLIC}[,nom utilisateur | rôle | PUBLIC]…

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 36 Département Maths-Informatique
C. Quelques privilèges systèmes
- ALTER ANY TABLE
- ALTER DATABASE
- ALTER SESSION
- DROP ANY TABLE
- SELECT ANY TABLE
- DELETE ANY TABLE
- LOCK ANY TABLE
- CREATE ANY SYNONYM
- ALTER TABLESPACE
III.2 Gestion des privilèges objets

A Création

GRANT Privilège niveau objet[,Privilège niveau objet ]…


ON [schéma.]objet
TO {nom utilisateur | rôle | PUBLIC}[,{nom utilisateur | rôle | PUBLIC]….
[WITH GRANT OPTION] (autorise la transmission du privilège)
où objet peut être une table, une vue, une séquence, une procédure, une fonction, un
package, une librairie, un type

B. Suppression
REVOKE Privilège niveau objet[,Privilège niveau objet] | ALL PRIVILEGES}
ON objet
FROM {nom utilisateur | rôle | PUBLIC}[,nom utilisateur | rôle | PUBLIC]…
[CASCADE CONSTRAINTS] (utilisables avec references)
[FORCE] (utilisable avec EXECUTE pour les objets ayant des dépendances sur des
tables)

C. Quelques privilèges objets


- SELECT [(col,...)]
- INSERT
- UPDATE [(col,...)]
- DELETE
- EXECUTE (droit d’exécuter une procédure, une fonction ou package)

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 37 Département Maths-Informatique
- ALTER
- READ
- ALL (tous les droits)

Remarque:
La confidentialité est la vocation première d’une vue ; ainsi pour empêcher à un
utilisateur de consulter des colonnes ou des lignes d’une table, le moyen le plus simple
est de créer des vues contenant ces colonnes ou lignes.
Soit la table T(col1, col2, col3, col4) et l’utilisateur U auquel on veut indire l’accès aux
colonnes col3 et col4 :
- CREATE VIEW VUE_T AS SELECT col1, col2
FROM T;
- GRANT SELECT ON VUE_T TO U;

III.3 Audit de contrôle d’accès


Il peut s’avérer intéressant d’observer l’activité de la base en un laps de temps par
exemple pour quantifier le nombre de connexions à la base et leur type. L’administrateur
pourrait être intéressé de savoir le nombre d’utilisateurs connectés durant une période
donnée, les tables accédées, les terminaux à partir desquels il y a eu tentatives de
connexions. Ce type d’observation, dit AUDIT, consiste à garder dans le dictionnaire de
données une trace de certaines actions sur la base ; son intérêt se reflète à trois
niveaux :
- étudier la charge de travail,
- renforcer la sécurité,
- établir des statistiques

On distingue deux types d’audit :


- les audits dits systèmes effectués par le DBA,
- les audits effectués par les propriètaires d’objets

A. Audit système
Il ne peut être lancé que par le DBA :
- les connexions et déconnexions à/de la base (AUDIT CONNECT) sont contenus
dans la vue DBA_AUDIT_CONNECT

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 38 Département Maths-Informatique
- les ordres GRANT, REVOKE, AUDIT, NOAUDIT etc. (AUDIT DBA) sont visibles
dans la vue DBA_AUDIT_DBA,
- les références à des objets non existants (AUDIT NOT EXISTS) ont leur résultats
dans la vue DBA_AUDIT_EXISTS
- les ordres de création, de suppression et de modification de tables, de tablespace,
de Rollback segments, etc… (AUDIT RESSOURCE) ont leurs résultats dans la vue
DBA_AUDIT_RESSOURCE.
Ces vues contiennent essentiellement la date de l’action, le nom de l’utilisateur, le type
de l’action, le résultat de l’action (succées ou échec), le nom de l’objet créé (ordre de
création ) etc. L’arrêt d’un audit s’effectue par la commande NOAUDIT.
Exemples :
- AUDIT CONNECT WHENEVER SUCCESFULL permet de tracer toutes les
connexions et déconnexions réussies
- AUDIT NOT EXISTS permt de tracer les ordres SQL faisant référebnce à des objets
non existants.
- NO AUDIT ALL arrête toutes les traces d’audit.
- AUDIT CREATE TABLE BY maitriseX: audite tous les ordres create table lancés
par l’utilisateur maitriseX
- AUDIT USER ; Audit tous les ordres CREATE USER, ALTER USER ou DROP
USER lancés par n’importe quel utilisateur

B. Audit des propriétaires d ‘objets


Un utilisateur peut auditer toutes les actions effectuées sur ses tables. Il peut examiner
les actions de lecture, de MAJ, d’indexage etc en scrutant la vue USER_AUDIT_TRAIL.
Pour déclencher l’audit, il doit lancer :
AUDIT option1, option2,….ON table1, table2,…
Les options peuvent être : ALTER, INSERT, SELECT, UPDATE, DELETE, LOCK,
AUDIT, GRANT etc.
Exemples :
- AUDIT SELECT, INSERT ON Client BY ACCESS: trace tous les ordres SELECT
et INSERT sur la table Client
- AUDIT ALL ON DEFAULT BY ACCESS : trace toutes les opérations sur toutes les
tables qui seront créées

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 39 Département Maths-Informatique
- NOAUDIT ALL ON DEFAULT : Les tables qui seront créées ne seront pas ausitées ;
cet ordre ne concerne pas les tables déjà auditées.
- Pour arrêter les audits sur des tables en cours d’audit (par exemple Commande,
Produit), il faut lancer NOAUDIT ALL ON Commande, Produit .

Atelier 2
1. On suppose que vous avez deux comptes oracles sur votre machine : maitraisex et
toto. En vous connectant sous maitrisex, accordez le droit de SELECT à toto sur la
table Client, le droit de DELETE sur la table Commande avec possibilité de
transmission et le droit de INSERT sur la table Produit.
2. Examiner les vues DBA_USERS et DBA_TAB_GRANTS
3. Lister le profil des utilisateurs en utilisant la vue DBA_USERS
4. Lister les privilèges sur vos tables en utilisant la vue DBA_TAB_GRANTS

IV Administration réseau
IV.1 Les fichiers de configuration
Tous ces fichiers configurent la partie réseau d'Oracle (SQL*Net ou Net8 pour Oracle8).
Ces fichiers doivent être créés sur le serveur dans le répertoire
$ORACLE_HOME/network/admin (sous Linux)

1) tnsnames.ora

Le fichier TNSNAMES.ORA identifie les services disponibles depuis la machine. Dans


notre cas, nous décrirons toutes les bases de données que le serveur a monté. Pour
chaque base de données sur votre serveur, ajouter une section comme ci-dessous:

orcl.world =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = <NOM LOGIQUE DU SERVEUR ICI ou ADRESSE IP> )
(Port = 1521)
)
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = <NOM LOGIQUE DU SERVEUR ICI ou ADRESSE IP> > )
(Port = 1526)
)
)
(CONNECT_DATA = (SID = ORCL)

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 40 Département Maths-Informatique
)
)

2) Le fichier listener.ora
Ce fichier contient la description des services auxquels d'autres machines sont
autorisées à se connecter et toutes les configurations nécessaires pour l'écouteur du
serveur.

Il contient les sections pour le nom de l'écouteur, son adresse, les bases de données
desservies par l'écouteur et les paramètres de configuration.

Voici un exemple:

# Nom de l'écouteur et les adresses a écouter


LISTENER =
( ADDRESS_LIST =
(ADDRESS =
(PROTOCOL=tcp)
(HOST=<INSERT HOST>)
(PORT=1521)
(COMMUNITY=UK_SUP_TCPIP)
)
(ADDRESS =
(PROTOCOL=ipc)
(KEY=700)
(COMMUNITY=UK_SUP_TCPIP)
)
)

# Liste des services désservis par l'écouteur


SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=orcl)
(ORACLE_HOME=/home/oracle/7.3.3.0.0)
)
)

# Début des paramètres de configuration


TRACE_LEVEL_LISTENER=OFF
TRACE_FILE_LISTENER = "listener"
LOG_FILE_LISTENER = "listener"
CONNECT_TIMEOUT_LISTENER = 10
STOP_LISTENER = YES
DBA_GROUP = dba

3) Le fichier sqlnet.ora
Le fichier sqlnet.ora contient la configuration pour le noeud du réseau. Ceci est
indépendant du nombre de bases de données ou du nombre d'écouteurs. La chose la
plus importante dans ce fichier est la variable de configuration Timeout des Connexions
Mortes.

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 41 Département Maths-Informatique
Le timeout des connexions mortes vérifie chaque processus entrant à la base de
données et assure que le côté client répond toujours. Si le client (de tout type) ne
répond pas, le processus en tâche de fond du serveur Oracle sera tué.

Ceci est très utile si vous avez plusieurs clients qui accèdent à la base de données,
surtout pendant la phase de développement où ces clients ne réussiront certainement
pas à sortir proprement de la base de données Oracle.

Voici une copie de mon fichier sqlnet.ora pour vous servir d'exemple:

TRACE_LEVEL_CLIENT = OFF
sqlnet.expire_time = 30 # le nombre de secondes entre les vérifications des clients.
names.default_domain = world
name.default_zone = world

IV.2 Lancer et Arrêter les Ecouteurs.

Maintenant que la configuration des écouteurs et de SQL*Net est finie, nous pouvons
essayer de connecter la base de données en utilisant la partie réseau. (Avant nous
utilisions l'accès direct à la base de données, alors qu'ici nous simulons une connexion
depuis une machine cliente distante en environnement Linux:

$ lsnrctl (exemple sous Unix)

LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:38:25

Copyright (c) Oracle Corporation 1994. All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> start
Starting /home/oracle/7.3.3.0.0/bin/tnslsnr: please wait...

TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production


System parameter file is /home/oracle/7.3.3.0.0/network/admin/listener.ora
Log messages written to /home/oracle/7.3.3.0.0/network/log/listener.log
Listening on: (ADDRESS=(PROTOCOL=tcp)(DEV=6)(HOST=192.168.1.1)(PORT=1521))
Listening on: (ADDRESS=(PROTOCOL=ipc)(DEV=10)(KEY=700))

Connecting to
(ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production
Start Date 23-FEB-98 20:38:50
Uptime 0 days 0 hr. 0 min. 0 sec

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 42 Département Maths-Informatique
Trace Level off
Security OFF
SNMP ON
Listener Parameter File /home/oracle/7.3.3.0.0/network/admin/listener.ora
Listener Log File /home/oracle/7.3.3.0.0/network/log/listener.log
Services Summary...
orcl has 1 service handler(s)
The command completed successfully
LSNRCTL> exit
Pour arrêter les écouteurs:

$ lsnrctl

LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:43:20

Copyright (c) Oracle Corporation 1994. All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> stop
Connecting to
(ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP))
The command completed successfully
LSNRCTL> exit

Si vous avez une configuration DNS qui ne retourne pas l'adresse IP pour le nom
logique specifié, le lancement et l'arrêt de l'écouteur prendront donc in certain temps. (2-
3 mins. dépendant de la variable timeout du DNS). Si c'est le cas , ne vous inquiétez
pas. Soyez patient.

IV.3 Accès à la base de données via ODBC

Le midleware ODBC est utilisée par plusieurs logiciels tiers sous Windows pour accéder
à une base Oracle (Application développée en C, Ms Word, Ms Excel etc).

V Gestion des objets dans une base répartie


V.1 Concept de database link
1) Syntaxe de create database link:
CREATE PUBLIC DATABSE LINK NomDB_Link -
CONNECT TO USER -
IDENTIFIED BY PASSWD –
USING ‘string’
2) Syntaxe de create synonym
CREATE SYNONYM Nom_synonym FOR NomTable@NomDB_LINK;

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 43 Département Maths-Informatique
L’utilisateur peut lancer une requête SQL sans donner la référence complète de la
table.
TP1 : Configuration de NET8
1. Configuration de l’accès distant avec SQL NET EASY CONFIGURATION
2. Connexion sur une base distante, 2 méthodes
- lancer : SQL login/passwd@Base_distante
- lancer SQL sans argument et remplir convenablement les champs présentés

V.2 Méthodes des copies


TP2 : COPY entre deux bases distantes
1. Connectez vous sur la base distante fstm et faites quelques insertions de tuples
dans les tables créées?
2. Connectez vous sur la base distante fst et copiez la totalité de la table client dans
fst en utilisant la méthode de COPY.
3. Rappel de la syntaxe de copy
COPY FROM user1/passwd2@Base_distante –
TO user2/passw2@Base_distante2 –
REPLACE | CREATE | APPEND NomTable –
USING Requête_SQL;
4. On veut créer des fragments sur la base fst en utilisant le partitionnement vertical de
la table client (provenant de la base fstm) comme suit :
Client_fg1 (numcl, nomcl)
Client_fg_2(numcl, adressecl, pays) ;
Utilisez COPY pour le faire
5 L’utilisateur master1p1 veut créer un fragment ayant pour schéma
Client_fg1 (numcl, nomcl, age)

V.3 Réplication par cliché


Dans une base de données répartie, il se peut que pour des raisons diverses (rupture
de ligne de communication, panne d’un site etc.) des données soient momentanément
inaccessibles aux utilisateurs. Afin de ne pas gêner les éventuels utilisateurs, il vous est
possible de répliquer les données d'une base en créant un cliché (SNPASHOT).
Cette technique permet :

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 44 Département Maths-Informatique
- de créer sur une base répartie un cliché d’une table complète ou partielle d’une
base maître ou même un cliché du résultat d’une requête complexe effectuée sur
le site maître.
- d’utiliser en lecture ou en écriture le cliché
- de créer une copie comme une requête simple si elle est basée sur une seule
table ou complexe si elle fait intervenir plusieurs tables.
- de définir une fréquence de rafraîchissement des données
- de définir le mode de rafraîchissement : compléter le cliché, remplacer le cliché
ou propager uniquement les modifications.
Les snapshot ne sont pas mis à jour régulièrement, mais à des intervalles précis
nommés asynchronous replication. Ces instants sont précisés par le paramètre NEXT
de la commande CREATE SNAP SHOT (dans l'exemple, tout les jours).
Syntaxe de création :
CREATE SNAPSHOT NomCliche
REFRESH
FAST | COMPLETE | FORCE
START WITH date1
NEXT date2
[parameter de stockage]
[FOR UPDATE] AS Requête;
Avec:
FAST : mode de rafraîchissement rapide des lignes modifiées uniquement sur la base
distante ; ce mode utilise un journal de cliché.
COMPLETE : mode rafraîchissement complet qui re-exécute la requête du
snapshot (pas de journal)
FORCE : effectue un rafraîchissement rapide si possible, sinon effectue un
rafraîchissement complet ; c’est l’option par défaut.
START WITH : définit la date de premier rafraîchissement (par défaut de l’exécution de
l’ordre)
NEXT : définit l’intervalle entre deux rafraîchissements ; il s’agit d’une expression de
type date.
Paramètre de stockage : Voir paramètres de stockage de l’ordre de création des
tables ;
Requête : définition du snapshot sous forme de requête SQL.

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 45 Département Maths-Informatique
FOR UPDATE : Pour un cliché modifiable
Pour modifier le snapshot c’est ALTER SNAPSHOT NomCliche …. ; pour supprimer
DROP SNAPSHOT NomCliche
Exemple :
CREATE SNAPSHOT Cliche_Client
REFRESH COMPLETE
START WITH sysdate
NEXT SYSDATE+1
AS select * from Client@Lien_BD;

TP3 : Les clichés sous Oracle


1. Se connecter sur la base FST et créer le cliché (Client_snap) de la table client qui
se trouve sur la base FSTM
2. Faire une mise à jour de la table client sur FSTM
3. Vérifier sur FST si les modifications sont répercutées
4. Reprendre les étapes 1, 2 et 3 mais pour la table commande de FSTM, vous créerez
ici un cliché modifiable.
5. A partir de FST, créer une vue Article_v de la table article de FSTM. Faire des mises
à jour sur article sur FSTM et vérifier si la vue reflète les mises à jour.

Annexe 2: Script SQL de création de table


Base de données exemple
Client (numcl number, nomcl char(20), adressecl char(80), pays char(40)) ;
Article (refart char(10), designation char(40), prix number(8,2)) ;
Depot(nomdepot char(40), nbremagasin number) ;
Stock (numstock number, refart char(10), nomdepot, char(40), qtestock number (9,3)) ;
Commande (numcom number, datecom date, numcl number) ;
Ligne_com(numLC number, numcom, number, refart char(10), qtecom number(9,3)) ;

Script de création des tables

----- Maîtrise et Licence Pro ----


-------------------------------
- TP Oracle (M. SENE) _

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 46 Département Maths-Informatique
-------------------------------
-----Revision creation de table ----
drop table ligne_com;
drop table stock;
drop table depot;
drop table commande;
drop table article;
drop table client;

CREATE TABLE client


(
numcl NUMBER,
nomcl CHAR(20),
adressecl CHAR(80),
pays CHAR(40),
CONSTRAINT PK_numcl PRIMARY KEY (numcl)
);

CREATE TABLE commande


(
numcom NUMBER,
datecom DATE,
numcl NUMBER,
CONSTRAINT PK_numcom PRIMARY KEY (numcom),
CONSTRAINT FK_numcl FOREIGN KEY (numcl) REFERENCES client (numcl)
);

CREATE TABLE article


(
refart CHAR(10),
designation CHAR(40),
prix NUMBER(8,2),
CONSTRAINT PK_refart PRIMARY KEY (refart)
);

CREATE TABLE depot


(
nomdepot CHAR(40),
nombremagasin NUMBER,
CONSTRAINT PK_nomdepot PRIMARY KEY (nomdepot)
);

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007
Université CAD de Dakar Page 47 Département Maths-Informatique

CREATE TABLE ligne_com


(
numLC NUMBER,
numcom NUMBER,
refart CHAR(10),
qtecom NUMBER(9,3),
CONSTRAINT PK_numLC PRIMARY KEY (numLC),
CONSTRAINT FK_numcom FOREIGN KEY (numcom) REFERENCES commande (numcom),
CONSTRAINT FK_refartLC FOREIGN KEY (refart) REFERENCES article (refart)
);

CREATE TABLE stock


(
numstock NUMBER,
refart CHAR(10),
nomdepot CHAR(40),
qtestock NUMBER(9,3),
CONSTRAINT PK_numstock PRIMARY KEY (numstock),
CONSTRAINT FK_refart FOREIGN KEY (refart) REFERENCES article (refart),
CONSTRAINT FK_nomdepot FOREIGN KEY (nomdepot) REFERENCES depot (nomdepot)
);

Cours DBA Oracle Dr Mbaye SENE


Maîtrise Informatique 2006/2007