Vous êtes sur la page 1sur 71

ADMINISTRATION DES BASES DE

DONNEES

Pr BOUZIDI

2008-2009

Objectifs

 Comprendre le rôle et l'importance de


chacune des tâches de l'administration des
bases de données
 Maîtriser l’administration de la base de
données Oracle

D.BOUZIDI 2
Plan du cours
 Introduction
 Architecture conceptuelle de la BD Oracle
 Installation et configuration du logiciel Oracle
Database 10g
 Contrôle la base de données
 Gestion du fichier de contrôle
 Gestion des fichiers de journalisation
 Gestion des structures de stockages
 Sauvegarde / récupération :IMPORT/EXPORT
 Chargement de données : SQLLOADR
 Sauvegarde et restauration à l’aide de backup

Introduction
Rappel (1)
 Base de données (BD) : ensemble de données
organisé en vue de son utilisation par des
programmes correspondant à des applications
distinctes et de manière à faciliter l'évolution
indépendante des données et des programmes.
 SGBD : ensemble de programmes qui permettent
l'accès à une BD
 Une table est l’élément de base d’une BD
 Constituée de lignes de données
 Chaque ligne comporte une ou plusieurs colonnes
 Une colonne unique d'une ligne unique est appelée champ

Ligne

Colonne
Table Champ
D.BOUZIDI 5

Rappel (2)

 base de données relationnelle : Entité/Relation


 Contraintes d'intégrité : utilisées pour garantir
la validité des données stockées dans les tables
 Les types de contrainte suivants :
 NOT NULL
 UNIQUE
 PRIMARY KEY
 FOREIGN KEY

 SQL : langage de programmation interactif standard


permettant d'extraire et de mettre à jour les infos d'une BD
(interrogation, màj, contrôle d’accès, cohérence, intégrité, …)
D.BOUZIDI 6
Tâches d'un administrateur de BD (1)

 Rôle SI (Système d’Information) : Administration


et gestion efficace des données (lors de la mise en
oeuvre de nouveaux systèmes basés sur les Bases
de Données)
 éviter la redondance des données
 éviter un mauvais transfert d'un système à l'autre
 assurer la bonne compréhension des données
 implémenter la conception de la BD

D.BOUZIDI 7

Tâches d'un administrateur de BD (2)

 Rôle technologique (Niveau physique) :


Administration et gestion efficiente des BD (lors de
la mise en oeuvre de nouveaux serveurs de BD ou
de nouvelles BD)
 Evaluer le matériel pour le serveur de base de
données
 Installer le logiciel Oracle
 Planifier la BD
 Créer et ouvrir la BD
 Sauvegarder la BD
 Récupérer la BD suite à une panne
 Gérer de la sécurité
 Surveiller les performances de la BD

D.BOUZIDI 8
Architecture conceptuelle de la
BD Oracle

Objectifs

 Maîtriser les concepts et le


fonctionnement de l’architecture oracle :
 Instance
 Fichiers de données,
 Fichiers de paramétrage

D.BOUZIDI 10
Présentation
Processus Processus Instance
utilisateur serveur
Zone de mémoire
Mémoire SGA partagée
PGA
Fichier

Fichier
ALERT

Trace

Fichiers de Fichiers
contrôle de journalisation
Fichiers de
Paramètres

Fichier

données
PWD
Fichier

Base de données

D.BOUZIDI 11

Présentation

 L'instance indispensable au bon


fonctionnement d'une base de données
Oracle
 Les fichiers de données
 Les fichiers de données facultatifs (fichier
d'initialisation, fichier de mots de passe,
etc...)

D.BOUZIDI 12
L’instance
Instance
Zone de mémoire
Mémoire SGA partagée
Cache des tampons Cache library
tampons Journalis
des DATA ation Cache dictio D

SMON PMON DBW LGWR ARCH CKPT

L'instance est la composition de 2 sous ensembles :


• Une zone mémoire (SGA) pour stocker les données issues des
fichiers de données sur le disque dur. Afin de pouvoir les
partager entre les différents processus.
•Des processus d'arrière plan :servent à gérer les transferts
de données entre la mémoire et le disque dur, plus d'autres
actions nécessaires au bon fonctionnement de la base de
données.

D.BOUZIDI 13

System global Area

Instance
Zone de mémoire
Mémoire SGA partagée
Cache des tampons Cache library
tampons Journalis
des DATA ation Cache dictio D

SMON PMON DBW LGWR ARCH CKPT

La SGA ou System global Area


1. Shared Pool : zone de mémoire partagée
2. Database Buffer Cache : cache de tampons de données
3. Redo Log Buffer : tampon de journalisation
La taille totale de la mémoire SGA est définie par le paramètre SGA_MAX_SIZE
Variable_size : sont deux variables exprime la taille de l’espace réservé la SGA
fixedSize 14
D.BOUZIDI
System global Area
La SGA ou System global Area
 Shared Pool : utilisée pour partager les informations sur
les objets de la base de données ainsi que sur les droits
et privilèges accordés aux utilisateurs.
se découpe en 2 blocs :
 La Library Cache : stocke les informations sur les
ordres SQL exécutés récemment dans une zone SQL
Cache qui contiendra le texte de l'ordre SQL, la version
compilée de l'ordre SQL et son plan d'exécution.
 Le Dictionnary Cache : contenant les définitions des
objets de la base de données qui ont été utilisé
récemment. Permettra au serveur Oracle de ne pas
avoir à aller chercher ces informations sur le disque à
chaque exécution d'une requête SQL .

D.BOUZIDI 15

System global Area


La SGA ou System global Area
 Database Buffer Cache :
• Sert à stocker les blocs de données utilisés récemment
• Fonctionne selon le principe dit du bloc ancien.
Sa taille est définie par deux paramètres
 DB_BLOCK_SIZE : défini lors de la création de la base de
données, représente la taille d'un bloc de données Oracle.
Celui-ci est défini de manière définitive et ne pourra plus
être modifié.
 DB_BLOCK_BUFFERS : défini le nombre de blocs Oracle qui
pourront être contenus dans le Database Buffer Cache.
 Ce paramètre est devenu obsolète à partir de la version 9i et
a été remplacé par DB_CACHE-Size. Exprimé en octets ce
paramètre modifiable dynamiquement

alter system set db_cache_size=100M;


D.BOUZIDI 16
System global Area
La SGA ou System global Area
 Redo Log Buffer : sert exclusivement à enregistrer toutes
les modifications apportées sur les données de la base.
 Mémoire de type circulaire, et dont on pourra changer la
taille avec le paramètre LOG_BUFFER
 Oracle ne pourra écraser les données contenues dans ce
buffer que si elles ont été écrites dans les fichiers
REDOLOG FILE
 Le paramètre définissant la taille de Redo log buffer est
log_buffer

D.BOUZIDI 17

Program global Area


Processus Processus Instance
utilisateur serveur
Zone de mémoire
Mémoire SGA partagée
PGA

 Mémoire non partagée.


 seulement utilisée par des processus serveur ou d'arrière plan
 allouée lors du démarrage du processus et désallouée lors de
l'arrêt du processus.
Elle contient :
 La zone de tri : Appelée SORT AREA.
 Les informations de sessions, les privilèges de l'utilisateur
 Le Stack Space : Cette zone contiendra toutes les autres
variables d'environnement et de session de l'utilisateur
D.BOUZIDI 18
Les processus d'arrière plan
Instance
Zone de mémoire
Mémoire SGA partagée
Cache des tampons Cache library
tampons Journalis
des DATA ation Cache dictio D

SMON PMON DBW LGWR ARCH CKPT

 Le processus SMON (System Monitor) sert à :


 Corriger les plantages de l'instance
 Vérifier la synchronisation des données .
 Si l'instance plante :
 Rejouer des transactions de REDO LOG FILE validées
mais non enregistrées sur le disque dur
 Ouvrir la BD pour les utilisateurs les informations non
valides ne sont pas accessibles
 Annuler ttes les transactions non validés
 SMON sert à nettoyer les segments TMP et défragmente les
fichiers de données
D.BOUZIDI 19

Les processus d'arrière plan


 Le processus PMON (Process Monitor) dédié aux
utilisateurs, il sert à :
 annuler les transactions d'une session (lors d'un plantage
de la session par exemple)
 relâcher tous les verrous posés par la session,
 relâcher toutes les ressources détenues par la session.
 Le processus DBWR (DataBaseWriter) dédié à :
 l'écriture du Database Buffer Cache dans les fichiers de
données
 vérifier en permanence le nombre de blocs libres dans le
Database Buffer Cache afin de laisser assez de place de
disponible pour l'écriture des données dans le buffer
Le processus DBWR se déclanche :
 Lorsque le nombre de bloc dirty atteint une certaine limite
 Lorsqu'un processus recherchant de blocs libres dans le
Database Buffer Cache, et qu'il n’ a trouvé.
 Lors de timeout (3 secondes par défaut)
 Lors d'un checkpoint
D.BOUZIDI 20
Les processus d'arrière plan
Le processus LGWR : va écrire les informations contenues dans
le REDO LOG Buffer dans les fichiers REDOLOG FILE.
Il se déclanche :
 Qd une transaction est terminée avec un COMMIT
 Qd le REDO LOG Buffer est au 1/3 plein (paramétrable)
 Qd il y a plus de 1Mo d'infos de log contenues dans le buffer

Le processus CKPT : sert à mettre à jour les en-têtes des


fichiers de données, et les fichiers de contrôle CONTROL FILE
afin de spécifier que l'action de CHECKPOINT s'est bien
déroulée

Le processus ARCH : copie un fichier REDO LOG FILE à un


autre emplacement.
 La copie se déclenche automatiquement en mode
ARCHIVELOG lors du changement de groupe de REDO LOG
FILE (en mode NOARCHIVELOG le processus n'existe pas).

D.BOUZIDI 21

Exécution des requêtes


Une requête SELECT : Le client se connecte au serveur, ce qui
génère la création d'un processus serveur.
L’exécution d’une requête SELECT s’effectue en trois phases :
 Le parsage :
 Vérifier l’existence d’une requête identique (Algorithme de
Hachage) dans la LIBRARY CACHE
 Vérifier la syntaxe de la requête, les noms des objets et les
privilèges de l’utilisateur (DICTIONNARY CACHE)
 Verrouiller les objets en question durant la phase de
parsage afin d'éviter toutes modifications de structure.
 Générer le meilleur plan d'exécution de la requête qui sera
enregistré dans LIBRARY CACHE afin d'optimiser les
prochaines exécutions de la requête.
 L'exécution : Le serveur exécute la requête et récupère les données
 Le fetch
 Récupération des lignes et renvoie au processus utilisateur
sous leur forme brute. (le formatage se fait au niveau du
client selon les paramètres définis par l’utilisateur
D.BOUZIDI 22
Exécution des requêtes
Une requête DML :
 Le parsage :
 Le même scénario que pour une requête SELECT.
 L'exécution :
 Pour assurer une bonne cohérence des données,
création par le serveur
 Une image avant : utile pour les autres utilisateurs ou
en cas d’annulation, enregistrée dans le segment
ROLLBack
 Une image après : utile pour la transaction en cours.

D.BOUZIDI 23

Exécution des requêtes


 Un SCN (System Change Number) est assigné à chaque transaction
qui est commitée dans le but de l’identifier de manière unique.
 Ce numéro est enregistré dans les segments de Roll back ainsi que
dans les fichiers de redo log.
 Il est également utilisé comme une marque temporelle (Timestamp)
pour permettre à la base de données de synchroniser les données.
 Les étapes qui constitue cette action de commit :
 Un process serveur enregistre une ligne COMMIT accompagnée de
son SCN dans le buffer de redo log.
 Le process LGWR écrit les entrées du buffer de redo log dans
les fichiers de redo log en commençant par la ligne de COMMIT
((l’écrire des données dans les fichiers de données demande
d’écrire les blocs entiers et non les seuls changements)
 Le process serveur enregistre les informations indiquant que la
transaction est terminée. Les ressources verrouillées dans les
tables et les enregistrements sont alors libérées.
 Le process serveur informe le process utilisateur de la
fin du COMMIT.
D.BOUZIDI 24
Les comptes d’administration
 Deux comptes utilisateur DBA son créés automatiquement et ont le
rôle DBA :
- Le compte SYS : Créé avec tous les privilèges systèmes. Le
schéma de SYS stocke toutes les tables et les vues du
dictionnaire de base de données. (que SYS qui peut modifier ou
créer de table dans ce schéma)
- Le compte SYSTEM : Créé avec tous les privilèges systèmes. Le
schéma de SYSTEM stocke les tables et les vues
administratives, ainsi que des informations administratives
propres à certains produits Oracle supplémentaires.

D.BOUZIDI 25

Installation et configuration du
logiciel Oracle Database 10g
Objectifs

 Connaître la configuration requise pour le système


 Utiliser l'architecture Optimal Flexible Architecture
(OFA)
 Installer et configurer le logiciel avec Oracle
Universal Installer

D.BOUZIDI 27

Configuration système
requise

 512 Mo de mémoire physique (RAM)


 1 Go d'espace de swap
 400 Mo d'espace disque utilisé comme espace
temporaire (/tmp ou \Temp)
 1,5 Go d'espace disque pour le logiciel Oracle
 1,5 Go d'espace disque pour la base de données
préconfigurée

D.BOUZIDI 28
Architecture OFA (Optimal
Flexible Architecture)
 L’objectif de l'architecture OFA est de :
 définir une organisation des répertoires (application,
base de données, …)
 recommender une convention de nomage des fichiers
 OFA permet de faciliter les tâches
d'administration répétitives :
 basculement entre plusieurs bases de données Oracle
 gestion et administration adéquate de la croissance de la
base de données
 Contribution à élimination de la fragmentation de
l'espace libre

D.BOUZIDI 29

Architecture OFA (Optimal


Flexible Architecture)
 Définir les points de montage dans le cas
de system UNIX:
 /u01
 /disk01

 Nommer les répertoires :


 /u01/app/oracle
 /u01/app/applmgr
 Nommer les fichiers :
 Fichiers de contrôle : controln.ctl
 Fichiers de journalisation : redon.log
 Fichiers de données : tn.dbf

D.BOUZIDI 30
Les variables d'environnement
 ORACLE_SID : nom de l'instance (par défaut ORCL)
 ORACLE_HOME : répertoire de base contenant le
logiciel Oracle
 ORACLE_BASE : base de la structure de répertoires
Oracle pour l'architecture OFA
 NLS_LANG : paramètres de langue, de territoire et
de jeu de caractères client

D.BOUZIDI 31

Démarrage de Oracle Universal Installer

Lancement de Installer d’oracle

D.BOUZIDI 32
Emplacement et type d’installation

Liste des produits installés

Choix de l’emplacement et du
type de l’installation

D.BOUZIDI 33

Lancement de l’installation

 Deux Messages Box affichant des erreurs


 A 43% de l’installation, cliquer sur OK
 Un autre à 63%, cliquer sur reéssayer

D.BOUZIDI 34
Fin de l’installation

D.BOUZIDI 35

Contrôle la base de données


Database 10g
Objectifs

 démarrer et arrêter des outils : iSQL*Plus et


Enterprise Manager Database Control
 démarrer et arrêter le processus d'écoute Oracle
 démarrer et arrêter Oracle Database 10g

D.BOUZIDI 37

Démarrer et arrêter
iSQL*Plus

$ isqlplusctl start
iSQL*Plus 10.1.0.2.0
Copyright (c) 2004 Oracle. All rights reserved.
Starting iSQL*Plus ...
iSQL*Plus started.

$ isqlplusctl stop
iSQL*Plus 10.1.0.2.0
Copyright (c) 2004 Oracle. All rights reserved.
Stopping iSQL*Plus ...
iSQL*Plus stopped.

D.BOUZIDI 38
Structure de gestion
 Les trois composants de la structure de
gestion d'Oracle Database 10g sont les
suivants :
 Instance de base de données
 Processus d'écoute
 Interface de gestion (Database Control)

Database
Control Listener

D.BOUZIDI 39

Démarrer et arrêter Database


Control
$ emctl start dbconsole
TZ set to US/Pacific
Oracle Enterprise Manager 10g Database Control Release 10.1.0.2.0
Copyright (c) 1996, 2004 Oracle Corporation. All rights reserved.
http://edrsr9p1.us.oracle.com:5500/em/console/aboutApplication
Starting Oracle Enterprise Manager 10g Database Control
...................... started.
------------------------------------------------------------------
Logs are generated in directory
/u01/app/oracle/product/10.1.0/db_1/edrsr9p1.us.oracle.com_orcl/sy
sman/log

$ emctl stop dbconsole


TZ set to US/Pacific
Oracle Enterprise Manager 10g Database Control Release 10.1.0.2.0
Copyright (c) 1996, 2004 Oracle Corporation. All rights reserved.
http://edrsr9p1.us.oracle.com:5500/em/console/aboutApplication
Stopping Oracle Enterprise Manager 10g Database Control ...
... Stopped.

D.BOUZIDI 40
Accéder à Database Control

D.BOUZIDI 41

Page d'accueil Database

D.BOUZIDI 42
Modifier le statut du processus
d'écoute

D.BOUZIDI 43

Etapes des procédures


de démarrage et d'arrêt

DEMARRAGE OUVERTURE
Ouverture de tous les fichiers
conformément au fichier de
MOUNT contrôle de cette instance.

Ouverture du
fichier de contrôle
NOMOUNT de cette instance.

Démarrage
de l'instance.
ARRET ARRET

D.BOUZIDI 44
Options d'arrêt

Mode d'arrêt A I T N

Permettre de nouvelles connexions x x x x

Attendre la fin des sessions en cours x x x o

Attendre la fin des transactions en cours x x o o

Imposer un point de reprise et fermer les fichiers x o o o

Mode d'arrêt :
A Abort I Immediate x NON
T Transactional N Normal o OUI

D.BOUZIDI 45

Différents types d'arrêt

Transfert Arrêt en Arrêt en Arrêt en


de fonds mode mode mode
Normal Immediate Transactional
Vérification de
1 soldes
Arrêt de
Ajout de nouveaux
2 la base de
fonds
données
Retrait de fonds de
3 l'ancien compte

Validation Arrêt de la base


4 de données
Déconnexion Arrêt de la base
5 de données

D.BOUZIDI 46
Options SHUTDOWN
Pendant les
opérations
 Vers le bas :  Vers le
 Le cache de SHUTDOWN haut :
tampons de la NORMAL  Pas de
base de données ou
récupération
SHUTDOWN
est écrit dans les d'instance
TRANSACTIONAL
fichiers de données ou
 Les modifications SHUTDOWN
non validées IMMEDIATE
sont annulées
 Les ressources
sont libérées
Base de données
cohérente
(base de données propre)

D.BOUZIDI 47

Options SHUTDOWN

Pendant les
 Vers le bas : opérations Vers le haut :
 Les mémoires SHUTDOWN ABORT
 Les fichiers de
tampon ou journalisation en
modifiées ne échec d'une ligne sont
sont pas écrites instance utilisés pour
dans les
ou réappliquer
STARTUP FORCE les modifications
fichiers de
données  Les segments
 Les d'annulation
modifications sont utilisés
non validées ne pour annuler les
sont pas modifications
Base de données non validées
annulées incohérente
 Les ressources
(base de données "dirty")
sont libérées
D.BOUZIDI 48
Options SHUTDOWN
STARTUP [Option]

 NOMOUNT : Créé la SGA et démarre les processus en arrière


plan mais ne permet pas l'accès à la base (reste un OPEN à faire).
 MOUNT : Monte la base pour certaines activités DBA mais ne
permet aucun accès à la base.
 OPEN : Permet aux utilisateurs d'accéder à la base.
 EXCLUSIVE : Autorise l'instance courant seulement à accéder à
la base.
 PFILE : Spécifie le fichier d'initialisation à prendre en compte.
 FORCE : Annule l'instance courante avant d'effectuer un
démarrage normal.
 RESTRICT : Autorise seulement l'accès aux utilisateurs avec le
privilège RESTRICTED SESSION.
 RECOVER Démarre la restauration media quand la base
démarre.

D.BOUZIDI 49

Exemple de commande démarrage et


d’arrêt de la base de données
 Démarre l'instance et ouvre la base de données :

STARTUP PFILE=init015.ora

 Fait passer la base de données de l'état NOMOUNT à


MOUNT :

ALTER DATABASE ORCL MOUNT;

• Ouvert la base de données en mode lecture seule


(READ ONLY) :
ALTER DATABASE ORCL OPEN READ ONLY;

 Arrête de l ’instance et la base de données :

SHUTDOWN Immediate;

D.BOUZIDI 50
Ouvrir une base de données en
mode lecture seule (READ ONLY)
 Toute base de données peut être ouverte en mode
lecture seule.
 Dans ce mode, vous pouvez :
 lancer des interrogations,
 effectuer des opérations de tri sur disque
avec des tablespaces gérés en local,
 utiliser des fichiers de données hors ligne
et en ligne, et non des tablespaces,
 récupérer des fichiers de données hors
ligne et des tablespaces.

D.BOUZIDI 51

Fichier de paramètres
d'initialisation
Instance
Zone de mémoire
Mémoire SGA partagée

init001.ora Cache des tampons Cache library


tampons Journalis
Paramètres

des DATA ation Cache dictio D


Fichier

SMON PMON DBW LGWR ARCH CKPT

SQL> CONNECT sys/PwdSys AS SYSDBA


SQL> STARTUP
PFILE=C:\oracle\product\10.1.0\admin\orcl\pfile\init001.ora

D.BOUZIDI 52
Fichier de paramètres
d'initialisation
 Modifier les paramètres de la session en cours :
Alter session set nomPar = valPar;

 Modifier les paramètres pour toutes les sessions :


Alter system set nomPar = valPar;

 On peut vérifier la valeur d’un paramètre soit par la vue


V$PARAMETER (Pour les paramètres de session) ou
V$SYSTEM_PARAMETER (Pour les paramètres système). Les
champs ISSES_MODIFIABLE, ISSYS_MODIFIABLE,
ISMODIFIED et ISADJUSTED sont les champs de ces vues
concernant le statut de ces paramètres.

D.BOUZIDI 53

Fichier de paramètres
d'initialisation binaire SPFile
Le fichier SPFILE (Server Parameter File) est un fichier binaire,
permet stocker les modifications des paramètres faites par
Oracle, de manière à toujours garantir une cohérence entre le
contenu du fichier et les modifications effectuées avec ALTER
SYSTEM
 Toute modification de ces fichiers entraîne leur corruption, ce
qui a pour conséquence l’échec du démarrage de l’instance ou
la panne de l’instance active.
 Emplacement : show parameter spfile

 Exporter le contenu du spfile à partir du fichier pfile :


Create spfile from pfile;

 Modifier les paramètres :


Alter system set nomPar = valPar scope=spfile;

 Supprimer un paramètre du fichier spfile


Alter system reset nomPar scope=spfile;
D.BOUZIDI 54
Utiliser les paramètres

 Dimensionnez la mémoire SGA.


 Définissez les valeurs par défaut de la BD et de l'instance.
 Définissez les limites relatives aux utilisateurs ou aux
processus.
 Définissez les limites relatives aux ressources de la BD.
 Définissez les divers attributs physiques de la BD, tels que
la taille des blocs.
 Indiquez l'emplacement des fichiers de contrôle, des
fichiers journaux archivés, du fichier ALERT et des fichiers
trace.

D.BOUZIDI 55

Exemple de fichier de paramètres


# Initialization Parameter File: initU15.ora
db_name = U15
control_files = (/DISK1/control01.con,
/DISK2/control02.con)
db_block_size = 8192
db_block_buffers = 2048
shared_pool_size = 52428800
log_buffer = 64K
processes = 50
db_files = 1024
log_files = 10
max_dump_file_size = 10240
background_dump_dest = (/home/disk3/user15/BDUMP)
user_dump_dest = (/home/disk3/user15/UDUMP)
core_dump_dest = (/home/disk3/user15/CDUMP)
rollback_segments =
(r01,r02,r03,r04,r05,r06,r07,r08)
... 56
D.BOUZIDI
Quelques paramètres
 BACK_GROUND_DUMP_DEST :Emplacement où les fichiers traces des
processus en arrière plan sont enregistrés.
 USER_DUMP_DEST Emplacement où les fichiers traces sont créés.
 CONTROL_FILES : Noms des fichiers de contrôle.
 DB_CACHE_SIZED : taille du tampon de données, (remplace le paramètre
DB_BLOCK_BUFFERS définissant le nombre de blocs mis en cache dans la
SGA, paramètre obsolète à partir de la version 9i)
 DB_NAME : Identifiant de la base de données de 5 caractères ou moins. (seul
paramètre nécessaire à la création d'une base).
 SHARED_POOL_SIZE : Taille en octets de la zone de partage.
 IFILE : Permet de référencer un autre fichier de paramètre à imbriquer dans
la définition.

 LOG_BUFFER : Nombre d'octets alloués au buffer redolog dans la SGA.


 MAX_DUMP_FILE_SIZE : Taille maximum des fichiers trace, spécifiée en
nombre de blocs de l'OS.
 PROCESSES : Nombre de processus de l'OS pouvant se connecter
simultanément à l’instance.
 SQL_TRACE : Active l’outil de suivi SQL pour chaque session utilisateur.
 TIMED_STATISTICS : Active ou non le minutage dans les fichiers trace et
sur les écrans.

D.BOUZIDI 57

Vues dynamiques des performances


 Sont gérées par le serveur Oracle et mises à jour en permanence.
 Contiennent des données sur les structures de disque et de
mémoire.
 Contiennent des données utiles pour le réglage des performances.

 Peuvent être accessibles en mode NOMOUNT


 Sont associées à des synonymes publics portant le préfixe V$.

 v$fixed_table contient le nom de toutes les vues disponibles


 V$PARAMETER : des infos sur les paramètres d'initialisation
 V$SYSTEM_PARAMETER : des infos sur les paramètres
Mémoire d’initialisation et leurs modification éventuelles
SGA
 V$SGA : des infos sur la SGA
 V$OPTION : la liste des options installées sur le serveur Oracle
 V$PROCESS : des infos sur les processus actifs courant
 V$SESSION : des infos sur la session courante
 V$VERSION : Liste le numéro de version et les composants
 V$INSTANCE : Affiche l'état de l'instance courante

D.BOUZIDI 58
Afficher les vues dynamiques
des performances
OUVERTURE

Dictionnaire
de données
MOUNT

Lecture des données


sur disque
NOMOUNT

Lecture des données


en mémoire
ARRET

D.BOUZIDI 59

Affichage des paramètres


 Afficher les valeurs des paramètres en cours
 Exécutez la commande :
SHOW PARAMETER control
 Interrogez la vue dynamique des performances
V$PARAMETER :
SELECT name FROM v$parameter WHERE name LIKE '%control%';

 Certains paramètres d'initialisation peuvent être modifiés


pendant l'exécution d'une instance (grâce aux commandes
Alter session et Alter system).

ALTER SESSION SET SQL_TRACE=true; //session courante

ALTER SYSTEM SET TIMED_STATISTICS=true;

ALTER SYSTEM SET SORT_AREA_SIZE=131072 DEFERRED;


// DEFERRED Indique que le paramètre ne sera modifié qu'à
partir de la prochaine session.

D.BOUZIDI 60
Gestion des sessions
 Activer et désactiver une session en mode restreint
 Exécutez la commande STARTUP pour restreindre
l'accès à une base de données :
STARTUP RESTRICT
 Exécutez la commande ALTER SYSTEM pour mettre
une instance en mode restreint :
ALTER SYSTEM ENABLE RESTRICTED SESSION;
 Interrompre une session
 Dans la vue dynamique des performances V$SESSION,
identifiez la session à interrompre :
SELECT sid, serial# FROM v$session WHERE
username='SCOTT';
 Exécutez la commande ALTER SYSTEM :
ALTER SYSTEM KILL SESSION '7,15';

D.BOUZIDI 61

Fichiers ALERT et TRACE


 Les fichiers trace peuvent être écrits par les
processus serveur et les processus d'arrière-
plan.
 Le serveur Oracle vide les informations relatives
aux erreurs dans des fichiers trace.
 Le fichier ALERT est le journal chronologique
des messages et des erreurs.
 La fonction trace par processus serveur peut
être activée ou désactivée par :
 une commande ALTER SESSION,
 le paramètre SQL_TRACE.

D.BOUZIDI 62
Gestion du fichier de contrôle

Utiliser le fichier de contrôle


 Petit fichier binaire : Indique au serveur où sont situés
les fichiers constituant la base de données
 Nécessaire :
 au montage
 au fonctionnement de la base de données
 Lié à une seule base de données
 Modifié fréquemment par le serveur oracle.
 Indispensable pour la restauration de la base.
 Doit être multiplexé
 En cas de perte du fichier de contrôle,
la base de données doit être restaurée

 Pour afficher les noms des fichiers de CTL


show parameter control_files

select value from v$parameter where name='control_files';

D.BOUZIDI 64
Contenu du fichier de contrôle
 Nom et identificateur de la base de données
 Date de création de la base de données
 Emplacement des fichiers de données et de journalisation
 Noms des tablespaces et les fichiers de données (nom de
fichier,statut lecture/écriture, en ligne ou non)
 Les fichiers log en ligne
 Historique de journalisation archivés
 Informations de sauvegarde
 Informations sur les blocs corrompus
 ……

D.BOUZIDI 65

Multiplexer le fichier de contrôle


control_files=("C:\oracle\product\10.1.0\oradata\orcl\control01.ctl",
"C:\oracle\product\10.1.0\oradata\orcl\control02.ctl",
"C:\oracle\product\10.1.0\oradata\orcl\control03.ctl")

Unité 2
Unité Unité 3
control01.ctl control02.ctl control03.ctl

D.BOUZIDI 66
Multiplexer le fichier de contrôle
 Deux méthodes pour multiplexer le fichier de contrôle :
 Méthode 1
 Visualiser les fichiers de contrôle existants
 Arrêter la base
 Modifier le paramètre CONTROL_FILES dans le fichier init.ora
 Copier le fichier de contrôle en utilisant les commandes OS (ex. on crée le fichier de
contrôle control04.ctl à partir du fichier control01.ctl)
 Démarrer la base de données avec l’option pfile
 Méthode 2
 Pour ajouter le nouveau fichier de contrôle dans le spfile en spécifiant le chemin
c:\oracle\product\10.2.0\oradata\orcl\control04.ctl en utilise la commande :
alter system set control_files=
'c:\oracle\product\10.2.0\oradata\orcl\control01.ctl',
'c:\oracle\product\10.2.0\oradata\orcl\control02.ctl ',
'c:\oracle\product\10.2.0\oradata\orcl\control03.ctl ',
'c:\oracle\product\10.2.0\oradata\orcl\control04.ctl' scope=spfile;
 Arrêter la base
 Copier le fichier de contrôle en utilisant les commandes OS
 Démarrer la base de données

 Oracle met à jours les fichiers de contrôle en même temps, mais seul le premier fichier
cité dans le paramètre CONTROL_FILES est consulté.
//SCOPE=SPFILE:le changement de paramètre est enregistré dans le SPFILE, et ne sera
pris en compte qu’au prochain démarrage de l'instance. Utilisé pour les paramètres non
dynamique

D.BOUZIDI 67

sauvegarder le fichier de
contrôle
 Deux méthodes :
 Commande sauvegardant le fichier de contrôle en un fichier binaire :

alter database backup controlfile to nom_du_fichier

 Commande créant un fichier en format texte dans le répertoire


USER_DUMP_DEST

alter database backup controlfile to trace;

 C’est recommandé de sauvegarder le fichier de contrôle à chaque


modification de la structure de la base (Ajout, renomme ou
suppression de fichiers de données ou de journalisation).

D.BOUZIDI 68
Obtenir des informations

V$CONTROLFILE : affiche tous les noms des fichiers de contrôle et


leur statut qui peut être NULL ou INVALID
V$CONTROLFILE_RECORD_SECTION : plusieurs infos sur le fichier
de contrôle (TYPE : Type de la section, RECORD_SIZE : Taille d'une
Fichier de
contrôle entrée en bits, RECORDS_TOTAL : Nombre d'entrées allouées pour la
section, RECORDS_USED : Nombres d'entrées utilisées dans la
section, FIRST_INDEX : Index de la première entrée, LAST_INDEX :
Index de la dernière entrée)
V$KCCDI : affiche la valeur de MAXLOGMEMBERS (DIMLM)
 Liste des vues qui lisent directement du fichier de contrôle :
V$THREAD, V$DATABASE, V$DATAFILE, V$DATAFILE_HEADER
V$LOGFILE, V$ARCHIVED_LOG, V$BACKUP, V$BACKUP_DATAFILE,
V$BACKUP_PIECE, V$BACKUP_REDOLOG, V$BACKUP_SET, …

D.BOUZIDI 69

Gestion des fichiers de


journalisation
(les fichiers log)
Utiliser des fichiers de journalisation

 Permettent à la base de garder une trace de toutes les altérations de


données,
 En cas de crash de la base, ils permettent de rejouer les modifications
apportées à la base.
 Doivent être multiplixés au moins au nombre de deux

Instance
Zone de mémoire
Mémoire SGA partagée

LGW ARC

Fichiers de Fichiers de
données Fichiers
contrôle
de journalisation
Fichiers
archivages
Base de données des logs

D.BOUZIDI 71

Mode de fonctionnement des fichiers de


journalisation

Groupe 1 Groupe 2 Groupe 3

Membre1 Membre1 Membre1


Unité 1

Membre2 Membre2 Membre2

Unité 2

 En mode NOARCHIVELOG, un fichier log plein est disponible après que les
changements enregistrés dedans sont écrits dans les fichiers de données.
 En ARCHIVELOG, un fichier log plein est disponible après que les changements
effectués dedans sont écrits dans les fichiers de données et était archivé
 Un fichier log en ligne ou archivé est identifié par son numéro de séquence
D.BOUZIDI 72
Obtenir des informations
 Sur l'archivage à partir :
 Ligne de commande : ARCHIVE LOG LIST;
 V$DATABASE (NAME,LOG_MODE)SELECT name, log_mode FROM v$database;
 V$INSTANCE (ARCHIVER) SELECT archiver FROM v$instance;

 Sur les groupes à partir :


 V$THREAD (groups, current_group#, sequence# ) //fichier log en cours

SELECT groups, current_group#, sequence# FROM v$thread;

 Sur les groupes et les membres à partir :


 V$LOG (group#, members, status, sequence, bytes) //les infos du fichier CTL
status : unused (jamais écrit), current (en ligne et en cours d'écriture), active
(en ligne et nécessaires à la restauration de la base ), inactive (en ligne non
nécessaires à la restauration de la base)

SELECT group#, sequence#, bytes, members, status FROM v$log ;

 V$LOGFILE (group#, type, status, member)


status : invalid (le fichier est inaccessible), stale (le fichier est incomplet),
deleted (le fichier n’est pas utilisé), vide (le fichier est en cours d’utilisation)
SELECT * FROM v$logfile; 73
D.BOUZIDI

Changements de fichier de
journalisation et points de reprise

 Un log switch est le point où la base arrête d'écrire dans l'un des
fichiers redo en ligne et commence à écrire dans un autre.
 Se déclanche :
 Le fichier log courant est plein et on doit continuer à écrire dans le fichier redo
 Configuré pour qu'il se reproduit à intervalles réguliers
 Manuellement
 Imposer des changements de fichier de journalisation à l'aide de la
commande :
ALTER SYSTEM SWITCH LOGFILE;

La commande suivante permet d'archiver le redo log courant et d'activer le


redo log suivant.
ALTER SYSTEM CHECKPOINT; //archiver le redo log courant.
 Gérer les points de reprise à l'aide des paramètres d'initialisation :
 LOG_CHECKPOINT_INTERVAL
 LOG_CHECKPOINT_TIMEOUT
 FAST_START_IO_TARGET

D.BOUZIDI 74
Processus CKPT
 Le CHECKPOINT est un évènement qui se déclencher lors :
 D'un changement de groupe de REDO LOG FILE.
 D'un arrêt normal de la base de données (c'est à dire sans l'option
ABORT)
 D'une demande explicite de l'administrateur
 D'une limite définie par les paramètres d'initialisation
 LOG_CHECKPOINT_INTERVAL : spécifie le nombre maximum de
blocs du REDO LOG Buffer qui seront alors lus lors d'une
restauration de l'instance.
 LOG_CHECKPOINT_TIMEOUT : Défini en secondes. Il permet de
définir le temps maximum entre 2 CHECKPOINTS (ver > 8i : permet
de définir le temps maximal de lecture du processus LGWR ).
 FAST_START_IO_TARGET : en secondes, il définit le temps
maximum pour restaurer une instance.
 L'évènement CHECKPOINT déclenche
 Le LGWR : vide le REDO LOG Buffer.
 l'écriture d'un certain nombre de blocs du Database Buffer Cache dans
les fichiers de données par DBWn. Le nombre de blocs écris par DBWn
est défini avec le paramètre FAST_START_IO_TARGET

D.BOUZIDI 75

Manipulation des fichiers de log


 Ajout des groupes
ALTER DATABASE ADD LOGFILE('/DISK1/Redo30.log','/DISK2/Redo31.log') size
10M;
 Ajout des membres à un groupe
Groupe 1 Groupe 2 Groupe 3
ALTER DATABASE ADD LOGFILE MEMBER
'/DISK2/Redo11.log' TO GROUP 1, Redo10.log Redo20.log Redo30.log
'/DISK2/Redo21.log' TO GROUP 2;

Redo11.log Redo21.log Redo31.log


 Modification d’emplacement
1. Arrêtez la base de données
2. Copiez les fichiers de log en ligne vers un nouvel emplacement.
3. Exécutez la commande ALTER DATABASE RENAME FILE en mode MOUNT.
ALTER DATABASE RENAME FILE '/DISK2/Redo11.log' TO '/DISK3/Redo11.log';

 Suppression des groupes :


ALTER DATABASE DROP LOGFILE GROUP 3;

 Suppression des membres des groupes :


ALTER DATABASE DROP LOGFILE MEMBER '/DISK2/Redo21.log';

 Effacement des fichiers de journalisation :


ALTER DATABASE CLEAR LOGFILE '/DISK1/Redo20.log';
D.BOUZIDI 76
Erreurs possibles du processus
LGWR
 Un membre d'un groupe contenant au moins
deux fichiers de journalisation n'est pas
disponible.
 Tous les membres du groupe suivant ne sont
pas disponibles.
 Tous les membres du groupe en cours ne sont
pas disponibles.

D.BOUZIDI 77

Obtenir des informations


V$THREAD : affiche les infos sur le fichier log courant
V$LOG : donne les informations en lisant dans le fichier de contrôle au
lieu de lire dans le dictionnaire de données

V$LOGFILE : Pour voir les noms des membres d'un groupe (


GROUP# est le numéro du groupe Redo Log.
Fichier de STATUS prend la valeur :
contrôle INVALID si le fichier est inaccessible,
STALE si le fichier est incomplet ,
DELETED si le fichier n'est plus utilisé et
VIDE si le fichier est en cours d'utilisation.
MEMBER est le nom du membre Redo Log

V$LOG_HISTORY : contient des infors concernant l'historique des


fichiers redo à partir du fichier de contrôle. Le maximum que peut retenir
la vue dépends du paramètre MAXLOGHISTORY.

D.BOUZIDI 78
Gestion des structures de
stockages

Hiérarchie de stockage
de la base de données

Base de
données

Fichier
Tablespace
de données

Logique Segment Physique

Extent

Bloc Oracle Bloc OS


Hiérarchie de stockage
de la base de données
 Une base données est composée d’un ensemble
d’unités logiques appelées TABLESPACE.
 Un TABLESPACE est composé d'au moins un
DATAFILE, c'est à dire un fichier de données qui est
physiquement présent sur le serveur à l'endroit stipulé
lors de sa création.
 Chaque DATAFILE est constitué de SEGMENTS
 Un segment est d'au moins un EXTENT (ou page)
 L'extent est un groupe de BLOCS contigus pouvant
accueillir des données, il est constitué d'au moins 3
blocs
 Le bloc est le plus petit élément de stockage d'une
base de données

Les tablespaces

 Une base données mémorisée dans une ou plusieurs unités


logiques appelées TABLESPACE.
 Cette organisation permet à l’administrateur de :
 Contrôler l’allocation d’espace disque
 Assigner des quotas de ressource disque aux utilisateurs
 Contrôler la disponibilité des données en rendant les
tablespaces online ou offline
 Constituer des unités de sauvegarde ou de restauration
partielle de la base
 Répartir les zones de stockage entre plusieurs disques
pour accroître les performances
Quelques types de tablespaces
 Tablespace SYSTEM:
 Créé lors de la création de la base de données (avec l’ordre CREATE DATABASE)
 Contient : les tables du dictionnaire de données, les procédures, les fonctions, les
packages, les triggers
 Tablespace TEMP :
 Contient : les segments temporaires utilisés par Oracle lors d’opérations de tri
(SORT_AREA_SIZE insuffisante), de création d’index et de tables temporaires,…
 Chaque BD doit comporter un tablespace temporaire affecté aux utilisateurs comme
tablespace temporaire (si aucun tablespace temporaire n'est désigné lors de la
création du compte, Oracle affecte ce tablespace à l'utilisateur
CREATE DATABASE <NomBase>... DEFAULT TEMPORARY TABLESPACE temp01;

 On peut désigner un tablespace temporaire pour un utilisateur donné

ALTER USER scott TEMPORARY TABLESPACE temp01;


 Tablespace USERS :
 Contient : les segments de données utilisateurs (tables,clusters, index,…)
 On peut définir #ts tablespaces USERS pour séparer les différentes applications
 Tablespace UNDO :
 Réservé à l'annulation des commandes DDL (UPDATE, INSERT, etc...). Lors d’une
suppression par exemple, ORACLE copie les lignes à supprimer dans le tablespace
UNDO et ensuite indique que les blocs contenant les données dans le tablespace
d'origine sont libres (le paramètre undo_tablespace, undo_management)

CREATE UNDO TABLESPACE undotbs


DATAFILE '<oracle_Home>\oradata\orcl\undotbs.dbf' size 100M;

Création de tablespaces
CREATE TABLESPACE app_data
DATAFILE '/DISK1/app_data_01.dbf‘ SIZE 100M,
'/DISK2/app data_ 02.dbf‘ SIZE 100M
DEFAULT STORAGE ( INITIAL 500K
NEXT 500K
MAXEXTENTS 500
PCTINCREASE 0 );

o INITIAL : Définit la taille du premier extent (Par défaut


5*DB_BLOCK_SIZE)
o NEXT se rapporte à la taille de l'extent suivant.
o MINEXTENTS exprime le nombre d'extents alloués lors de la création
du segment (Par défault 1).
o MAXEXTEBTS est le nombre maximal d’extents pouvant être allouées à
un segment
o PCTINCREASE définie le pourcentage de croissance de la taille du
segment suivant
Gestion de l’espace dans les tablespaces
 A la création d'un objet (par exemple une table), ORACLE crée un extent .
Lors de remplissage (ajout/modification), Oracle rempli les blocs de données
qui constituent l'extent jusqu'à remplir l'extent entièrement et crée un
nouvel extent si le précédent est plein
 Deux modes de gestion de l’espace :
 Tablespaces gérés par le dictionnaire de données:
 ORACLE stocke les informations relatives à l'allocation d'espace dans
le dictionnaire de données
 Ceci induit une charge supplémentaire pour toutes les opérations
sur les objets d'un tablespace. L’administrateur doit bien
dimensionner la taille des extents pour éviter une fragmentation
excessive
 Tablespaces gérés localement (locally managed ) :
 Les informations sont stockées au niveaux des entêtes des
tablespaces, ceci évite des accès intempestifs au dictionnaire de
données (option définit par défaut à partir de la version 9i)
 Deux modes de gestion des extents :
 Le mode UNIFORM impose à Oracle de créer des extents de taille
identique. Ce mode n’est pas utilisé pour un tablespace d’annulation
 Le mode AUTOALLOCATE demande de créer des extents de plus en plus
grands avec le nombre d'extents créés. Ce mode ne peut être utilisé pour
un tablespace temporaire

Gestion de l’espace dans les tablespaces


CREATE TABLESPACE user_data
DATAFILE '/DISK2/user_data_01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 10M;

 Création de tablespace temporaire géré localement


CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/DISK2/temp_01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 10M;

 Modification des paramètres de stockage


ALTER TABLESPACE app_data
MINIMUM EXTENT 2M;
 On peut modifier un ensemble de paramètres
ALTER TABLESPACE app_data
DEFAULT STORAGE (
INITIAL 2M
NEXT 2M
MAXEXTENTS 999 );
Statut d’un tablespace
 Tablespace "offline" non disponible pour accéder aux données
 Certains tablespaces doivent être "online" :
 SYSTEM,
 tablespaces contenant des segments d'annulation actifs.
 Pour mettre un tablespace "offline" :
ALTER TABLESPACE app_data OFFLINE;
 Pour mettre un tablespace "online" :
ALTER TABLESPACE app_data ONLINE;

 Tablespace disponible pour des opérations de lecture


(Impossible de supprimer les objets du tablespace)
 Pour créer un tablespace en lecture seule sur un lecteur non
réinscriptible :
 ALTER TABLESPACE…READ ONLY;
 Placez le fichier de données sur le lecteur non réinscriptible
 ALTER TABLESPACE…RENAME DATAFILE…;

Manipulation des tablespaces


 Suppression :
 Tablespace supprimé du dictionnaire de données.
 Eventuellement, contenu supprimé du dictionnaire de données.
 Fichiers de système d'exploitation non supprimés.
DROP TABLESPACE app_data INCLUDING CONTENTS AND DATAFILES;
 Redimensionner un tablespace :
 Modification de la taille d'un fichier de données automatique
ALTER TABLESPACE app_data ADD DATAFILE '/DISK3/app_data_04.dbf'
SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

 Modification Manuellement
ALTER DATABASE
DATAFILE '/DISK5/app_data_02.dbf'
RESIZE 200M;
 Ajout d’un datafile
ALTER TABLESPACE app_data
ADD DATAFILE '/DISK5/app_data_03.dbf' SIZE 200M;

 Déplacement des datafiles


ALTER TABLESPACE app_data RENAME DATAFILE '/DISK3/app_data_01.dbf'
TO '/DISK5/app_data_01.dbf';
Types de segment
 On distingue cinq types de segments :
1. Les segments de données
 Ils servent à stocker les données des tables utilisateurs
et système
 Chaque table a un et un seul segment qui est crée
automatiquement lors de la création de la table.

2. Les segments d’index


 Servent à stocker les données d’index. Ces données peuvent
donc être stockées dans un tablespace distinct des données
des tables.
 Un segment d’index est créé automatiquement lors de la
création de l’index. On peut préciser lors de la création d’un
index, le tablespace dans lequel sera créé le segment.

D.BOUZIDI 89

Types de segment
 On distingue cinq types de segments :
3. Les segments temporaires
 Utilisés par Oracle pour le traitement des requêtes SQL
nécessitant un espace disque temporaire.
 Les segments temporaires sont créés en cas de besoin et
supprimés après l’exécution de la commande.
 Le tablespace dans lequel sont crées ces segments est défini
lors de la création et modification d’un utilisateur. Si ce
tablespace n’est pas défini, alors c’est le tablespace SYSTEM
qui est utilisé par défaut.
4. Le segment d’amorçage (BOOTSTRAP)
 Ce segment est créé dans le tablespace SYSTEM. Il contient
les définitions des objets du dictionnaire de données qui sont
chargées lors de l’ouverture de la base
5. Les segments d’annulation (ROLLBACK)
 Ces segments (rollback segments) contiennent les données
avant modification due à une transaction. Ils permettent
d’annuler leur effet en cas de besoin.

D.BOUZIDI 90
Notion d’extent et de bloc
 Notion d’extents :
 Une extent est un ensemble contigu de blocs logiques alloués
à un segment.
 Tout segment est initialement créé avec un extent initiale
(initial extent).
 Allocation lorsque le segment est créé, étendu ou modifié.
 Libération lorsque le segment est supprimé, modifié,
tronqué,

 Notion de bloc :
 Unité minimum d'entrée/sortie
 Constitué d'un ou de plusieurs blocs de système
d'exploitation
 Défini par DB_BLOCK_SIZE
 Défini lors de la création de la base de données

D.BOUZIDI 91

Contenu d'un bloc de base de


données

En-tête (@ du bloc,
type de segment,…)

Espace libre : utilisé pour


l’insertion de nouvelles lignes
ou mise à jours nécessitant
d’espace sup.

Données : lorsqu’une ligne ne


peut tenir sur un seul bloc elle
est stockée dans deux ou +iers
Blocs (blocs chaînés)

D.BOUZIDI 92
Paramètres d'utilisation
de l'espace de bloc

INITRANS

MAXTRANS La gestion de l’espace libre d’un bloc logique


se fait en fonction des valeurs des
paramètres PCTFREE et PCTUSED.
 PCTFREE fixe le % d’espace du bloc qui
doit être maintenu constamment libre. Sa
PCTFREE valeur par défaut est 10%.
 Quand un bloc ne peut être utilisé car la
PCTUSED valeur PCTFREE de lui interdit, on ne
pourra recommencer à le remplir que si
l’espace occupé est en % descend en
dessous de la valeur PCTUSED. Sa valeur
par défaut est 40%.

D.BOUZIDI 93

Utilisation de l'espace de bloc


PCTFREE=20
PCTUSED=40
80 %

Insertions Insertions
1 2

80 %

40 %
Insertions Insertions
3 3

D.BOUZIDI 94
Vues du dictionnaire de données
 Informations de tablespace :
 DBA_TABLESPACES
 V$TABLESPACE
 DBA_TABLESPACE_USAGE_METRICS
 Informations de fichier de données :
 DBA_DATA_FILES
 DBA_TABLES
 V$DATAFILE
 Informations de fichier temporaire :
 DBA_TEMP_FILES
 V$TEMPFILE
 Informations sur les segments :
 DBA_SEGMENTS
 Informations sur les extents :
 DBA_EXTENTS (Extents utilisés)
 DBA_FREE_SPACE (Extents libres)

D.BOUZIDI 95

Administration des utilisateurs


Compte utilisateur
 Pour créer un utilisateur, l'administrateur doit affecter un profil,
choisir une technique d'authentification et affecter des tablespaces
 Un nom utilisateur unique ou login (< 30 caractères, pas de caractères
spéciaux et doit commencer par une lettre)
 Une méthode d’authentification : Autre l’authentification par mot de
passe ORACLE fait l’authentification par certificats, par biométrie et
par système tier
 Un tablespace par défaut : emplacement par défaut où l'utilisateur
mettra ses objets s'il n'indique pas d'autre tablespace (il faut lui
accorder les privilèges et les quotas nécessaires pour qu’il puisse créer
des objets)
 Un tablespace temporaire : emplacement dans lequel l'utilisateur peut
créer des objets temporaires, tels que des tris et des tables temporaires
 Un profil utilisateur : c’est l’ensemble de restrictions de ressources
concernant
 l’utilisation de la base de données
 et le mot de passe affecté à l'utilisateur (longueur, période d’expiration, …)

D.BOUZIDI 97

Profil utilisateur
 Le contrôle de l’utilisation de la BD :
 CPU : exprimé par session ou par appel
 CPU/Session (exprimé en centièmes de secondes) : pour une valeur
égale à 1000, un utilisateur, qui consomme plus de 10 secondes de
temps de CPU, sera déconnecté.
 CPU/Call : au lieu de limiter la session globale d’un utilisateur, on
empêche que la commande qui consomme plus des ressources CPU
de l’utilisateur
 Network/Memory : une session utilisateur consomme des
ressources réseau et mémoire, on peut donc gérer :
 Nombre de minutes pendant lesquelles un utilisateur peut être
connecté avant d'être automatiquement déconnecté (Connect Time).
 Nombre de minutes pendant lesquelles une session utilisateur peut
rester inactive avant d'être automatiquement déconnectée (Idle Time).
 Nombre de sessions simultanées pouvant être créées à l'aide d'un
compte utilisateur de base de données.
 Private SGA : limite la quantité d'espace consommé dans la mémoire
pour le tri, création d’index, etc.
 Disk I/O : limite la quantité de données qu'un utilisateur peut
lire, par session ou par appel.

D.BOUZIDI 98
 Contrôle de l’authentification :
Profil utilisateur
 L’authentification permet de vérifier l’identité d’une entité qui
souhaite utiliser les ressources de la base de données :
 Ce mécanisme permet d’établir une relation de confiance pour les
interactions ultérieures.
 La responsabilité : permettant de lier l’accès et des actions à des
entités spécifiques.
 Trois technique d’authentification:
 Password (Authentification par la base de données) : crée chaque
utilisateur avec un mot de passe associé qui doit être fourni lorsde la
connexion (ex: CREATE USER scott IDENTIFIED by tiger;)
 External (Authentification par le système d’exploitation) : ce mode
l’authentification repose sur celle définie par l’OS. Aucun mot de
passe de base de données n'est utilisé pour ce type de connexion. (ex:
CREATE USER OPS$NomUser IDENTIFIED EXTERNALLY; )
 Global (Authentification globale) : permet de renforcer
l’authentification via d’autre systèmes comme l'identification des
utilisateurs via la biométrie, les certificats x509, les systèmes tiers et
Oracle Internet Directory. Avantage fait une seul authentification
 Lorsqu'un utilisateur est créé, son statut peut être verrouillé ou
déverrouillé. Si un compte utilisateur verrouillé, ne peut être utilisé pour
se connecter à la base de données.
D.BOUZIDI 99

 Tablespace :
Tablespaces et de schémas
 Un tablespace par défaut est le tablespace dans lequel les objets sont
créés si aucun tablespace n'est désigné lors de la création de l'objet
 Si on a pas choisi de tablespace par défaut, le tablespace permanent par défaut
défini par le système est utilisé
 Si on n’a pas indiqué de tablespace temporaire, celui défini par le système est
utilisé
CREATE USER user01 identified by PWDuser01
DEFAULT TABLESPACE tbs_users TEMPORARY TABLESPACE tmp_users;

 Schéma :
 L'ensemble des objets appartenant à un utilisateur est appelé schéma (Tables,
Déclencheurs, Index, Vues, Séquences, Types de données définis par l'utilisateur,
…)
 Lors de la création d'un utilisateur de base de données, un schéma correspondant
portant le même nom est créé pour cet utilisateur
 Les objets du même schéma peuvent résider dans différents tablespaces et un
tablespace peut contenir des objets de différents schémas
 Un utilisateur ne peut être associé qu'à un seul schéma, le nom utilisateur et le
schéma sont souvent utilisés de manière interchangeable.
 Pour accèder aux objets de l’utilisateur user01 (si on a le droit) on précede le nom
de l’objet par le nom de l’utilisateur (equi au nom du schéma)

Select * from user01.nomTable;

D.BOUZIDI 100
Privilèges
 Par défaut, lorsqu'un utilisateur est créé, aucun privilège ne
lui est accordé, il ne peut effectuer aucune opération dans la
base de données.
 Si l'utilisateur ne dispose d'aucun quota dans aucun
tablespace, il ne pourra pas créer d'objets.
 Deux types de privilège :
 Système :
 Accordé par l'administrateur ou par quelqu'un à qui la permission
d'administrer le privilège a été accordé,
 Permet aux utilisateurs d'effectuer des actions particulières dans la
base de données (par exemple créer des Tablespaces).
 Objet :
 permet aux utilisateurs d'accéder à un objet spécifique et de le
manipuler (table, sequence, …)
 Sans permission spécifique, les utilisateurs ne peuvent accéder qu'à
leurs propres objets.
 Les privilèges objet peuvent être accordés par
 le propriétaire d'un objet,

 l'administrateur

 à qui la permission d'accorder des privilèges sur l'objet a été

D.BOUZIDI accordée explicitement. 101

Privilèges

 DROP ANY object : le privilège DROP ANY autorise l'utilisateur


à supprimer des objets qui ne lui appartiennent pas
 CREATE, MANAGE, DROP, ALTER TABLESPACE : les
utilisateurs qui ne sont pas administrateurs ne doivent
généralement pas pouvoir contrôler les tablespaces.
 GRANT ANY OBJECT PRIVILEGE : ce privilège autorise les
utilisateurs à accorder des permissions sur des objets qui ne
leur appartiennent pas.
 ALTER DATABASE et ALTER SYSTEM : les utilisateurs qui ne
sont pas administrateurs ne doivent généralement pas être
autorisés à modifier la base de données ou l'instance.

D.BOUZIDI 102
Exemples de privilèges
 Privilèges système
Catégorie Exemples
INDEX CREATE ANY INDEX
ALTER ANY INDEX
 Privilèges Objet
DROP ANY INDEX
OBJET Privilèges
TABLE CREATE TABLE
CREATE ANY TABLE Table ALTER, DELETE, INDEX,
ALTER ANY TABLE INSERT, REFERENCES,
DROP ANY TABLE SELECT, UPDATE
SELECT ANY TABLE Séquence ALTER, SELECT
UPDATE ANY TABLE
DELETE ANY TABLE vue DELETE, INSERT,
SELECT, UPDATE
SESSION CREATE SESSION
ALTER SESSION Procédure EXECUTE
RESTRICTED SESSION

TABLESPACE CREATE TABLESPACE


ALTER TABLESPACE
DROP TABLESPACE
UNLIMITED TABLESPACE

D.BOUZIDI 103

Affectation de quotas
 Un quota est une allocation d'espace dans un tablespace
donné.
 Par défaut, un utilisateur ne dispose d'aucun quota sur aucun
des tablespaces.
 Trois options pour affecter un quota utilisateur
 Unlimited : permet à l'utilisateur d'employer tout l'espace
disponible dans le tablespace.
 Valeur : indique l'espace pouvant être employé par l'utilisateur.
Cette valeur ne garantit cependant pas que l'espace est réservé
pour l'utilisateur. Elle peut être supérieure ou inférieure à l'espace
actuellement disponible dans le tablespace.
 Privilège système UNLIMITED TABLESPACE : remplace tous les
quotas individuels sur les tablespaces et accorde à l'utilisateur un
quota illimité sur tous les tablespaces

ALTER USER user01


QUOTA 10M ON AppData;

D.BOUZIDI 104
Manipulation des comptes user
 Création d’un utilisateur:
CREATE USER user01 IDENTIFIED BY PwdUser01
DEFAULT TABLESPACE AppData
 TEMPORARY TABLESPACE temp
QUOTA 15M ON dAppDta
PASSWORD EXPIRE;
 Modification des paramètres utilisateur :
ALTER USER user01 QUOTA 50M ON AppData;
 Suppression d’un utilisateur :
DROP USER peter;

DROP USER peter CASCADE;

Option cascade : Si le schéma contient des tables, Oracle effacera


alors toute les contraintes d'intégrités des tables et toutes les
contraintes d'intégrités dans les schémas d'autres utilisateurs
qui faisaient références aux contraintes UNIQUE et PRIMARY
KEY du schéma qui est en cours de suppression
 Les vues principales permettant de surveiller des utilisateurs
 dba_users et dba_TS_Quotas
D.BOUZIDI 105

Sauvegarde et restauration
Logique
(Import/export)
IMPORT et EXPORT

 Permet de sauvegarder/restaurer le contenu


logique d'une base de données dans un fichier
de transfert Oracle au format binaire
 Le fichier exporté permet de recréer des objets
qu'il contient (portabilité OS et logiciel)
 A ne pas utiliser à distance : augmente le trafic
du réseau
 La version de l'utilitaire Import ne peut être
antérieure à celle de l'utilitaire Export

D.BOUZIDI 107

Mode d’Import et d’Export


 Base de données complète (option FULL):
 Tous les objets de la base sont exportés à l'exception
de certains utilisateurs : SYS, ORDSYS, CTXSYS,
MDSYS et ORDPLUGINS
 Lors de L'importation tous les objets exportés sont
créés dans la base de destination
 Utilisateur
 Que les objets appartenant à un utilisateur qui sont
exportés (OWNER)
 On peut impoter, du fichier exporté, les objets d’un
utilisateur donné dans le schéma d’un utilisateur
(FROMUSER / TOUSER)
 Le fichier exporté permet de recréer des objets qu'il
contient (portabilité OS et logiciel)

D.BOUZIDI 108
Mode d’Import et d’Export
 Table (option TABLES)
 Lors de l'exportation d’une table tous ses
objets (index, contraintes, déclencheurs,
privilèges …) sont sauvegardés dans le
fichier d’export
 Lors de L'importation les tables doivent être
nommées grâce au paramètre TABLES
(comme dans l’exportation)
 Tablespace (TABLESPACE)
 les métas donnés concernant les tablespaces
spécifiés et les objets qu'ils contiennent sont
écrites dans un fichier d’export

D.BOUZIDI 109

Mode d’Import et d’Export

 Privilèges

Actions Privilège ou rôle


Exporter son propre schéma CREATE SESSION
Exporter d'autres schémas SYSDBA, DBA et
EXP_FULL_DATABASE
Exporter la base entière ou EXP_FULL_DATABASE
tablespaces
Importer un objet du fichier IMP_FULL_DATABASE

D.BOUZIDI 110
Paramètres de l’Export

Paramètres Description
Userid chaîne de connexion à la base de données
File Nom du fichier de sauvegarde
Log Nom du fichier de sortie du compte-rendu, pour voir les
erreurs en particulier
Full Export de toute la base
Grants Export des privilèges
Indexes Export des index
Owner Utilisateur(s) à exporter
Parfile Fichier contenant les paramètres d'export
Rows Export des lignes
Query Définit une condition de filtre pour exporter un sous-
ensemble
Tables Table(s) à exporter

Statistics Analyse des objets exportés

D.BOUZIDI 111

Paramètres d’import
Paramêtres Description
Userid chaîne de connexion à la base de données
File Nom du fichier de sauvegarde
Log Nom du fichier de sortie du compte-rendu, pour voir les
erreurs en particulier
Fromuser Utilisateur à exporter vers TOUSER
Full Export de tout le contenu du fichier de sauvegarde
Grants Import des privilèges
Indexes Import des index
Parfile Fichier contenant les paramètres d‘import
Rows Import des lignes
Show Liste le contenu du fichier d'export, aucune opération
n'est effectuée dans la base
Destroy Détruit les objets s'ils existent avant de les importer
Tables Table(s) à exporter

Analyze Exécute la commande ANALYZE dans le fichier de


sauvegarde
Touser Utilisateur destinataire
D.BOUZIDI 112
Exemple d’export
 Exporter les structures de la base données
exp userid=system/manager
file=c:\save\exp_ORCL_struct_full.dump
log=c:\saveLog\exp_ORCL_struct_full.log full=y rows=n

 Exporter d’un schéma


exp userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\logsave\exp_scott_full.log owner=scott

 Exporter d’une table


exp userid=system/manager
file=c:\save\exp_emp_scott.dump
log=c:\logsave\exp_emp_scott.log tables=scott.emp
 Exporter d’une tablespace
exp userid=system/manager
file=c:\save\exp_nomTablespace.dump
log=c:\logsave\exp_nomTablespace.log tablespace=nomTablespace

 Exporter selon une condition


exp system/manager file=\save\exp_ORCL_query1.dmp
tables=scott.emp query="'where salaire > 500'"

D.BOUZIDI 113

Exemple d’import
 Importer tous les schémas sauvegardés
imp userid=stystem/manager
file=c:\save\exp_ORCL_struct_full.dump
log=c:\logsave\imp_ORCL_struct_full.log

 Importer un schéma vers un autre


imp userid=scott/tiger
file=c:\save\exp_scott_full.dump
log=c:\logsave\imp_scott_full.log fromuser=scott touser=user01

 Importer une table d’un schéma vers un autre


imp userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\logsave\imp_scott_full.log fromuser=scott Tables=emp
touser=user02

D.BOUZIDI 114
Exemple d’export /import utilisant
un fichier de paramètres
 Création du fichier de paramètres d’export
userid=system/manager expScott.prm
file=c:\save\exp_scott_full.dump
log=c:\exp_scott_full.log
owner=scott
rows=n

 Export un schéma
exp parfile=c:\fichierParametre\expScott.prm

 Création du fichier de paramètres d’import


userid=system/manager impScott.prm
file=c:\save\exp_scott_full.dump
log=c:\imp_scott_full.log
fromuser=scott touser=user02

 Export un schéma
imp parfile=c:\fichierParametre\impScott.prm

D.BOUZIDI 115

Sauvegarde et
de restauration physique
Stratégie de
Sauvegarde et de Restauration
 Les exigences professionnelles, opérationnelles et techniques
dictent la nature de la stratégie.
 Toute stratégie de sauvegarde et restauration doit être testée.
 Haute disponibilité, immobilisation minimale et restauration
complète des données sont les éléments clés d'une stratégie
efficace.

 Objectif

 Protéger la base de données de divers types de pannes


 Augmenter le temps moyen entre pannes (MTBF)
 Diminuer le temps moyen de réparation (MTTR)
 Minimiser la perte de données

D.BOUZIDI 117

Sauvegarde à Froid

 Permet de faire une sauvegarde d’une Base de données en


arrêt
 Les fichiers (datafiles, logfiles, controlfile, etc) peuvent être
sauvegardés sans corruption
 Fortement utilisée en mode noArchivelog
 Inconvénients : n’est valable pour des environnements à
haute disponibilité où l’activité ne peut être interrompue

D.BOUZIDI 118
Sauvegarde à Froid d’une base de données
 Les étapes de sauvegarde
 Lister les noms des fichiers à sauvegarder
 Fichiers de données
Select * from dba_data_files;

 Fichiers de contrôles
Select * from v$parameter where name like ‘control_files’;
 Les fichiers log
Select * from v$logfile;
 Arrêter de la base de données en mode immediate
Shutdown immediate
 Effectuer une copie des fichiers à sauvegarder par une
commande OS
 Redémarrer la base de données

D.BOUZIDI 119

Sauvegarde à Froid d’un tablespace


 Sauvegarde d’un tablespace mis en offline
 Identifier les fichiers du tablesapce à sauvegarder
Select file_name from dba_data_files where tablespace_name=
'NOMTABLESPACE'

 Mettre le tablespace en mode offline


Alter tablespace NomTablespace offline normal;
 Effectuer une copie des fichiers à sauvegarder par une
commande OS
 Remettre le tablespace en mode on online
Alter tablespace NomTablespace online;

D.BOUZIDI 120
Sauvegarde à Chaud
 Permet de faire une sauvegarde d’une Base de données
sans la faire arrêter
 Utile dans un contexte à haute disponibilité où l’état des
fichiers change constamment
 Fonctionnement : Placer un tablespace dans le mode de
sauvegarde et de sauvegarder les fichiers de données, puis
de rétablir le tablespace dans le mode normal
 La base de données doit être en mode Archivelog

D.BOUZIDI 121

Sauvegarde à Chaud

 Stratégie de sauvegarde:
 Sauvegarde complète de la base de données à des
intervalles réguliers
 Sauvegarde partielle de la base de données
 Archivage des fichiers de journalisation (log)
 Sauvegarde du fichier de contrôle en cas de
modification dans la base de données

D.BOUZIDI 122
Sauvegarde à Chaud
 Sauvegarde d’un tablespace
 Identifier les fichiers du tablesapce à sauvegarder
Select file_name from dba_data_files where tablespace_name=
'NOMTABLESPACE';

 Mettre le tablespace en mode backup


Alter tablespace NomTablespace begin backup;

 Effectuer une copie des fichiers à sauvegarder par une


commande OS
 Remettre le tablespace en mode normal
Alter tablespace NomTablespace end backup;

D.BOUZIDI 123

Procédures de récupération gérées par


l'utilisateur : commande RECOVER

 Restaurer tous les fichiers de base de données à partir


d'une sauvegarde et récupérer la base de données :
SQL> RECOVER DATABASE

 Restaurer les fichiers de données endommagés d’un


tablespace à partir d'une sauvegarde et récupérer les
fichiers de données :
SQL> RECOVER TABLESPACE USERS

Ou un fichier de données d’un tablespace

SQL> RECOVER DATAFILE '/oradata/indx01.dbf'

D.BOUZIDI 124
Format des données : type variable

 Un fichier présente un format d'enregistrement de type variable


lorsque la longueur de chaque enregistrement d'un champ de type
caractère est incluse au début de chaque enregistrement dans le
fichier de données.
 Ce format est plus flexible que le format d'enregistrement de type
fixe et les performances sont meilleures que dans le cas du format
d'enregistrement de type flux.

 Exemple :
INFILE 'datafile_name' "var n"

L’outil de chargement de données


SQL*Loader
Architecture

Fichiers
Fichier de
de
contrôle
données
d'entrée

SQL*Loader Fichiers des


Fichier journal enregistrements
refusés

Fichiers de
rebut

 Tables et
index

SQL*Loader

 L'utilitaire SQL*Loader charge les données de fichiers externes


dans des tables d'une base de données Oracle.
 Dispose d'un puissant moteur d'analyse (parse) des données,
qui ne limite que très peu le format des données du fichier.
 Les fichiers utilisés par SQL*Loader sont les suivants :
 Fichiers de données d'entrée
 Fichier de contrôle
 Fichier journal
 Fichier des enregistrements refusés
 Fichier rebut
Fichier de contrôle
 Fichier texte écrit dans un langage pouvant être interprété par
SQL*Loader. Le fichier de contrôle indique à SQL*Loader où
trouver les données, comment les analyser et les interpréter, où
insérer les données, etc. Bien que ce ne soit pas explicitement
défini, le fichier de contrôle du programme de chargement est
composé de trois sections.
1. Des informations de session, telles que :
 Des options globales comme les paramètres BINDSIZE, ROWS, SKIP,
etc.
 Des clauses INFILE afin d'indiquer où se trouvent les données d'entrée
 Les données à charger
2. Constituée d'un ou plusieurs blocs INTO TABLE. Chacun de ces
blocs contient des informations sur la table dans laquelle les
données doivent être chargées, telles que le nom et les colonnes de
la table.
3. La troisième section est facultative et, si elle est présente, contient
les données d'entrée.

Fichier de contrôle
 Les commentaires commencent par deux traits d'union (--) et vont jusqu'à la fin de
la ligne.
 LOAD DATA : indique qu'il s'agit du début d'un nouveau chargement de données.
Pour continuer le chargement dont la progression a été interrompue, utilisez
l'instruction CONTINUE LOAD DATA.
 INFILE : indique le nom d'un fichier contenant les données à charger.
 BADFILE : Fichier dans lequel sont placés les enregistrements refusés.
 DISCARDFILE Fichier dans lequel sont placés les enregistrements écartés.
 APPEND : option utilisée lors du chargement de données dans une table qui n'est pas
vide.
 INSERT : option utiliser pour charger les données dans une table vide.
 INTO TABLE permet d'identifier les tables, les champs et les types de données. Il
définit la relation entre les enregistrements dans le fichier de données et les tables de
la base.
 WHEN : indique une ou plusieurs conditions de champ auxquelles chaque
enregistrement doit satisfaire pour que SQL*Loader puisse charger les données..
 TRAILING NULLCOLS : indique à SQL*Loader de considérer comme une colonne
NULL toute colonne positionnée de manière relative et qui n'est pas présente dans
l'enregistrement.
 Le reste du fichier de contrôle contient la liste des champs, qui fournit des
informations sur les formats de colonne dans la table chargée.
Exemple de fichier CTL SQL*Loader

1-- Exemple de fichier de contrôle


2 LOAD DATA
3 INFILE ’SAMPLE.DAT’
4 BADFILE ’sample.bad’
5 DISCARDFILE ’sample.dsc’
6 APPEND
7 INTO TABLE emp
8 WHEN (57) = ’.’
9 TRAILING NULLCOLS
10 (hiredate SYSDATE,
deptno POSITION(1:2) INTEGER EXTERNAL(3) NULLIF deptno=BLANKS,
job POSITION(7:14) CHAR TERMINATED BY WHITESPACE NULLIF job=BLANKS
"UPPER(:job)",
mgr POSITION(28:31) INTEGER EXTERNAL TERMINATED BY WHITESPACE, NULLIF
mgr=BLANKS, ename POSITION(34:41) CHAR TERMINATED BY WHITESPACE
"UPPER(:ename)",
empno POSITION(45) INTEGER EXTERNAL TERMINATED BY WHITESPACE,
sal POSITION(51) CHAR TERMINATED BY WHITESPACE
"TO_NUMBER(:sal,’$99,999.99’)",
comm INTEGER EXTERNAL ENCLOSED BY ’(’ AND ’%’ ":comm * 100" )

D.BOUZIDI 131

Fichier Journal

 Lorsque l'exécution de SQL*Loader commence, un fichier


journal est créé. Si le système ne peut pas créer ce fichier
journal, l'exécution se termine. Le fichier journal contient
un récapitulatif détaillé de la charge, notamment une
description des erreurs qui se sont produites pendant le
chargement.
Fichiers des enregistrements
refusés
 Fichier contenant les enregistrements qui ont été
rejetés, soit par SQL*Loader, soit par la base de
données Oracle.
 Les enregistrements de fichiers de données sont rejetés
par SQL*Loader lorsque le format d'entrée n'est pas
valide.
 Une fois que SQL*Loader a accepté le traitement d'un
enregistrement de fichiers de données, ce dernier est
envoyé à la base de données Oracle en vue de son
insertion dans une table sous forme de ligne.
 Si la base de données Oracle détermine que la ligne est
valide, elle est insérée dans la table.
 Si la ligne est considérée comme non valide,
l'enregistrement est rejeté et SQL*Loader le place dans le
fichier des enregistrements refusés.

Fichier de rebut

 Fichier créé uniquement si nécessaire, et uniquement si


vous avez indiqué qu'un fichier de rebut doit être activé. Le
fichier de rebut contient les enregistrements qui ont été
exclus du chargement parce qu'ils ne satisfaisaient à
aucun critère de sélection des enregistrements indiqué
dans le fichier de contrôle.
Fichier de données
 SQL*Loader lit les données à partir d'un ou plusieurs fichiers
(ou équivalents de fichiers dans le système d'exploitation),
indiqués dans le fichier de contrôle.
 Du point de vue de SQL*Loader, les données du fichier sont
organisées en enregistrements.
 Un fichier de données peut se présenter dans un format
d'enregistrement de :
 Type fixe,
 Type variable
 Type "flux".
 Ce format peut être défini dans le fichier de contrôle via le
paramètre INFILE.
 Si aucun format d'enregistrement n'est défini, le format
d'enregistrement de type "flux" est utilisé par défaut.

Format des données : type fixe


 Un fichier de données présente un format d'enregistrement de type
fixe lorsque tous les enregistrements qu'il contient sont de même
longueur (en octets).
 Bien que ce format soit le moins flexible, il offre de meilleures
performances que le format d'enregistrement de type variable ou de
type "flux".
 Syntaxe :
 INFILE <datafile_name> "fix n"
SQL*Loader doit interpréter le fichier de données comme étant dans un
format d'enregistrement de type fixe, où chaque enregistrement présente
une longueur de n octets.
 Exemple example.dat
load data
0001,oracle
INFILE 'example.dat' "fix 13"
0002,eMicro
into table example
fields terminated by ',' 0003,SQLSRV
(nomCol1, nomCol2)

Le fichier de données contient trois enregistrements physiques. Le premier


enregistrement est [0001, oracle] et présente une longueur de onze octets
exactement (avec un jeu de caractères mono-octet), le retour chariot "\r" étant
le douzième octet et le caractère de fin de la ligne "\n" étant le treizième.
Format des données : type variable

 Un fichier présente un format d'enregistrement de type variable


lorsque la longueur de chaque enregistrement d'un champ de type
caractère est incluse au début de chaque enregistrement dans le
fichier de données.
 Ce format est plus flexible que le format d'enregistrement de type
fixe et les performances sont meilleures que dans le cas du format
d'enregistrement de type flux.

 Exemple :
INFILE 'datafile_name' "var n"

Format des données : type variable


 L'exemple qui suit illustre une spécification de fichier de contrôle
qui demande à SQL*Loader de rechercher des données dans le
fichier example.dat et lui indique qu'il s'agit d'un format
d'enregistrement de type variable dans lequel les champs
correspondant à la longueur de l'enregistrement présentent une
longueur de 3 octets. Le fichier de données example.dat est
constitué de trois enregistrements physiques. Le premier présente
une longueur de 009 (neuf) octets, le deuxième une longueur de 010
octets (dont un saut de ligne représentant un caractère) et le
troisième une longueur de 012 octets. Cet exemple suppose
également qu'un jeu de caractères mono-octet soit utilisé pour le
fichier de données.

load data
infile 'example.dat' "var 3"
into table example
fields terminated by ','
(col1 ,col2)
011hello,cd,
011world,im,
013my,name is,
example.dat
Format des données : type flux
 Un fichier présente un format d'enregistrement de type flux lorsque
la taille des enregistrements n'est pas indiquée ;
 SQL*Loader détermine alors les enregistrements en recherchant le
caractère de fin d'enregistrement.
 Le format d'enregistrement de type flux est le plus flexible, mais les
performances peuvent s'en trouver dégradées.
 La spécification d'un fichier de données devant être interprété dans
un format d'enregistrement de type flux ressemble à ce qui suit :
INFILE <datafile_name> ["str terminator_string"]
 La valeur de terminator_string est 'char_string' ou X'hex_string',
où :
'char_string' : est une chaîne de caractères incluse entre apostrophes ou guillemets
X'hex_string' : est une chaîne d'octets au format hexadécimal

Format des données : type flux


 Lorsque la chaîne terminator_string contient des caractères spéciaux
(non imprimables), elle doit être définie en tant que X’hex_string’.
Cependant, certains caractères non imprimables peuvent être définis en
tant que (’char_string’) via l'utilisation d'une barre oblique inverse.
Par exemple :
\nnouvelle ligne
\ttabulation horizontale
\fcaractère de changement de page
\vtabulation verticale
\rretour chariot
 Si le jeu de caractères défini via le paramètre NLS_LANG de la session est
différent de celui du fichier de données, les chaînes de caractères sont
converties dans le jeu de caractères du fichier de données.
 Les chaînes hexadécimales sont supposées utiliser le jeu de caractères
du fichier de données ; aucune conversion n'est donc effectuée. Si
aucune chaîne terminator_string n'est indiquée, le caractère de
nouvelle ligne (fin de ligne) est utilisé par défaut (retour à la ligne sur les
plates-formes UNIX, retour chariot suivi d'un retour à la ligne sur les
plates-formes Microsoft, etc.). Le caractère de nouvelle ligne est lié au
jeu de caractères du fichier
de données.
Format des données : type flux
 L'exemple qui suit illustre le chargement de données dans
un format d'enregistrement de type flux, dans lequel la
chaîne de fin d'enregistrement est indiquée à l'aide d'une
chaîne de caractères, à savoir '\r\n'. L'utilisation de la
barre oblique inverse permet à la chaîne de caractères
d'indiquer le caractère non imprimable de retour à la
ligne.

load data
infile 'example.dat' "str '\r\n'"
into table example
fields terminated by ','
(col1 , col2 )

hello,world,
james,bond,

example.dat

Vous aimerez peut-être aussi