Académique Documents
Professionnel Documents
Culture Documents
Manuel TP Admin Bases DN Oracle LP
Manuel TP Admin Bases DN Oracle LP
Manuel TP Admin Bases DN Oracle LP
Manuel de TP :
Administration de Bases de Données sous
Oracle
Préparé par :
Idriss CHANA
Enseignant chercheur au Département GI
EST-UMI Meknès
i.chana@umi.ac.ma
Introduction : Dans ce TP nous allons procéder à l’installation d’oracle Client/serveur et puis nous
allons configurer de fichier de résolution du non du service tnnsname.ora coté client et du fichier de
résolution de processus d’écoute listener.ora à l’aide d’Oracle Net manager, nous allons aussi
manipuler la gestion des processus d’écoute par la commande lsnrctl
NB : durant ce TP exécuter les commandes dos (CMD) avec l’option « en tant qu’administrateur
Préparation de l’environnement
Avant l’installation, réaliser un réseau local dans la salle à l’aide de retour, puis configurer vos
machines en attribuant à chacune une adresse IP, choisir une machine comme serveur
Pour s’entrainer à la gestion de Listener, je vous invite à suivre les étapes suivantes :
Étape 1 : Coté serveur :
- Dans les commandes dos (CMD) lancer : lsnrctl
Cette commande va vous rediriger vers une invite de gestion de listener par les commandes
suivantes :
- Configurer un autre listener (du nom est LIST2) à l’aide de l’assistance de configuration
oracle net ou à l’aide de Net manager d’oracle
- À l’aide de la commande lsnrctl, démarrer le nouveau listener LIST2 !
Étape 4 Coté clients :
- par DBCA
- et manuellement
Introduction : Dans ce TP nous allons procéder la création d’une instance base de donnée à l’aide de
l’assistant de configuration de base de données (DBCA) et aussi manuellement en utilisant l’order
create database
NB : Un compte rendu est à remettre au professeur à la fin de la séance contenant les réponses aux
questions Q1 à Q21
On peut lancer l’assistant de configuration de base de données (DBCA) par deux méthodes :
- La première méthode
Aller dans : Démarrer et aller vers Oracle-OraDb11home assistant de configuration de
base de données
- La Deuxième methode :
À partir d’une console DOS (commande cmd ) exécuter cmd en tant qu’administrateur
I.2 Après lancement de DBCA :
Arrêter l'instance
Supprimer les fichiers crées pendant la tentative
Relancer l’ordre create database …… de nouveau
7- Test de différents mode d’ arrêt
- On redémarre la base (soit celle que vous venez de créer ou bien celle de oracle (ORCL-
XE) en mode normal :
- Test avec une session ouverte :
a) Arrêt En mode normal :
SQL> shutdown normal
Les utilisateurs ne sont pas déconnectés, et aucune nouvelle connexion n’est acceptée.
SQL> connect scott/tiger
ERROR:
ORA-01090: shutdown in progress - connection is not permitted
Dès que le dernier utilisateur se déconnecte la base s’éteint.
On crée une table de test à laquelle on applique un « insert », une transaction est donc
en cours. La transaction n’est pas arrêtée tant que l’utilisateur n’est pas déconnecté.
b) En mode Transactional :
shutdown immediate
Base de données fermée.
Base de données démontée.
Instance ORACLE arrétée.
d) En mode Abort
Idem que précédemment
SQL> shutdown abort
Dans ce cas la mise à niveau avec les redo log n’est pas faite contrairement au mode d’arrêt
shutdown immédiate.
- L’utilitaire SQLLOADER
- Transaction et gestion de concurrences.
L’Utilitaire SQL Loader permet de charger des données provenant d’autres sources de données dans Oracle.
Par exemple, si vous avez une table dans FoxPro, ACCESS ou SYBASE ou de toute autre base de données de
tiers, vous pouvez utiliser SQL Loader pour charger les données dans les tables Oracle. SQL Loader va
seulement lire les données à partir de fichiers plats. Donc, si vous voulez charger les données à partir de
FoxPro ou de toute autre base de données ou si vous avez un fichier de données à insérer, vous devez d'abord
convertir ces données en format fichier plat dont les champs sont délimités par un caractère ou fichier plat de
format dont les champs on une longueur fixe et connue, puis utilisez SQL Loader pour charger les données
dans Oracle.
Voici la procédure pour charger les données de base de données tierce dans Oracle en utilisant SQL Loader.
A- Convertir les données dans un fichier plat utilisant la commande de base de données tiers .
B- Créer la structure de la table dans la base de données Oracle en utilisant les types de données appropriés
C- Écrire un fichier de contrôle, décrivant comment interpréter le fichier plat et les options pour charger les
données.
D- Exécuter utilitaire SQL Loader spécifiant le fichier de commande dans l'argument de ligne de commande
Pour mieux comprendre ces étapes, prenons le cas suivant.
Supposant que nous avons dans MS ACCES la table ARTISTE, Cette table contient plus de 4000 lignes
ID INTEGER
NOM TEXT(50)
Question : Comment faire pour migrer ces données de MS-ACCES à une table ayant le même nom ARTISTE
dans oracle.
A- Générer un fichier .csv à partir d’une requête SQL ou importer les données de la tables dans un
fichier .csv dans le champs son délimitées par un caractères ( ‘,’ ou ‘;’ ou bien ‘ |’ ) ; ( ce point est déjà
fait par le prof voir le fichier résultat (data_artist.csv)
B- Se connecter au schéma scott (ou autre) dans ORACLE et créer la table ARTISTE par la commande
suivante :
1- LOAD DATA
2- INFILE 'data_artist.csv'
3- BADFILE 'mal_format.bad'
4- TRUNCATE
5- INTO TABLE ARTISTE
6- FIELDS TERMINATED BY ';' TRAILING NULLCOLS
7- (ID, NOM)
Notes: (Ne pas écrire les numéros de ligne, ils sont destinés à des fins d'explication)
1- La déclaration de LOAD DATA est nécessaire au début du fichier de contrôle.
2- L'option INFILE spécifie où le fichier d'entrée est situé
3- Spécification BADFILE est facultative. Si vous le spécifiez, les mauvais données (données mal
formatées) trouvés pendant le chargement seront stockés dans ce fichier.
4- Vous pouvez utiliser n’ importe quelle option de chargement suivante
- TRUNCATE: fait un TRUNCATE à la table puis charge les nouvelles lignes.
- INSERT: Charge seulement si la table cible est vide
- APPEND: les lignes de charge si la table cible est vide ou non.
- REPLACE: supprimer toutes les lignes existantes dans la table avant de la charger.
5- INTO TABLE, est obligatoire en Spécifiant la table cible
6- Cette ligne indique la façon dont les champs sont séparés dans le fichier d'entrée. Dans notre cas,
les champs sont séparés par des " ;" donc nous avons spécifié " ;" comme délimiteur entre des
champs. Vous pouvez remplacer ce caractère par n’importe quel caractère pour délimiter les
champs. Les délimiteurs les plus utilisés sont virgule outre que le point-virgule" ;" on trouve la
virgule "," , les deux points ":", le pipe "|", etc.
- NULLCOLS signifie que si la dernière colonne est nulle alors traiter cette valeur comme nulle,
sinon, SQL LOADER traitera cette ligne comme mauvaise et la dirigera vers le fichier ‘dad’
7- Dans cette ligne spécifiez les colonnes de la table cible.
D- Lancer le SQLLOADER à l’aide de la commande suivante :
- sqlldr userid=scott/tiger control=control_artist.txt rows=10 errors=500
NB : Le fichier control_artist.txt vous sera communiqué par le professeur.
Questions : 1- changer la valeur de rows. Qu’est ce que vous constater ?
2- changer la valeur de errors. Qu’est ce que vous constater ?
Partie II) Transaction et gestion de concurrences.
Une transaction est une suite d’instruction SQL qui se termine par un commit (validation) ou
un Rollback (annulation). Lorsqu’il y a plusieurs transactions concernant les mêmes objets ou
enregistrements on parle des accès concurrentiels qui nécessitent une gestion de verrouillage
pour éviter l’incohérence et éviter aussi le ralentissement des performances et l’inter-
blocage. Le SGBD Oracle offre de plusieurs options de gestion de transaction et de la
concurrence.
1- Les Transactions READ ONLY et READ WRITE
1.1 La transaction READ ONLY
Ci-dessous la caractéristique de cette transaction :
- La transaction devient en lecture seule (pas d’INSERT, UPDATE, DELETE)
- Garantit la cohérence en lecture pour toute la transaction.
- Cette transaction voit seulement les modifications de la base effectuées avant son début
- Utile pour des transactions qui font beaucoup de lectures successives sur des objets
modifiés simultanément par d’autres utilisateurs.
- Pour activer cette option on lance la commande suivante : SET TRANSACTION READ ONLY
1.2 La transaction READ WRITE
Cette transaction est l’option par défaut d’oracle. Ci-dessous ces caractéristiques La transaction
devient en lecture et écriture possibilité d’INSERT, UPDATE, DELETE.
- La lecture dans cette transaction non reproductible car cette transaction voit les autres
modifications effectuées par les autres utilisateurs.
- Utile pour les bases de données ou il y a très peu de transactions.
- Pour activer cette option on lance la commande suivante : SET TRANSACTION READ
WRITE
Dans S1 et S2 :
g- Écrire la requête qui “Donne le nom et la date d’embauche et le salaire des Employés
ayant l’id entre 102 et 110” sur la table EMPLOYEES.
h- Est-ce que vous obtenez la même chose dans les deux sessions ?
2.2 Tache 2 : READ ONLY
Dans S1
vous exécutez la transaction en mode lecture seule ( READ ONLY) en consultant la ligne de
l’employee_id=105 comme suit :
SQL>SET TRANSACTION READ ONLY
SQL> select * from employees where employee_id=105
a- Quel est le salaire de cet employé ?
b- Laisser la transaction ouverte ( et bien sur la session aussi ouverte)!
Dans S2,
c- réaliser une transaction qui faite une MAJ de salaire de l’employee_id=105 à 33333
update employees set salary =33333 where employee_id=105 ;
commit ;
d- Quel est le nouveau salaire de employee_id=105 ?
Dans S1
e- Est ce que l’utilisateur dans S1 va voir ce changement ? (consulter la table EMPLOYEES
à partir de S1)
f- Terminer la transaction dans S1 (commit ;), puis visualiser de nouveau le salaire de
employee_id=105, commenter ?
2.3 Tache 3 : READ WRITE
Refaire les mêmes étapes (requêtes) que dans la tache 1 en précisant le mode READ
WRITE dans S1. Quelle est la différence ?
2.4 Tache 4 : Atteinte mortelle ou interblocage (DEADLOCK)
On dit qu’il y a un inter blocage si les transactions qui sont en cours sont interdépendantes
Exemple : supposant qu’on a 3 transactions T1, T2 et T3 et que T1 attend la fin de T2 et T2
attend la fin de T3 et T3 attend la fin de T1, cette situation mène à un inter blocage
T2
T3
T1
a- Ouvrir au moins 3 sessions (S1, S2, S3) sur le schéma HR et lancer 3 transactions en
situation d’inter-blocage(DEADLOCK)
b- Qu’a fait oracle pour pallier à cet inter-blocage ?
TP4: ADMINISTRATION BASE DE DONNÉES ORACLE LP DSIC
Exercice 3 : tablespace
Dans votre base de données