Vous êtes sur la page 1sur 466

Oracle11g

Administration

OlivierHEURTEL

Rsum
Ce livre sur Oracle 11g sadresse tout informaticien dsireux de matriser les tches dadministration des bases de donnes Oracle. Aprs
une prsentation gnrale de larchitecture interne dun serveur Oracle (mmoire, processus), ce livre dtaille les diffrentes tches
dadministration dune base de donnes : installation (sous Windows et sous Linux), configuration Oracle Net, cration dune nouvelle base de
donnes, gestion de la mmoire, gestion du stockage, gestion des utilisateurs et des droits, sauvegardes et restaurations avec RMAN (Recovery
Manager).
Une attention particulire est apporte aux nouvelles fonctionnalits dOracle 11g qui facilitent le travail de ladministrateur : rglage automatique
de la mmoire, rfrentiel de Diagnostique Automatique, mots de passe sensibles la casse, rtrcissement dun tablespace temporaire gr
localement, nouvelle ergonomie de Oracle Entreprise Manager Database Control, etc.
Louvrage contient de nombreux conseils pratiques et recommandations et prsente les solutions qui peuvent tre apportes aux problmes les
plus courants.
Des exemples de scripts sont en tlchargement sur cette page.

L'auteur
Aprs plus de huit ans passs en socit de service, o il a successivement occup les postes de dveloppeur, chef de projet puis directeur
de projet, Olivier Heurtel a dmarr une activit de consultant/formateur indpendant spcialis sur les bases de donnes (Oracle), le
dveloppement Web (PHP) et les systmes dcisionnels. Olivier Heurtel est certifi Oracle Certified Professional et cet ouvrage est le fruit de
l'exprience acquise au cours de nombreuses prestations de mise en uvre de bases Oracle en entreprise.

Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11 Mars
1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non destines
une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou reproduction intgrale,
ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette reprsentation ou reproduction, par
quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal. Copyright Editions ENI

ENI Editions - All rights reserved - Algeria Educ

- 1-

Installationduserveur
1.Introduction
LinstallationdOraclesurunserveurncessiteunebonnecomprhensiondelarchitectureOracleetdescomptences
minimales sur le systme dexploitation ces comptences sont rduites au strict minimum pour la plateforme
Windowsmaissontunpeuplusavancespourlesautresplatesformes.
Danstouslescas,ilestimpratifdeserfrerladocumentationOraclespcifiquelaplateforme :

OracleDatabaseInstallationGuidefor...

OracleDatabaseQuickInstallationGuidefor...

OracleDatabaseReleaseNotesfor...

La documentation "Quick Installation Guide" dcrit comment installer rapidement Oracle en utilisant des options par
dfaut.Cettedocumentationestengnralsuffisantepourunepremirepriseenmain.
Lobjectifdecechapitreestdeprsenterlesprincipalestapesetoptionsdelinstallation,enselimitantauxplates
formesWindowsetLinux(enloccurrenceRedHatEnterpriseLinux4) cechapitrenapasvocationremplacerles
manuels dinstallation fournis par Oracle. Par ailleurs, louvrage dans son ensemble apporte les comptences sur
larchitectureOraclencessaireslacomprhensiondesdiffrentesphasesdelinstallation.
Sur OTN (Oracle Technology Network : http://www.oracle.com/technology/index.html), moyennant une
inscription gratuite au site, vous pouvez tlcharger les produits Oracle des fins de dveloppement ou
dvaluation.

Sur Metalink (site du support Oracle : https://metalink.oracle.com/), vous pouvez trouver des notes
dinstallation prcises, jour, pour chaque version dOracle, chaque systme dexploitation et chaque
architecture(32/64bits)nhsitezpaslesconsulter.

2.Principalestapesdelinstallation
InstallerOraclesurunserveurcomportetroisgrandesphases :

prinstallation :prparerlesystmedexploitation

installation :installerlesproduitsOracle

postinstallation :terminerlinstallationetconfigurercertainscomposantsOracle.

SurplateformeWindows,laphasedeprinstallationestrduiteaustrictminimum :

vrifierlesprrequislogicielsetmatriels

seconnecterentantquemembredugroupeAdministrateur.

Surplateforme Unix ou Linux, la phase de prinstallationcomporteparcontre,plusieurstapes.Danslesgrandes


lignes,lestapessontlessuivantes :

vrifierlesprrequislogicielsetmatriels

configurerlenoyau(smaphores,mmoirepartage...)

crerlesrpertoiresncessaires

ENI Editions - All rights reserved - Algeria Educ

- 1-

crerungroupeetuncompteappartenantcegroupe.

Linstallation des produits Oracle seffectue avec lapplicationOracle Universal Installer cet installeur est "universel"
danslamesureoilestidentique(peudechosesprs)surlesdiffrentesplatesformesetestutilispardiffrents
produitsOracle(serveur,client,etc.).
OracleUniversalInstallerpermet :

de choisir le type dinstallation : Enterprise Edition, Standard Edition, Personal Edition (plateformeWindows
uniquement)personnalis
de crer une base de donnes de dpart avec diffrentes options de configuration pour le stockage,
ladministration,lasauvegarde,etc.

lissuedecettephase,sivousoptezpouruneinstallationavecbasededonnes,vousdevriezavoir :

unebasededonnesdedpartlance

uneconfigurationOracleNetpardfautavecunprocessusdcoute(listener)lanc

OracleEnterpriseManagerDatabaseControletlancetaccessiblelaidedunnavigateur

Laphasedepostinstallationconsisteessentiellement :

tlchargeretappliquerdventuelspatchsOracle

recompilerlesmodulesPL/SQLinvalides

configurercertainscomposantsOracle(OracleNet,etc.)

installerdesproduitssupplmentaires

configurerlenvironnementdetravail

configurer le dmarrage et larrt automatiques des diffrents composants Oracle (base de donnes,
processusdcoute,etc.).

Sur plateforme Windows, si vous optez pour une installation avec base de donnes de dpart, Oracle
UniversalInstallercreautomatiquementlesservicesassocisauxdiffrentscomposantsetlesconfigureen
dmarrage automatique si linstallation seffectue sans base de dpart, ces services doivent tre crs et
configursultrieurement.SurplateformeLinuxouUnix,lesservicesdoiventtreexplicitementcrsetconfigurs
parladministrateurdusystmedexploitation.
Les diffrentes phases de linstallation sont dcrites ciaprs. Ensuite, nous verrons comment configurer
lenvironnementdetravailetconfigurerledmarrageetlarrtautomatiquesdesdiffrentscomposantsOracle.
Avant cela, nous prsenterons le standard Optimal Flexible Architecture (OFA). OFA est un ensemble de
recommandationssurlarborescenceetlenommagedesfichiersduserveur,destinesfaciliterladministrationdes
produitsOracle.
Avanttouteinstallation,ilestconseilldesauvegarderleslmentscritiquesventuellementprsentssurle
serveur(basesOracleduneautreversiondOracle,autresproduits).

3.OptimalFlexibleArchitecture(OFA)
a.Principesgnraux

- 2-

ENI Editions - All rights reserved - Algeria Educ

OFA est un ensemble de recommandations sur larborescence et le nommage des fichiers du serveur, destines
faciliterladministrationdesproduitsOracle.
UndespointslesplusintressantsdustandardOFAestdeclairementsparerleproduitOracle,lesfichiersrelatifs
ladministration et les fichiers des bases de donnes, en tenant compte de la possibilit davoir plusieurs versions
dOracleet/ouplusieursbasessurleserveur.
Lesrecommandationsvarientlgrementselonlaplateforme(voirladocumentation"OracleDatabaseInstallation
Guide"devotreplateforme).
OracleUniversalInstallerestcompatibleOFAetproposeunearborescencepardfautquirespectecestandard.
DanslestandardOFA,deuxrpertoiresjouentunrleparticulier :lesrpertoiresOracleBaseetOracleHome.
LerpertoireOracleBaseestlerpertoireracinedelarborescenceOracle.
LerpertoireOracleHomeestunsousrpertoiredurpertoireOracleBasequicontientlelogicielOracleproprement
dit,pouruneversiondonne.DansunrpertoireOracleBase,ilestpossibledavoirplusieursrpertoiresOracleHome
correspondantchacununecertaineversiondunproduitOracledonn(serveurdebasededonnes,client,serveur
dapplication,etc.).
Dans des configurations avances, il est possible davoir plusieurs rpertoires Oracle Base, pour installer
plusieursproduitsOraclesurdesdisquesdiffrents.
Chaque rpertoire Oracle Home est, par ailleurs, identifi par un nom, par dfaut sous la formeOraDb11g_homeN, N
tantunnumrodordre.
Sur plateforme Windows, les emplacements de ces deux rpertoires sont dfinis dans des entresde la base de
registre (dans HKEY_LOCAL_ MACHINE\SOFTWARE\ORACLE\KEY_nom, nom tant le nom du Oracle Home). Sur plateforme
Linux ou Unix, les emplacements de ces deux rpertoires sont gnralement dfinis dans des variables
denvironnementORACLE_BASEetORACLE_HOMEducomptedanslequelOracleestinstall.
SurplateformeWindows,depuislaversion11,lesrecommandationssontlessuivantespourcesdeuxrpertoires :
OracleBase
X:\app\compte, X tant un lecteur de disque et compte le nom du compte utilis pour linstallation. Exemple :
d:\app\oracle
OracleHome
ORACLE_BASE\product\v.v.v\type_n, ORACLE_BASEdsignantlerpertoireOracleBase, producttantuneconstante
indiquant que les produits sont ici, v.v.v le numro de version du produit, type le type de produit (db pour un
serveurdebasededonnes,clientpourunclient,etc.)et nunnumrodordredansletype.
Exemple :d:\app\oracle\product\11.1.0\db_1
Avantlaversion10,lecheminOracleBasetaitdutypeX:\Oracle(parexempleD:\Oracle)etlecheminOracleHome
dutype ORACLE_BASE\OraVV, VV tant le numro de version du produit (par exemple D:\Oracle\Ora92).Lenomdu
OracleHometaitdelaformeOraHomeVV(parexempleOraHome92)etlacldelabasederegistredelaformeHOMEn,
n tant un numro dordre (par exemple HOME0). Puis en version 10, le chemin Oracle Base tait du type
X:\oracle\product\v.v.v et le chemin Oracle Home du type ORACLE_BASE\type_n (cest le chemin Oracle Base qui
comportaitlinformationdeversion).
Si vous installez Oracle11g sur un systme sur lequel une version prcdente dOracle est installe,
linstalleur va conserver lancien chemin du rpertoire Oracle Base et adapter en consquence le chemin
OracleHome.Encasdedoute,consultezlesvaleursdanslabasederegistre.

Sur la plateforme Windows, il nest pas habituel de crer un compte spcifique pour installer Oracle. Si
vousutilisezlecompteadministrateurdelamachine,vouspouvezmodifierlecheminpropospourOracle
Baseparlinstalleuretmettreoracleenguisedecompte.
Sur plateforme Unix ou Linux depuis la version 10, les recommandations sont les suivantes pour ces deux
rpertoires :
OracleBase
/ pm/ ccc/ compte, pm tant un point de montage dun systme de fichiers (avec p une chane et m un numro
dordre),cccunechanequelconqueetcomptelenomducompteutilispourlinstallation.Exemple :/u01/app/oracle

ENI Editions - All rights reserved - Algeria Educ

- 3-

OracleHome
ORACLE_BASE/product/v.v.v/type_n,ORACLE_BASEdsignantlerpertoire OracleBase, v.v.vlenumrodeversiondu
produit,typeletypedeproduit(dbpourunserveurdebasededonnes,clientpourunclient,etc.)etnunnumro
dordredansletype.Exemple:/u01/app/oracle/product/11.1.0/db_1
Avantlaversion10,lesrecommandationstaientlesmmes,maissanslapartie type_ n.
Lapartie type_ nducheminOracleHomepermetdinstallerdiffrentsproduitsaveclemmenumrodeversionsous
lemmerpertoireOracleBase.Celapermetaussidinstallerplusieursfoislemmeproduit,danslammeversion,
souslemmerpertoireOracleBase.
EndehorsdurpertoireOracleHome,lerpertoireOracleBaseestdestincontenirquatreautresrpertoires :

oradatapourlesfichiersdesbasesdedonnes

adminpourlesfichiersdadministrationdesbasesdedonnes

cfgtoollogspourlesfichiersjournauxdesassistantsdeconfiguration

diagpourleRfrentielduDiagnostiqueAutomatique(AutomaticDiagnosticRepository ADR).

Puisqueplusieursbasessontsusceptiblesdtreprsentessurlesystme,lestandardOFArecommandedecrer
unsousrpertoireparbase,portantlenomdelabase(paramtreDB_NAME),danslesrpertoiresoradataetadmin.
Exemple :

- 4-

ENI Editions - All rights reserved - Algeria Educ


Surcesdeuxexemples,deuxbases(ORCLetTEST)sontprsentessurlesystme.
Les diffrents sousrpertoires du rpertoire dadministration sont prsents dans le chapitre Cration dune
nouvellebasededonnes.
Encequiconcernelesfichiersdelabasededonnes,lesrecommandationsdenommagesontlessuivantes :
Fichierdecontrle
control.nn.ctl, nntantunnumrodordre(01,02,etc.).
Fichierdejournalisation
redonn.log,nntantlenumrodugroupe(01,02,etc.).
Fichiersdedonnes
tablespacenn.dbf,tablespacetantlenomdutablespaceet nnlenumrodordredufichierauseindutablespace
(01,02,etc.).

b.Rpartitiondesfichiersdelabasededonnessurplusieursdisques
Dunemaniregnrale,ilestsouhaitabledesparerlestockagedusystmedexploitation,dulogicielOracleetdes
basesdedonnes,chaquestockagepouvanttreauchoixundisque,unvolumelogiqueouunvolumeRAID.
Danslecasovouscrezunebasededonnessurdesdisquesquinesontpasorganissenvolumeslogiquesou
enRAID,ilestrecommandderpartirlesfichiersdelabasededonnessurdiffrentsdisquesafindamliorerles
performancesetlascurit.
Vous pouvez donc tre amens utiliser plusieurs rpertoiresoradata situs sur diffrents points de montage ou
lecteursdedisque.
SelonlarecommandationOFA,cesrpertoires oradatasupplmentairesdoiventtrecrsenrespectantlamme
arborescencequelerpertoireoradataprincipal.
Exemple:
Windows
e:\app\oracle\oradata

ENI Editions - All rights reserved - Algeria Educ

- 5-

UnixouLinux
/u02/app/oradata/oradata
partirdel,selonlessystmesdestockagedisponibles,plusieursorganisationssontdisponibles.
Exemple:

Axe

Nature

Contenu

Disque

Systmedexploitation

Disque

LogicielOracle

NdisquesenRAID0+1

Fichiersdedonnesdes
tablespaces
Fichiersdecontrle

NdisquesenRAID0+1

Fichiersdejournalisation

Disque

Fichiersdejournalisation
archivs
Sauvegardessurdisque

SurplateformeLinuxouUnix,ilestpossibledutiliserleslienssymboliquespourfairecroirequelesfichiers
sontsitussousunseulpointdemontagealorsquilssontenfaitrpartissurplusieurs.

Sivouslesouhaitez,vouspouvezadopteruneorganisationOFAnonstandard,dumomentquevousen
respectezlaphilosophie(sparationdesproduitsOracle,sparationdesbasesdedonnes).

4.Prinstallation
a.SurplateformeWindows
Seconnecterausystme
Oracle doit tre install laide dun compte membre du groupe Administrateur. Si linstallation seffectue sur un
serveurcontrleurdedomaine(principalousecondaire),lecomptedoittremembredugroupeAdministrateurde
domaine.
Dans cet ouvrage, nous supposerons quun compte nomm oracle , membre du groupe Administrateur, a t
spcialementcrpourloccasion.
Vrifierlesprrequislogicielsetmatriels
Oracle11gsupportelessystmesdexploitationWindowssuivants :

Windows2000(servicepack1ousuprieur)

WindowsServer2003(touteslesditions)

WindowsXPProfessional

WindowsVista(Business,EnterpriseetUltimate).

Dans cet ouvrage, nous utiliserons une plateforme Windows Server 2003 Entreprise Edition. Linstallation sur les
autresplatesformesWindowsestidentique.
Lesexigencesmatriellessontlessuivantes :

- 6-

ENI Editions - All rights reserved - Algeria Educ

1Godemmoirephysiqueminimum

Ledoubledemmoirevirtuelle

200Modespacetemporaire

Environ3GodespacedisquepourlesproduitsOracle

Environ2Godespacedisquesupplmentairesivoussouhaitezcrerunebasededonnesdedpartlors
delinstallation
256couleurspourlavido.

Sivousnavezque256Modemmoirephysique,vousnaurezpassuffisammentdemmoirepourcrerune
basededonnesaucoursdelinstallation vousdevrezcrerlabasededonnesultrieurement(avecune
petiteSGA).

b.SurplateformeLinux
Seconnecterausystmeentantquutilisateurroot
Lespremirestchesdelaphasedeprinstallationdoiventtreeffectuesentantqueroot .
Vrifierlesprrequislogicielsetmatriels
Oracle11gsupportelessystmesdexploitationLinuxsuivants :

OracleEnterpriseLinux4ouRedHatEnterpriseLinux4(noyau2.6.9)

OracleEnterpriseLinux5ouRedHatEnterpriseLinux5(noyau2.6.18)

SUSEEnterpriseLinux10(noyau2.6.16.21).

Danscetouvrage,nousutiliseronsuneplateformeRedHatEnterpriseLinux4.Linstallationsurlesautresplates
formesLinux(ouUnixengnral)estsimilaire :lesprincipessontlesmmes,maiscertainesvaleursoucertaines
commandespeuventdiffrer(reportezvousaumanueldinstallationdevotreplateforme).
Pourchaquedistribution,uncertainnombredepackagesdoiventtreinstalls(avecuneversionminimum).
ExemplepourRedHatEnterpriseLinux4 :
binutils-2.15.92.0.2-18
compat-libstdc++-33.2.3-47.3
elfutils-libelf-0.97-5
elfutils-libelf-devel-0.97-5
glibc-2.3.4-2.19
glibc-common-2.3.4-2.19
glibc-devel-2.3.4-2.19
glibc-headers-2.3.4-2.19
gcc-3.4.5-2
gcc-c++-3.4.5-2
libaio-devel-0.3.105-2
libaio-0.3.105-2
libgcc-3.4.5
libstdc++-3.4.5-2
libstdc++-devel-3.4.5-2
make-3.80-5
sysstat-5.0.5
unixODBC-2.2.11
unixODBC-devel-2.2.11

ENI Editions - All rights reserved - Algeria Educ

- 7-

LescriptsuivantpermetdevrifiercesexigencessurRedHatEnterpriseLinux4 :
echo "* Version du noyau"
uname -r
echo "* Packages"
# Liste des packages
listePackages=$(cat < _EOF_
binutils
libaio
libaio-devel
gcc
gcc-c++
glibc
glibc-common
glibc-headers
glibc-devel
libstdc++
libstdc++-devel
compat-libstdc++-33
make
sysstat
elfutils-libelf
elfutils-libelf-devel
unixODBC
unixODBC-devel
_EOF_
)
# Recherche les packages et indique si le package est
# installe ou pas.
for package in $listePackages;
do
version=$(rpm -q $package --qf "%{version} %{arch}")
if [ $? = 0 -a "$version" ]
then
printf "+ %-25s %-15s %s\n" $package $version
else
printf "o %-25s %s\n" $package "?"
fi
done
Rsultat :
* Version du noyau
2.6.9-67.0.15.ELsmp
* Packages
+ binutils
+ libaio
+ libaio-devel
+ gcc
+ gcc-c++
+ glibc
+ glibc-common
+ glibc-headers
+ glibc-devel
+ libstdc++
+ libstdc++-devel
+ compat-libstdc++-33
+ make
+ sysstat
+ elfutils-libelf
+ elfutils-libelf-devel
+ unixODBC
+ unixODBC-devel

2.15.92.0.2
0.3.105
0.3.105
3.4.6
3.4.6
2.3.4
2.3.4
2.3.4
2.3.4
3.4.6
3.4.6
3.2.3
3.80
5.0.5
0.97.1
0.97.1
2.2.11
2.2.11

i386
i386
i386
i386
i386
i686
i386
i386
i386
i386
i386
i386
i386
i386
i386
i386
i386
i386

Lesexigencesmatriellessontlessuivantes :

- 8-

1Godemmoirephysiqueminimum

Espace swap : 1,5 fois la mmoire physique si cette dernire fait moins de 2 Go ou gal la mmoire
ENI Editions - All rights reserved - Algeria Educ

physiquesicettedernireestcompriseentre2Goet8Go

400Modespacetemporaire(/tmp)

Environ3,5GodespacedisquepourlesproduitsOracle

Environ2Godespacedisquesupplmentairesivoussouhaitezcrerunebasededonnesdedpartlors
delinstallation

LescriptsuivantpermetdevrifiercesexigencessurRedHatEnterpriseLinux4 :
echo "* Mmoire (Mo)"
free -m
echo "* Disque"
df -h /tmp /u0*
Rsultat :
* Memoire (Mo)
total
used
free
shared
buffers
Mem:
1010
966
44
0
4
-/+ buffers/cache:
591
419
Swap:
2559
116
2443
* Disque
Filesystem
Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
9.9G 2.8G 6.6G 30% /
/dev/mapper/VolGroup01-LogVol100
9.9G 5.4G

4.0G

cached
370

58% /u01

Configurerlenoyau

Paramtre

Valeur

Fichier

semmsl

250

semmns

32000

semopm

100

semmni

128

shmall

2097152

/proc/sys/kernel/shmall

shmmax

lamoitidelammoirephysique

/proc/sys/kernel/shmmax

shmmni

4096

/proc/sys/kernel/shmmni

file-max

65536

/proc/sys/fs/file-max

ip_local_port_range

102465000

/proc/sys/net/ipv4/ip_

/proc/sys/kernel/sem

local_port_range
rmem_default

4194304

/proc/sys/net/core/
rmem_default

rmem_max

4194304

/proc/sys/net/core/
rmem_max

wmem_default

262144

/proc/sys/net/core/

ENI Editions - All rights reserved - Algeria Educ

- 9-

wmem_default
wmem_max

262144

/proc/sys/net/core/wmem_max

LescriptsuivantpermetdevrifiercesparamtressurRedHatEnterpriseLinux4 :
listeVariables=$(cat << _EOF_
kernel.shmall
kernel.shmmax
kernel.shmmni
kernel.sem
fs.file-max
net.ipv4.ip_local_port_range
net.core.rmem_default
net.core.rmem_max
net.core.wmem_default
net.core.wmem_max
_EOF_
)
for variable in $listeVariables;
do
sysctl $variable
done
Rsultat :
kernel.shmall = 2097152
kernel.shmmax = 33554432
kernel.shmmni = 4096
kernel.sem = 250
32000
32
128
fs.file-max = 102445
net.ipv4.ip_local_port_range = 3276861000
net.core.rmem_default = 110592
net.core.rmem_max = 131071
net.core.wmem_default = 110592
net.core.wmem_max = 131071
Surcetexemple,lesvaleursengrasnesontpasconformesauxrecommandationsOracle.Siundesparamtresdu
noyauaunevaleurinfrieurelavaleurrecommande,vouspouvezditerlefichier/etc/sysctl.confetajouterou
modifierdeslignesdeconfigurationdesparamtres :
Exempledelignesajoutesdanslefichier :
# modifications pour oracle
kernel.shmmax = 536870912
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
Pourquelesnouvellesvaleurssoientprisesencompteimmdiatement,excutezlacommandesuivante :
sysctl -p
Crerlesgroupesetlutilisateur
Ensuite,vousdevezcrerdeuxgroupesetuncompteutilisateurquiserautilispourlinstallationetquiseradoncle
propritairedeslogicielsOracle.
Lors de la premire installation dOracle sur un systme, linstalleur cre un fichier oraInst.loc (dans le
rpertoire/etcsousLinux).CefichiercontientlecheminverslerpertoirecontenantlinventairedesproduitsOracle
installssurlamachine,ainsiquelenomdugroupeOracleInventory(typiquementoinstall)utilispourprotger
laccs au rpertoire dinventaire. La prsence du fichier oraInst.loc permet de dterminer si le groupe Oracle
Inventoryexistedj,etderetrouversonnom.
Comme indiqu dans le chapitre Les bases de larchitecture Oracle, un groupe particulier (nomm gnriquement

- 10 -

ENI Editions - All rights reserved - Algeria Educ

OSDBA) est utilis pour identifier les comptes utilisateurs qui peuvent se connecter AS
lauthentificationparlesystmedexploitation.Traditionnellement,cegroupesappelledba.

SYSDBA en utilisant

Encomplment,ilestpossibledecrerungroupe(traditionnellementnommoper)pourlauthentificationAS
SYSOPER(cf.ChapitreLesbasesdelarchitectureOracle).
Traditionnellement, le compte utilisateur utilis pour linstallation sappelleoracle il a le groupe Oracle Inventory
commegroupeprincipaletlegroupeOSDBAcommegroupesecondaire.
Lescommandessuivantespermettentdecrerlesdeuxgroupesetlecomptesilsnexistentpasdj :
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle

Danscetouvrage,leterme compteoracle dsigneralecompteutilispourlinstallationdOracle.Sivous


appelezcecompteautrement,adaptezlesexemplesaunomquevousavezchoisi.

Dfinirleslimitesdushellpourlecompteoracle
Pouramliorerlesperformancesdulogiciel,vousdevezaugmenterleslimitessuivantespourlecompteoracle :
Nombremaximumdedescripteursdefichiersouverts:65535
Nombremaximumdeprocessus:16384
Pouraugmenterceslimites :

Ajoutezleslignessuivantesdanslefichier/etc/security/limits.conf:

oracle
oracle
oracle
oracle

nproc
nproc
nofile
nofile

2047
16384
1024
65536

Ajoutezleslignessuivantesdanslefichier/etc/pam.d/login(siellesnexistentpasdj) :

session
session

soft
hard
soft
hard

required
required

/lib/security/pam_limits.so
pam_limits.so

Ajoutezleslignessuivantesdanslefichier/etc/profile(adapterenfonctiondeladistributionetdushellpar
dfautdelutilisateuroracle) :

if [ $USER = "oracle" ]; then


if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Crerlesrpertoires
Pour respecter le standard OFA prsent prcdemment, vous devez crer au minimum le rpertoire parent du
rpertoireOracleBase,parexemple/u01/app.
VouspouvezutiliserunrpertoireOracleBasedjexistant,dumomentquevousutilisezbienunrpertoire
OracleHomediffrent.Noubliezpasquilfautprvoirenviron3,5GopourlesproduitsOracleet2Gopourla
basededonnesdedpart.
Les commandes suivantes permettent de crer le rpertoire, et de dfinir le propritaire, les groupes et les
permissions :

ENI Editions - All rights reserved - Algeria Educ

- 11 -

mkdir -p /u01/app
chown -R oracle:oinstall /u01/app/
chmod -R 775 /u01/app/

LesrpertoiresoracleetoraInventoryserontcrsparlinstalleurdanslerpertoireparentdurpertoire
OracleBase(/u01/app/surnotreexemple).Lecompteoracledoitdonc,bienavoirdesdroitsdcrituredans
cerpertoire,souspeinederecevoiruneerreurlorsdelinstallation.
Desrpertoiressupplmentairespeuventtreprvussurdautresdisquespourlabasededonnesetlazonede
rcupration rapide (flash recovery area). Le propritaire, les groupes et les permissions doivent tre dfinis
lidentiquedupremierrpertoire.
Configurerlenvironnementducompteoracle

Editezlefichierdedmarragedushelldelutilisateur :

BashShell(bash)surRedHat .bash_profile
Bourneshell(sh),Bashshell(bash)surSUSEouKornshell(ksh).profile
Cshell(cshoutcsh).login

Ajoutezlalignesuivantedanscefichierpourdfinirlesdroitsdaccspardfautdesnouveauxfichiers :

umask 022
Si le rpertoire /tmp ne comporte pas suffisamment despace, vous pourrez dfinir les variables denvironnements
TMPetTMPDIRetyindiquerlenomdunrpertoirecontenantsuffisammentdespacelibre.Exemple :
TMP=/home/oracle/tmp
TMPDIR=/home/oracle/tmp
export TMP TMPDIR
Seconnecterausystmeentantquutilisateuroracle
Pourlasuitedelinstallation,vousdevezvousconnecterentantquutilisateuroracle.

5.InstallationavecOracleUniversalInstaller
a.Vuedensemble
Oracle Universal Installer (OUI) fonctionne de la mme manire, peu de chose prs, sur les diffrentes plates
formes.
OUIproposedeuxgrandsmodespourlinstallation :

Linstallationdebase

Linstallationavance.

Linstallation de base permet dinstaller Oracle avec les options standards, en un petit nombre dtapes. Dans ce
mode, si vous choisissez de crer une base de donnes de dpart, cette dernire utilisera le systme de fichiers
pourlestockageetlemmemotdepasseseraattribuauxcomptesSYS,SYSTEM,SYSMANetDBSNMP.
Linstallation avance offre un plus grand contrle sur linstallation, notamment sur les composants installs et la
configurationdelabasededonnesdedpart.
En rgle gnrale, sauf pour un test rapide, je dissocie linstallation dOracle proprement dite de la cration de la
basededonnes.Cetteapprocheprsentedeuxavantages :

- 12 -

Aprslinstallationduproduit,maisavantlacrationdelabasededonnes,jepeuxappliquerlesventuels

ENI Editions - All rights reserved - Algeria Educ

patchsapparusdepuislasortieduproduit.

LorsdelacrationdelabasededonnesenSQLouaveclassistantConfigurationdebasededonnes,je
peuxconfigurerlabasededonnestrsprcismentenfonctiondesbesoins.

Avecunetelleapproche,linstallationdebase,aveccrationounondunebasededonnesdedpart,rpondla
majoritdesbesoins.Cestleseulmodedinstallationquiseraprsentdanscetouvrage.
Les bases de donnes de dpart dOracle sont intressantes pour avoir rapidement un environnement
oprationnel pour le test ou le dveloppement. Par contre, ces bases contiennent un grand nombre de
schmas et de fonctionnalits qui ne sont pas forcment utiles pour une base de donnes de production. Cest
une raison supplmentaire pour installer Oracle sans crer de base de donnes, puis crer ensuite la base de
donnes,laidedelassistantgraphique,oulamain(chapitreCrationdunenouvellebasededonnes).
Cettepartieestdoncorganisedelamaniresuivante :

b.LancerOracleUniversalInstallersurplateformeWindows

c.LancerOracleUniversalInstallersurplateformeLinux

d.Installationdebase

IlestpossibledutiliserOracleUniversalInstallerenmodenoninteractifenutilisantunfichierderponse.Il
est aussi possible de cloner une installation Oracle Home existante. Pour plus dinformations, consultez la
documentation OracleDatabaseInstallationGuide devotreplateforme.

b.LancerOracleUniversalInstallersurplateformeWindows

Pour dmarrer linstalleur, lancez lapplication setup.exe qui se trouve sur le mdia utilis pour linstallation (ou
danslerpertoiredatabasesivousaveztlchargleproduitsurlesiteOTN).UnefentredelancementdOracle
Universal Installer saffiche. Cette fentre vrifie les prrequis puis lance Oracle Universal Installer si les
exigencessontvrifies.LapagedaccueildOracleUniversalInstallersaffichealors.

ENI Editions - All rights reserved - Algeria Educ

- 13 -


Pourlinstallationdebase,reportezvouslasectionInstallationdebase.

c.LancerOracleUniversalInstallersurplateformeLinux
Oracle Universal Installer, en mode interactif, doit tre lanc dans un environnement X Window. Vous devez donc
dmarrerlinterfacegraphiquedansvotresessionoracle,parexempleaveclacommandestartx.
Si laffichage X ne seffectue pas sur le systme sur lequel le produit est install, positionnez la variable
denvironnementDISPLAYpourdporterlaffichagesuruneautremachine.
Pour dmarrer linstalleur, lancez lapplicationrunInstaller qui se trouve sur le mdia utilis pour linstallation(ou
dans le rpertoiredatabasesivousaveztlchargleproduitsurlesiteOTN).Lescriptvrifielesprrequispuis
lanceOracleUniversalInstallersilesexigencessontvrifies.LapagedaccueildOracleUniversalInstallersaffiche
alors.

- 14 -

ENI Editions - All rights reserved - Algeria Educ


Pourlinstallationdebase,reportezvouslasectionInstallationdebase.

d.Installationdebase
Slectionnerunemthodedinstallation

ENI Editions - All rights reserved - Algeria Educ

- 15 -


LamthodeInstallationdebasepermetdinstallerOracletrsrapidementensaisissantquelquesinformationssur
lepremiercran :
EmplacementdurpertoiredorigineOracleHome
RpertoiredelinstallationdOracle(OracleHome).
Typedinstallation
Auchoix :EnterpriseEdition,StandardEdition,StandardEditionOneetPersonalEdition(Windowsuniquement).
Crerunebasededonnesdedpart(1482MB)supplmentaire
Permetdecrerunebasededonnesdetype universel (pourplusdedtails,voirlasectionCrationdelabase
dedonneslaidedelassistantgraphiquedanslechapitreCrationdunenouvellebasededonnes).
Nomglobaldebasededonnes
Nomglobaldelabasededonnessouslaformenom_base[.domaine](parexempleorcl.olivier-heurtel.priv).
Motdepassedebasededonnes
MotdepassedescomptesSYS,SYSTEM,SYSMANetDBSNMP.
SurplateformeLinuxouUnix,loptionGroupeDBAUNIXestproposeenplus :

Cette option permet de choisir le nom du groupe utilis pour identifier les comptes utilisateurs qui peuvent se
connecterAS SYSDBAenutilisantlauthentificationparlesystmedexploitation legroupedba,prcdemmentcr
ceteffetetaffectlutilisateuroracle,estpropos.

- 16 -

SaisissezlesvaleurssouhaitespuiscliquezsurleboutonSuivant.

ENI Editions - All rights reserved - Algeria Educ

Slectionnerlerpertoiredelinventaireetlesinformationsdidentification

CetcranestaffichuniquementsurplateformeLinuxouUnix,lorsdelapremireinstallationdunproduitOracle.Il
permetdedfinirlesinformationsrelativesaurpertoiredinventaire(cheminetgroupeayantlaccsencrituresur
cerpertoire).Sivousavezbienrespectlestapesdelaphasedeprinstallation,lesvaleursproposesdoivent
tre correctes. Le rpertoire dinventaireoraInventory est cr par dfaut dans le rpertoire parent du rpertoire
OracleBaseetlenomdugroupedoittreceluidugroupeOracleInventorycrprcdemment(traditionnellement
oinstall).

Saisissez,sibesoin,lesinformationsdemandesetcliquezsurleboutonSuivant.

Vrificationdeprrequispropresauproduit

ENI Editions - All rights reserved - Algeria Educ

- 17 -


Linstalleurvrifiequelesystmeestcorrectementconfigur.Sivousavezrespectlestapesdelaphasedepr
installation,ilnedevraitpasyavoirdeproblme.

Silavrificationchoue,slectionnezlaligneconcerneetanalysezlacauseduproblme :

- 18 -

ENI Editions - All rights reserved - Algeria Educ

Sipossible,corrigezleproblmeetrecommencezlavrification(boutonRessayer).

Sivouspensezquilnyapasdeproblme,vouspouvezcocherlacase :

Lorsque les vrifications sont termines avec succs, vous pouvez cliquer sur le bouton Suivant pour poursuivre
linstallation.Silresteunevrificationavecunchec,uneconfirmationestdemande :

Vouspouvezalorspoursuivrelinstallation,maisvosrisquesetprils.
InscriptionOracleConfigurationManager

Cet cran est affich uniquement si une base de donnes de dpart est cre durant linstallation il permet
dactiverOracleConfigurationManager.
Oracle Configuration Manager est utilis pour collecter des informations sur la configuration dune installation. Ces
informations sont envoyes intervalles rguliers dans un rfrentiel du support Oracle. Lorsquune demande de
service(ServiceRequest)estsoumiseOracle,ellepeuttreassocieauxinformationsdeconfigurationcollectes
aupralable.
Cette fonctionnalit nest pas prsente plus en dtail dans ce livre. A noter quelle peut tre installe
ultrieurement. Pour plus dinformations, consultez la documentation "Oracle Configuration Manager Installation
andAdministrationGuide"(cejour,cettedocumentationexisteuniquementenversion10.2).

ENI Editions - All rights reserved - Algeria Educ

- 19 -

CliquezsurleboutonSuivant.

Rsum

Danscetcran,vouspouveznotammentreprerlescheminsutilisspourlesrpertoiresOracleBaseetOracleHome,
ainsiqueleslanguesduproduit.
LeslanguesduproduitsontleslanguesutilisesparOUIlorsdelinstallation,etnonleslanguesdisponibles
danslabasededonnesOracleproprementdite.VouspouvezinstallerOracleenanglaisaveclinstalleuret
utiliserplustardlefranais,oudautreslangues,danslabasededonnes.

CliquezsurleboutonInstallerpourlancerlinstallation.

InstallationetconfigurationdulogicielOracle
Pendantlinstallation,uncranprsentantltatdavancementestaffich.

- 20 -

ENI Editions - All rights reserved - Algeria Educ


Assistantsdeconfiguration
lafindelinstallation,plusieursassistantsdeconfigurationsontautomatiquementlancsparlinstalleur.

Cesassistantsnesontlancsquesiunebasededonnesdedpartestcreaucoursdelinstallation.Si

ENI Editions - All rights reserved - Algeria Educ

- 21 -

cenestpaslecas,cesassistantsnesontpaslancsetilfaudraconfigurerOracleNetultrieurement.
UnefentrespcifiquedavancementsaffichepourlassistantConfigurationdebasededonnes :

lafindelacrationdelabasededonnes,lcransuivantsaffiche :

- 22 -

ENI Editions - All rights reserved - Algeria Educ


Cet cran indique notamment lURL utiliser pour accder la console Enterprise Manager. Un clic sur le bouton
Gestion des mots de passe ouvre une fentre de dialogue qui permet dactiver ou dsactiver des comptes
utilisateuretdedfinirlesmotsdepassedecesdiffrentscomptes :

Comme vous pouvez le constater, la base de donnes de dpart dOracle contient un grand nombre de comptes
ENI Editions - All rights reserved - Algeria Educ

- 23 -

utilisateurs. Pour plus dinformations sur ces diffrents comptes, reportezvous la documentation Oracle
DatabaseInstallationGuide .Pourverrouiller/dverrouilleruncompte,ilsuffitdecliquerdanslacolonneVerrouiller
lecompte.
Excuterlesscriptsdeconfiguration

CetcranestaffichuniquementsurplateformeLinuxouUnix,etvousinviteexcuterdesscriptsdeconfiguration
entantquutilisateurroot.
LescriptorainstRoot.shestexcutuniquementlorsdelapremireinstallationdunproduitOraclesurlamachine.
IlmodifielesdroitsetlegroupedurpertoireoraInventory.
Lescriptroot.shcopietroisfichiers(dbhome,oraenvetcoraenv)dansunrpertoirelocalbin(demandparlescript,
pardfaut/usr/local/bin),crelefichier/etc/oratab(silnexistepasdj)etyajouteuneentrepourlabasede
donnesventuellementcrpendantlinstallation.Lerleetlutilisationdecesdiffrentsfichiersserontprsents
ultrieurement.

- 24 -

Pourexcutercesdeuxscripts,ouvrezunefentredeterminalentantqueroot :

ENI Editions - All rights reserved - Algeria Educ

Tapez[Entre]pouraccepterlavaleurpardfautproposeparchaqueinviteafficheparlescriptroot.sh.

Lorsquelescriptesttermin,cliquezsurleboutonOKdelafentrededialogue.

Findelinstallation
Linstallationesttermine underniercransaffiche :

ENI Editions - All rights reserved - Algeria Educ

- 25 -

Danslecasovousavezcrunebasededonnesdedpart,cetcranrappellelURLutiliserpouraccderla
consoleEnterpriseManager.Danslecascontraire,lazone"noubliezpas"nestpasaffiche.

CliquezsurleboutonQuitterpourquitterOracleUniversalInstaller(uneconfirmationvousserademande).

6.Postinstallation
a.TlchargeretappliquerdespatchesOracle
LaversiondOraclequevousvenezdinstallerpartirdunmdiaouduntlchargementsurOTNnecontientpas
lesdernierspatchesapplicablesauproduits.Parailleurs,Oraclepubliergulirementdespatchespourcesproduits
etvouspouvezdonctreamensmettrejourvotreconfigurationintervallesrguliers.
Pouridentifierettlchargerlespatchesdunproduit,vousdevezallersurlesiteWebOracleMetaLink,ladresse
suivante :http://metalink.oracle.com

lheureocetouvrageestrdig,Oracleestentraindemettreenplaceunenouvelleversiondesonsite
desupport(dornavantappelMyOracleSupport).Ilestdoncpossiblequevousayezdespageslgrement
diffrentesdecellesprsentesici.
Pour accder OracleMetaLink, vous devez disposer dun compte pour ouvrir un compte (lien Register For
Metalink),vousdevezpossderunidentifiantdesupportquivousestfournidanslecadreduncontratdesupport.

Pourvousconnecter,cliquezsurlelienLoginToMetalink,puissaisissezvotreidentifiantetvotremotdepasse.
Une fois connect, cliquez sur longlet Patches & Updates en haut droite de lcran puis sur le lien Simple
Search.

Danslapagequisaffiche :

- 26 -

DanslechampSearchBy,slectionnezProductorFamily,puissaisissezRDBMSServer.

DanslechampRelease,slectionnezlaversionsouhaiteduproduit.

DanslechampPatchType,slectionnezlavaleurPatchset/Minipack.

DanslechampPlatformorLanguage,slectionnezvotreplateforme.

CliquezsurleboutonGopourobtenirlalistedespatchesdisponibles.
ENI Editions - All rights reserved - Algeria Educ

Exemple

lheureocetouvrageestrdig,OracleDatabaseestdistribuenversion11.1.0.6etlePatchset11.1.0.7nest
pasencoredisponible(maisildevraitltreaumomentovouslirezcelivre).
UnPatchsetouMinipackestunregroupementdepatchesquicorrigentplusieursproblmes.Enrglegnrale,les
Patchsets sont cumulatifs (le Patchset 2 reprend les corrections du Patchset 1) et peuvent tre installs
systmatiquement sans avoir besoin de les qualifier Oracle indique que les correctifs ont un faible impact sur le
systmeetonttcompltementtests(maislerisquezronexistepas).Sinon, il est possible dappliquerdes
patches individuels qui corrigent un problme prcis (indiquez Patch dans le champ Patch Type) ces patches ne
doiventgnralementtreappliqusquenrponseunproblmeprcisidentifidanslabasedesbugs.
Exemplederecherchedepatchesindividuels

ENI Editions - All rights reserved - Algeria Educ

- 27 -

Cliquez sur licne

pour afficher la note du patch qui dcrit les problmes corrigs et la procdure

dinstallation.

Cliquezsurlicne

pourtlchargerlepatchpuisprocdezsoninstallation(suivezlaprocdureindique

danslanote).
La procdure dinstallation dpend du patch. En rgle gnrale, les Patchsets sinstallent avec Oracle Universal
Installeretlesautresaveclutilitaireopatch(installdanslesousrpertoireOPatchdurpertoireOracleHome).Dans
lecasdesPatchsets,ilyalaplupartdutempsuneprocduredemiseniveauappliquerauxbasesdedonnes
(excutiondunouplusieursscripts).
Oracle Enterprise Manager peut tre utilis pour rcuprer et appliquer des patches il peut mme tre
configurpourtlchargerautomatiquementlespatchesdisponibles.

b.Configurerlenvironnementdetravail
Choixdulangageetdujeudecaractres
Oraclesupportediffrentslangagespourlinteractionaveclabasededonnes.Lelangagecourantestdfinidansla
variabledenvironnementNLS_LANG.

NLSsignifieNationalLanguageSupport.
Cettevariablealeformatsuivant : LANGAGE_PAYS.CARACTERES
Avec :
LANGAGE
Langageutilispourlesmessages(ainsiquelesnomsdejouroudemois).
PAYS
Nomdupays(dfinitdesconventionspardfautpourlesformatsdedatesetdenombres,lesymbolemontaire,
etc.).
CARACTERES
Jeu de caractres utilis pour laffichage des messages (peut tre diffrent du jeu de caractres utilis pour le
stockagedeschanesdecaractresdanslabasededonnes voirlechapitreLesoutilsdadministrationCration
dunenouvellebase).
Exemple :
FRENCH_FRANCE.WE8ISO8859P15
AMERICAN_AMERICA.US7ASCII
Vous pouvez parfaitement choisir un langage et un pays qui ne correspondent pas. Ainsi
AMERICAN_FRANCE.WE8ISO8859P15permetdavoirdesmessagesenanglaismaisdesconventionsfranaisespardfaut
pourlesformatsdedatesetdenombres.
Lesjeuxdecaractreslespluscourammentrencontrssont :
US7ASCII
ASCII7bitAmerican.
WE8ISO8859P1
ISO88591WestEuropean(negrepaslesymboledeleuro).
WE8ISO8859P15

- 28 -

ENI Editions - All rights reserved - Algeria Educ

ISO885915WestEuropean(grelesymboledeleuro).
UTF8
Unicode3.0UTF8Universal(grelesymboledeleuro).
WE8PC850
IBMPC Code Page 850 8bit West European (sur plateforme Windows, permet davoir les accents dans les
environnementslignedecommande).
WE8PC858
IBMPCCodePage8588bitWestEuropean(grelesymboledeleuro).
WE8MSWIN1252
MSWindowsCodePage12528bitWestEuropean(grelesymboledeleuro).

Consultez la documentation Oracle Database Globalization Support Guide pour avoir plus dinformations
surlesupportdesdiffrentslangagesetpays.

PlateformeWindows
Sur plateforme Windows, il ny a rien de particulier faire : linstalleur a pris soin de positionner plusieurs
paramtres dans la base de registre et de dfinir la variable denvironnement PATH, en y mettant notamment le
cheminverslerpertoirebin.
Vous pouvez donc, sans problme, lancer des outils Oracle en ligne de commande (sqlplus par exemple), sans
mentionnerlechemincomplet.
Pour
chaque
Oracle
Home,
la
base
de
registre
contient
une
cl
HKEY_LOCAL_MACHINE\
SOFTWARE\ORACLE\KEY_nom_oracle_homequistockeplusieursparamtresrelatifsauOracleHome.
VousytrouvereznotammentunparamtreORACLE_SID.Ceparamtrecontientlenomdeladernireinstancecre
dansleOracleHomeconcern cestlinstancelaquellevousvousconnectezpardfautquandvouslancezunoutil
dadministrationdirectementsurleserveur(cf.sectionSQL*PlusdanslechapitreLesoutilsdadministration).
La base de registre contient aussi un paramtreNLS_LANG, dfini par dfaut par linstalleur en fonction de la
localisation du systme dexploitation (typiquement FRENCH_ FRANCE.WE8MSWIN1252 pour une version franaise de
Windows).
Les diffrents paramtres prsents dans la base de registre sont dcrits dans la documentation Oracle
DatabasePlatformGuideforWindows.
LesparamtresdelabasederegistrecommeORACLE_SIDetNLS_LANGsontutilisspardfautparlesdiffrentsoutils
Oracle. Si vous souhaitez utiliser des valeurs diffrentes, avant de lancer un outil, vous pouvez modifier les
paramtres de la base de registre ou dfinir des variables denvironnement de mme nom (dans le panneau de
configurationSystmeoudansunefentredecommandes).
VouspouveznotammentutiliserlejeudecaractresWE8PC850sivoussouhaitezavoirunaffichagecorrect
desaccentsdanslesoutilslignedecommande(permetdviterdesmessagesdutypeConnect).
LorsquevotresystmecomporteplusieursOracleHome,lavariabledenvironnementPATHcontientplusieurschemins
verslesrpertoiresbindesdiffrentsOracleHome,dansuncertainordre lepremierchemintrouvest,enquelque
sorte, celui duOracle Home par dfaut. Si vous lancez un outil sans mentionner de chemin complet, cest celui du
Oracle Home par dfaut qui sera lanc, ce qui risque de poser des problmes si vous souhaitez travailler sur une
basededonnesdunautreOracleHome(etdoncpeuttreduneautreversion).
Pourvitercegenredeproblme,unepremiresolutionconsisteutiliserunchemincompletpourlancerloutildu
bonOracleHome.LadeuximesolutionconsistechangerdeOracleHomepardfaut,soitenmodifiantsoimmela
variablePATH,soitenutilisantOracleUniversalInstaller :

Lancez Oracle Universal Installer (menu Dmarrer Programmes Oracle nom_oracle_home Oracle
InstallationProducts UniversalInstaller).

ENI Editions - All rights reserved - Algeria Educ

- 29 -

Surlcrandebienvenue,cliquezsurleboutonProduitsinstalls...

DanslafentreInventairequisaffiche,cliquezsurlongletEnvironnement :

Cet onglet liste les diffrents Oracle Home trouvs sur le systme, dans leur ordre dapparition dans la variable
denvironnementPATH (affiche dans la zoneChemin).Vouspouvezalorsslectionnerles OracleHome qui doivent
apparatre dans la variable denvironnement PATH et modifier leur ordre. Cliquez sur le bouton Appliquer pour
enregistrervosmodifications.
PlateformeUnixouLinux
SurplateformeUnixouLinux,linstalleurnemodifiepaslenvironnementducomptedanslequelOracleestinstall.
chaque fois que vous utiliserez ce compte pour administrer Oracle, vous serez amens positionner diffrentes
variables denvironnement : ORACLE_HOME(et ventuellement ORACLE_BASE), ORACLE_SID, PATH(chemin vers
ORACLE_HOME/binnotamment)etventuellementNLS_LANG.
Ces variables denvironnement peuvent tre dfinies la main, lors de chaque session ou tre dfinies dans le
fichierdedmarragedushelldelutilisateur.
Exemple :
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
ORACLE_SID=ORCL
PATH=$PATH:$ORACLE_HOME/bin
NLS_LANG=FRENCH_FRANCE.UTF8
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH NLS_LANG
Si vous avez plusieurs bases de donnes, et ventuellement plusieurs Oracle Home, il faut penser modifier en
consquencelesvariablesORACLE_SID,etventuellementORACLE_HOMEetPATH.

- 30 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Pourcela,vouspouvezutiliserunscriptshellfourniparOracle :coraenv(Cshell)ouoraenv(autresshells).Cesdeux
scriptssontcrspendantlinstallation(parlescriptroot.sh)etsesituentpardfautdans/usr/local/bin.
Pourlesexcuter,utilisezunedescommandessuivantes :
source /usr/local/bin/coraenv
. /usr/local/bin/oraenv
Cesscriptsvousinvitentsaisirlenomdelinstancelaquellevousvoulezaccderetmodifientenconsquencela
valeur des variables denvironnement ORACLE_SID, ORACLE_ HOME et PATH (ajout du chemin $ORACLE_HOME/bin la
variablePATH.).
PourdterminerlavaleurdelavariableORACLE_HOME,cesscriptsappellentlescriptdbhome.Cederniersebasesurle
fichier/etc/oratab,luiaussicrdanslinstallation.
Le fichier /etc/oratab est, en quelque sorte, un rfrentiel central des diffrentes instances (et donc bases de
donnes)prsentessurleserveur.Ilcontientdeslignesdelaforme :
$ORACLE_SID:$ORACLE_HOME:{Y|N}
Exemple :
ORCL:/u01/app/oracle/product/11.1.0/db_1:Y
VoirlechapitreDmarrageetarrtpourlutilisationdecefichierdanslecontextedudmarragedunebase
laideduscriptdbstartetlechapitreCrationdunenouvellebasededonnespourlamisejourdece
fichieraprslacrationdunenouvellebasededonnes.
Silinstance nestpastrouvedanslefichieroratab, le scriptoraenv oucoraenvdemandedesaisirlavaleurdela
variableORACLE_HOME.
Silefichieroratabestcorrectementrenseign(cequiestconseill),lesscriptsoraenvetcoraenvsonttrspratiques
pourmodifierlenvironnementducompteetbasculerdunebaseuneautre.
Exemple
[oracle@srvlinora ~]$ tail -2 /etc/oratab
ORCL:/u01/app/oracle/product/11.1.0/db_1:Y
TEST:/u01/app/oracle/product/10.2.0/db_1:N
[oracle@srvlinora ~]$ sqlplus / as sysdba
-bash: sqlplus: command not found
[oracle@srvlinora ~]$ . oraenv
ORACLE_SID = [oracle] ? ORCL
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 is /u01/app/oracle
[oracle@srvlinora ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 ...
...
SQL> exit
...
[oracle@srvlinora ~]$ . oraenv
ORACLE_SID = [ORCL] ? TEST
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 is /u01/app/oracle
[oracle@srvlinora ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 ...
...
SQL> exit
...
[oracle@srvlinora ~]$

c.Configurerledmarrageetlarrtautomatique
PlateformeWindows
Sur plateforme Windows, linstalleur cre automatiquement les services qui permettent le dmarrage et larrt

ENI Editions - All rights reserved - Algeria Educ

- 31 -

automatique des diffrents composants Oracle : processus dcoute, base de donnes, console Oracle Enterprise
Manager.
Ilnyadoncriendeparticulierfairecestade.

Noustudieronsplusendtailcesdiffrentscomposantsdanslasuitedecetouvrage.

PlateformeUnixouLinux
SurplateformeUnixouLinux,linstalleurneconfigureaucuncomposantendmarrageautomatique.
Ilestdelaresponsabilitdeladministrateurdusystme(root)decrerunscriptdedmarragedecescomposants
etlefairesexcuterdanslesniveauxdexcutionsouhaits.
Danscetouvrage,nousallonsprsenterlesactionseffectuersuruneplateformeRedHatEnterpriseLinuxES4.
Les principes sont les mmes pour les autres distributions (ou Unix en gnral), mais certains chemins, certaines
valeurs ou certaines commandes peuvent tre diffrents (consultez la documentation Oracle Database
Administrators Reference de votre plateforme et la documentation de votre systme dexploitation sur les
processusdedmarrageetdarrt).
Connectezvousentantqueroot.
Danslerpertoire/etc/init.d,>crezunscriptnommdboraavecuncontenusimilaireausuivant :
#! /bin/sh
#
# chkconfig: 35 99 01
# description: dmarre et arrte les services Oracle
#
# Modifiez la valeur des variables suivantes pour tenir compte de
# votre environnement :
#
- ORACLE_HOME
#
chemin vers le rpertoire Oracle Home des
#
scripts dbstart et dbshut
#
- ORACLE_HOME_LISTENER
#
chemin vers le rpertoire Oracle Home du listener
#
- ORACLE
#
nom du compte oracle
#
- LOG
#
chemin vers un fichier journal
#
- VAR_LOCK
#
chemin vers le fichier utilis par le systme pour savoir
#
si le service est dmarr
#
(normalement /var/lock/subsys/<nom du service>)
ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
ORACLE_HOME_LISTENER=$ORACLE_HOME
ORACLE=oracle
LOG=$ORACLE_HOME/dbora.log
VAR_LOCK=/var/lock/subsys/dbora
#
# Si le script est appel sans deuxime paramtre (appel initial),
# on le relance sous le compte oracle (du coup avec un deuxime
# paramtre)
if [ ! "$2" = "ORA" ] ; then
su - $ORACLE -c "$0 $1 ORA"
case $1 in
start)
# indiquer que le service a dmarr (du moins a priori)
touch $VAR_LOCK
;;
stop)
# indiquer que le service a t stopp (du moins a priori)
rm -f $VAR_LOCK
esac
exit
fi
PATH=${PATH}:$ORACLE_HOME/bin
export ORACLE_HOME PATH

- 32 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

touch $LOG
chmod a+r $LOG
case $1 in
start)
echo "***** $(date) - $0 : dmarrage" > $LOG
$ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTENER > $LOG 2>&1 &
;;
stop)
echo "***** $(date) - $0 : arrt" > $LOG
$ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTENER > $LOG 2>&1 &
;;
*)
echo "usage: $0 {start|stop}"
;;
esac
exit
Depuislaversion11,lesscriptsdbstartetdbshutprennentenchargeledmarrageetlarrtduprocessus
dcoute. En consquence, le script prsent cidessus permet le dmarrage et larrt automatique du
processusdcouteetdesbasesdedonnes.Parcontre,ildoittrecompltpourprendreenchargelaconsole
OracleEnterpriseManager.
Changerlegroupedufichierdboraendba(ouvotregroupeOSDBAsilestdiffrent)etmodifierlespermissionsdu
fichier :
chgrp dba dbora
chmod 750 dbora
Crerdeslienssymboliquesverslescriptdboradanslesrpertoiresdesniveauxdexcutionadquats,parexemple
pouravoirundmarrage(pluttendernier)danslesniveaux3et5,etunarrt(pluttenpremier)danslesniveaux
0(arrtdusystme)et6(redmarragedusystme) :
ln
ln
ln
ln

-s
-s
-s
-s

/etc/init.d/dbora
/etc/init.d/dbora
/etc/init.d/dbora
/etc/init.d/dbora

/etc/rc.d/rc0.d/K01dbora
/etc/rc.d/rc3.d/S99dbora
/etc/rc.d/rc5.d/S99dbora
/etc/rc.d/rc6.d/K01dbora

Ceslienssymboliquespeuventtrecrsparlutilitairechkconfigquiexploitelesinformationscontenuesdansles
commentairesendbutdescript :
chkconfig --add dbora
Lesystmeestoprationnel.
SiplusieursversionsdOraclesontinstallessurvotreserveur,ilfautpluttutiliserlaversionlaplusrcente
dans le script dbora (avec une variable $ORACLE_HOME configure en consquence). La seule exception
potentielle concerne le dmarrage de la console Oracle Enterprise Manager (cf. Chapitre Les outils
dadministration). Si besoin, ce script peut tre adapt, ou scind en plusieurs scripts, afin dutiliser diffrents
OracleHome.

ENI Editions - All rights reserved - Algeria Educ

- 33 -

Installationduclient
Les procdures dinstallationdun client Oracle ressemblent beaucoup, en plus simples, aux procdures dinstallation
duserveur.Enconsquence,danscetouvrage,nousprsenteronscesprocduresdemaniretrssynthtique.Pour
plusdinformations,reportezvousladocumentationOraclespcifiquevotreplateforme

OracleDatabaseClientInstallationGuidefor...

OracleDatabaseClientQuickInstallationGuidefor...

OracleDatabaseClientReleaseNotesfor...

Lessimilitudesdinstallationentreunserveuretunclientportentnotammentsur :

Les diffrentes tapes de linstallation (prinstallation, installation avec Oracle Universal Installer, post
installation)
Le standard OFA, avec notamment un rpertoire Oracle Home (plusieurs clients peuvent tre installs sur la
mmemachine)

Lesspcificitsdechaqueplateforme(variablesdenvironnement,basederegistre,etc.)

Lapossibilitdeffectueruneinstallationnoninteractive,enutilisantunfichierderponse.

UnclientOraclecomportegnralementauminimumlecomposantOracleNetquipermetdaccderunebaseOracle
durseau.Encomplment,leclientpeutcomporter :

desoutilsdinterrogationoudadministration(SQL*Plus,etc.)

desproduitsncessairespourledveloppementouledploiementdapplications.

Lesproduitspourledveloppementouledploiementquipeuventtreinstalls,varientduneplateformelautre.
Lesprincipauxproduitssontlessuivants:

OCI(OracleCallInterface APIdebasniveauutilisableenCparexemple)

OracleObjectForOLE(produitquivalentOLEDB)

DriversODBC

ProviderpourOLEDBou.NET

DriversJDBC

prcompilateursPro*C/C++,Pro*COBOL...

LinstallationproprementditeseffectueavecOracleUniversalInstaller.Lesprincipalestapessontlessuivantes :

spcificationdurpertoiredinventaire(premireinstallationsurplateformeLinuxouUnix)

dsignationdelemplacementdesfichiers(OracleHome)

choixduntypedinstallation(voircidessous)

choixventueldescomposantsinstaller(installationpersonnaliseuniquement)

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

affichageduncrandesynthsepermettantdeconfirmerlinstallation.

Lestypesdinstallationpropossparlinstalleursontlessuivants :
InstantClient : ninstalle que les librairies ncessaires aux applications qui utilisent les OCI avec la fonctionnalit de
"clientinstantan"(instantclient).Ncessitepeudespacedisque(plusoumoins150Moselonlaplateforme).
Administrateur : installe la quasitotalit des composants, y compris les outils dadministration et les produits de
dveloppement
Runtime:installeunclientsimplecomportantprincipalementOracleNet,SQL*PlusetlesdriversJDBC.
Personnalise:permetdeslectionnerprcismentlescomposantsetdinstallerunclientparfaitementadaptun
besoin prcis (dveloppeur, dploiement) : avec ou sans outil (SQL*Plus par exemple), avec un produit de
dveloppementprcis,etc.
La fonctionnalit de "client instantan" permet dtablir une connexion une base de donnes sans
configurationpralabledOracleNet(cf.ChapitreOracleNet).
lafindelinstallation,danslecasduneinstallationautrequeInstantClient,lassistantConfigurationOracleNetest
lanc,enmodeautomatiqueouinteractifselonletypedinstallation,afindeconfigurerlecomposantOracleNet.Dans
le cas dune installation Runtime, lassistant effectue une configuration standard : cliquez simplement sur le bouton
Suivant puis sur le bouton Terminer. Dans le cas dune installation Administrateur ou Personnalise, lassistant
proposedeffectueruneconfigurationstandardouuneconfigurationmanuelle.Laconfigurationstandardestsouvent
suffisante, au moins pour dmarrer. En cas de besoin, lassistant Configuration Oracle Net peut tre relanc
ultrieurement. Pour effectuer une configuration standard, cochez la case Excuter la configuration standard puis
cliquezsurleboutonSuivant(deuxfois),puissurleboutonTerminer.
SurplateformeUnixouLinux,aprsenavoirterminaveclaconfigurationOracleNet,ilfautexcuterlescriptroot.sh
dansuneconnexionroot.
Linstallationestalorstermine !
Lenvironnementdetravailpeutensuitetreconfigurcommesurleserveur(cf.sectionInstallationduserveurdansle
chapitreInstallation).
ce stade, vous pouvez tester une connexion avec votre base en utilisant la mthode de rsolution de nom Easy
Connect :
> sqlplus system/xxxx@//hte/service
Pourutiliseruneautremthodedersolutiondenom,ilfautconfigurerOracleNet(cf. ChapitreOracleNet).
SurOTN,vouspouveztlchargerunclientinstantan(instantclient)souslaformedunearchivecompresse
qui sinstalle directement par dcompression, sans utiliser Oracle Universal Installer. Pour utiliser ce client
instantan, il faut juste ajouter le rpertoire dinstallation dans la variable denvironnement utilise pour le
chargementdeslibrairies(PATHsurplateformeWindowsetLD_LIBRARY_PATHsurplateformeUnixouLinux).

- 2-

ENI Editions - All rights reserved - Algeria Educ

Introduction
1.RledOracleNet
Oracle Net permet des produits Oracle situs sur des machines diffrentes de communiquer. Les fonctions
essentiellesdOracleNetsontdtablirdessessionsdecommunicationrseauentredeuxmachines(clientserveur
ouserveurserveur)etdetransfrerlesdonnesentrelesdeuxmachines.
Dans cet ouvrage, nous nous intresserons uniquement la communication entre un client et un serveur. La
communication entre deux serveurs est un cas particulier o un serveur joue le rle de client visvis de lautre
serveur surceserveurclient,OracleNetdoittreconfigurlafoisenserveuretenclient.
OracleNetapourobjectifderendrelerseau"transparent"pourlesapplications :lesapplicationsnontpasbesoin
de savoir o se trouve le serveur, quel est le protocole utiliser pour sy connecter, etc. Les applications ont
simplementbesoindeconnatreunnomdeservicerseau(sortedalias)quileurpermettradtabliruneconnexion
aveclabasededonnessouhaite.
OracleNetdoittreinstallctclientetctserveur cetteinstallationestralisepardfautparOracleUniversal
Installer.Aprsinstallation,lacoucheOracleNetdoittreconfigure,lencore,ctclientetctserveur.

2.Principesdefonctionnement
Leschmasuivantillustrelefonctionnement(simplifi)dOracleNet :

Lorsquune application cliente utilise un nom de service rseau pour se connecter, ce nom de service rseau est
rsoluparOracleNetenundescripteurdeconnexioncomportantladresseduservice :protocoleutiliser,adresse
duserveur,portdecommunication(danslecasduprotocoleTCP)etnomduservice(instancedanslecasquinous
intresse).
Ctserveur,unprocessusdcouteestchargderecevoirlesdemandesdeconnexionetdelestransmettrela
baseconcerne.CeprocessusdcoutesematrialiseparunservicesurplateformeWindowsetunprocessussur
plateformeUnix ilestconfigurparlefichierlistener.ora.
Plusieursmthodespeuventtreutilisespourlarsolutiondunomdeservice :
Locale(localnaming)
Un fichier de configuration (tnsnames.ora), situ sur le poste de lutilisateur, se charge de la rsolution. Cette

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

mthodeestlapluscourammentutilise.
Connexionsimplifie(easyconnectnaming)
Laconnexionseffectuesansnomdeservice,enutilisantdirectementuneadresseTCP/IPdutype[//]hte[:port]
[/service]. Cette mthode est utilisable uniquement en environnement TCP/IP. Elle ne ncessite aucune
configurationmaislerseaunestplustransparentpourlutilisateur.Cettemthodeestapparueenversion10.
AnnuaireLDAP(directorynaming)
UnannuaireLDAPsechargedelarsolution.Cettemthodencessiteunproduittiers.
Externe
Unproduittierssechargedelarsolution.
Pardfaut(configurationstandard),OracleNetestconfigurctclientpourutiliserlamthodedersolutiondenom
localeetlaconnexionsimplifie(siTCP/IPestinstallsurleposteclient).

3.Nomdeserviceetnomdinstance
Depuis Oracle8i, une instance peut tre identifie par un ou plusieurs noms de service, en plus de lidentifiant de
linstance(SID).CesnomsdeservicepeuventtredfinisgrceauparamtreSERVICE_NAMESdufichierdinitialisation.
Lidentifiantdelinstancepeuttrevucommetantlenom"physique"delinstance.Lenomdeservicedelinstance
peuttrevucommeunnomlogique,correspondantunserviceoffertparlabasededonnesouverteparlinstance.
Par exemple, si une base abrite deux applications (une application de paie et une application de gestion des
ressourceshumaines),ilestpossiblededfinirdeuxnomsdeservicepourlinstance :
SERVICE_NAMES = paie,rh
Unnomdeservicepeutinclureuneidentificationdedomaine.Exemple :paie.olivier.fr.
Par dfaut, le paramtre SERVICE_NAMES est gal au nom global de la base de donnes (DB_NAME.DB_DOMAIN). Si le
paramtreDB_DOMAINestvide(valeurpardfaut),leparamtreSERVICE_NAMESestalorsgalpardfautauparamtre
DB_NAME,quiestluimmegnralementgalaunomdelinstance danscecas,nomdeserviceetnomdinstance
sontgaux.
Lorsdeladfinitiondunnomdeservicerseau,ilestpossiblededsignerlinstancecible,soitparsonidentifiant,
soitparunnomdeservice.
LesservicessontaussiutilissparOraclepourfaireunsuividactivitparservice(charge,performance,priorit,etc.).
IlspeuventtregrsetsupervissdansleDatabaseControl.Ilspeuventaussitresupervissparplusieursvues
dudictionnairededonnes(DBA_ SERVICES,V$ACTIVE_SERVICES,etc.)etgrsparlepackageDBMS_SERVICE.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Configurationctserveur
1.Configurationduprocessusdcoute
LaconfigurationctserveurconsisteconfigurerleprocessusdcouteLISTENER,cestdireindiquer"comment"
etpourquellesbasesil"coute".
Cetteconfigurationpeutseffectuerdirectementdanslefichierlistener.oramaiscelancessitedebiencomprendre
lastructuredecefichier,cequinestpasimmdiat(voirlexempleplusloin).Leplussimpleconsistealorsutiliser
lapplicationOracleNetManager(menuProgrammes Oracle nom_oracle_home Outilsdeconfigurationetde
migration NetManagersurplateformeWindowsouscriptshellnetmgrsurplateformeUnix).

Si aucune base de donnes na t cre durant linstallation dOracle, aucun processus dcoute na encore t
cr danscecas,ledossierProcessusdcouteestvide.Pourcrerunprocessusdcoute,slectionnezlemenu
Modifier Crer et donnez un nom au processus dcoute (par exemple LISTENER) dans la bote de dialogue qui
saffiche.
Le fichier listener.orase trouve par dfaut dans le rpertoire $ORACLE_HOME/ network/admin (plateforme Unix ou
Linux)ou%ORACLE_HOME%\network\admin(plateformeWindows).Cetemplacementpeuttremodifiendfinissantla
variabledenvironnementTNS_ADMIN.
Le processus dcoute peut aussi tre configur et administr partir de la console Oracle Enterprise
Manager.

Paramtresgnraux

La configuration des paramtres gnraux seffectue dans les trois onglets Gnral, Journalisation et trace et
Authentification.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Longlet Journalisation et trace permet dactiver ou de dsactiver la journalisation (active par dfaut) et la trace
(inactive par dfaut). Le fichier journal enregistre essentiellement des informations sur le dmarrage du processus
dcouteetlesdemandesdeconnexionreues.Depuislaversion11,cefichier(nommlistener.log)setrouvepar
dfaut dans le Rfrentiel de Diagnostic Automatique (Automatic Diagnostic Repository) : rpertoire
$ORACLE_BASE/diag/tnslsnr/<nom hte>/<nom listener>/trace (plateforme Unix ou Linux) ou %ORACLE_BASE%
\diag\tnslsnr\<nom hte>/<nom listener>/trace (plateforme Windows). Pour pouvoir modifier lemplacement par
dfaut,ilfautdsactiverlutilisationdADRtantquecenestpaslecas,lesventuellesmodificationseffectuesdans
OracleNetManagernesontpasprisesencompte.Latracepeuttreactivepouraiderrsoudredesproblmes
defonctionnementduprocessusdcoute.Lencore,depuislaversion11,lesfichiersdetracessontenregistrspar
dfautdansADR,aummeemplacementquelefichierjournal.
LongletAuthentificationpermetdedfinirunmotdepasseutiliserpourlancerlutilitairelsnrctl(voirplusloin).
Lorsquelesparamtresgnrauxsontpersonnaliss,ilssontenregistrsdanslefichierlistener.ora.
Exemple :
PASSWORDS_LISTENER= (54290B53985ADB21 )
TRACE_LEVEL_LISTENER = USER
Emplacementsdcoute

Les emplacements dcoute sont des adresses rseaux utilises par le processus dcoute pour recevoir les
demandesdeconnexionunebasededonnes.
Le processus dcoute peut couter plusieurs adresses (pour des protocoles diffrents, pour des variantes du
mmeprotocole parexempledeuxportsenTCP/IP,etc.).
Laconfigurationdelemplacementdcoutedpendduprotocole :

TCP/IP :indiquelenomouladresseIPduserveuretleportdecommunication(1521pardfaut).
IPC (InterprocessCommunication) : indique un nom unique de service (nom de linstance pour une base de
donnes).
NMP(NamedPipes) :indiquelenomduserveuretlenomducanal(typiquementORAPIPE).

Lesdfinitionsdesemplacementsdcoutesontenregistresdelamaniresuivantedanslefichierlistener.ora :
LISTENER =
(DESCRIPTION_LIST =

- 2-

ENI Editions - All rights reserved - Algeria Educ

(DESCRIPTION
(ADDRESS =
)
(DESCRIPTION
(ADDRESS =
)

=
(PROTOCOL = IPC)(KEY = EXTPROC1521))
=
(PROTOCOL = TCP)(HOST = srvwinora)(PORT = 1521))

Leslignesengrascorrespondentunedfinitiondemplacementdcoute.
Servicesdebasededonnes

Cetcranpermetdedfinirlesservicesdebasededonnesinscrits(ouenregistrs)auprsduprocessusdcoute,
cestdireceuxpourlesquelsleprocessusdcouteacceptedesdemandesdeconnexion.
Lesbasesdedonnesinscritesauprsduprocessusdcoutesontdfiniesparlidentifiantdelinstance(SID),lenom
globaldelabasededonnes(DB_NAME.DB_DOMAIN,ouunedesvaleursduparamtreSERVICE_NAMES,outouteautre
valeur)etlechemindurpertoireOracleHomedelabasededonnes.
Le processus dcoute peut accepter des demandes de connexion pour plusieurs bases de donnes,
ventuellementpourdesversionsdOraclediffrentes.
Les dfinitions des services de base de donnes sont enregistres de la manire suivante dans le fichier
listener.ora :
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = d:\app\oracle\product\11.1.0\db_1)
(SID_NAME = ORCL)
)
)
Leslignesengrascorrespondentunedfinitiondeservicedebasededonnes.
Enrglegnrale,ilyaunseulprocessusdcouteparserveur,mmesileserveurabriteplusieursbases
de donnes. Si ces bases de donnes utilisent des versions diffrentes dOracle, il faut plutt utiliser le
processusdcoutedelaversionlaplusrcente.

2.Gestionduprocessusdcoute

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Leprocessusdcoutesematrialiseparunservice(Oracle<nom_oracle_home>TNSListener)surplateformeWindows
etparunprocessus(tnslsnr)surplateformeUnixouLinux.
Leprocessusdcoutesadministregrcelutilitairelsnrctl,disponiblesurtouteslesplatesformes.
Syntaxe :
lsnrctl[commande]
Lorsquelutilitaireestappelsanscommande,ilselanceetafficheuneinvite :
LSNRCTL>
Lescommandespeuventalorstresaisiessurlalignedinvite.
Lesprincipalescommandessontlessuivantes :
HELP
Affichelalistedescommandes.
HELP commande
Affichelaidedunecommande.
START
Dmarreleprocessusdcoute.
STOP
Arrteleprocessusdcoute.
STATUS
Affiche des informations sur la configuration du processus dcoute, les emplacements dcoute et les services
enregistrs.
SERVICES
Affichedesinformationsdtaillessurlesservicesenregistrsauprsduprocessusdcoute.
RELOAD
Recharge la configuration du processus dcoute (listener.ora). Permet dajouter ou de modifier les services
enregistrsauprsduprocessusdcoute,sansarrtercedernier.
Lescommandespeuventtresaisiesindiffremmentenmajusculesouenminuscules.Surplateforme Windows, le
processusdcoutepeutaussitredmarretarrtendmarrantouenarrtantleserviceassoci.
Exemple :
C:\>lsnrctl
LSNRCTL for 32-bit Windows: Version 11.1.0.6.0 - Production
on 22-JUIN -2008 21:26:04
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Bienvenue dans LSNRCTL, tapez "help" pour plus dinformations.
LSNRCTL> status
Connexion (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUT du PROCESSUS DECOUTE
---------------------------Alias
LISTENER
Version
TNSLSNR for 32-bit Windows: Version
11.1.0.6.0 - Production
Date de dpart
22-JUIN -2008 21:12:45
Dure dactivit
0 jours 0 heures 13 min. 25 sec
Scurit
ON: Local OS Authentication
SNMP
OFF

- 4-

ENI Editions - All rights reserved - Algeria Educ

Fichier de paramtres du processus dcoute


D:\app\oracle\product\
11.1.0\db_1\network\admin\listener.ora
Fichier journal du processus dcoute
d:\app\oracle\diag\tnslsnr\srvwinora\listener\alert\
log.xml
Rcapitulatif dcoute des points dextrmit...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=srvwinora)(PORT=1521)))
Rcapitulatif services...
Le service "ORCL" comporte 1 instance(s).
Linstance "ORCL", statut UNKNOWN, comporte 1 gestionnaire(s)
pour ce service
La commande a russi
LSNRCTL>
SurplateformeWindows,sileserviceassociauprocessusdcoutenexistepas,unmessagederreurestaffich
lorsdudmarrage,maisleserviceestalorsautomatiquementcretleprocessusdcouteestbiendmarr :
LSNRCTL> start
Starting tnslsnr: please wait...
Failed to open service <OracleOraDb11g_home1TNSListener>, error 1060.

3.Dmarrageautomatiqueduprocessusdcoute
Gnralement, il est souhaitable que le processus dcoute soit dmarr automatiquement lors du dmarrage du
systme.
SurplateformeWindows,leprocessusdcoutepeuttredmarrautomatiquementlorsdudmarragedusystme,
enpositionnantleserviceassoci(Oracle<nom_oracle_ home>TNSListener)endmarrageautomatique.
Sur plateforme Unix ou Linux, le processus dcoute peut tre dmarr automatiquement grce au script de
dmarrage prsent dans la section Installation du serveur du chapitre Installation Configurer le dmarrage et
larrt automatique. Ce script de dmarrage appelle les scripts Oracledbstart etdbshutquiprennentenchargele
dmarrageetlarrtduprocessusdcoutedepuislaversion11.
Extraitsduscript :
$ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTENER > $LOG 2>&1 &
...
$ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTENER > $LOG 2>&1 &
LesscriptsdbstartetdbshutacceptentenparamtrelecheminOracleHomeduprocessusdcoutedmarrerou
arrter silyaplusieursversionsdOracleinstallessurleserveur,celapermetdechoisirlaversionduprocessus
dcouteutiliser.

4.Enregistrementdynamiquedeservices
DepuisOracle8i,uneinstanceestcapabledenregistrerautomatiquementdesservicesauprsduprocessusdcoute.
Aucuneconfigurationnestrequisedanslefichierlistener.ora.
Lenregistrement automatique seffectuepardfautauprsduprocessusdcoute sur le serveur, en TCP/IP, sur le
port 1521. Pour effectuer lenregistrement automatique une autre adresse, il faut configurer le paramtre
dinitialisation LOCAL_LISTENER en y indiquant un nom de service rseau qui doit tre rsolu (par exemple avec le
fichiertnsnames.ora)enuneadressedeprocessusdcoute.
LesnomsdesservicesautomatiquementenregistrsproviennentduparamtredinitialisationSERVICES_NAMES.
Lenregistrement dynamique seffectue en complment de lenregistrement statique ventuellement dfini dans le
fichierlistener.ora. Avec ces deux mcanismes, une instance peut prsenter plusieurs services dans le processus
dcoute,cequiestparfoisdroutant.
Avec lenregistrement automatique, une instance non dmarre nestpasconnueduprocessusdcoute.
Cela pose un problme si linstance doit tre dmarre partir dun poste du rseau car le processus
dcoute refusera la demande de connexion (erreur ORA-12514). Dans ce cas, il faut prvoir un enregistrement
statiquedanslefichierlistener.ora.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Il peut y avoir dautres services enregistrs auprs du processus dcoute correspondant des
fonctionnalitsinstallesdanslabasededonnes(OracleXMLDBparexemple).

- 6-

ENI Editions - All rights reserved - Algeria Educ

Configurationctclient
1.Introduction
Pourconfigurerleclient,ilfaut :

slectionnerlesmthodesdersolutiondenomsutilisablesparleclient

configurerlesmthodesdersolutiondenomsslectionnes.

Lesmthodesdersolutiondenomsutilisablesparleclientsontstockesdanslefichiersqlnet.ora.Silamthode
dersolutiondenomlocaleestutilise,ilfautenplusdfinirunouplusieursnomsdeservicerseaudanslefichier
tnsnames.ora.
Cesdeuxfichierssetrouventpardfautdanslerpertoire$ORACLE_HOME/network/ admin(plateformeUnixouLinux)
ou %ORACLE_HOME%\network\admin (plateforme Windows). Cet emplacement peut tre modifi en dfinissant la
variabledenvironnementTNS_ADMIN.
Lesfichierssqlnet.oraettnsnames.orapeuventtreditsdirectementmaiscelancessitedebiencomprendreleur
structureetdebienconnatrelasyntaxeetlerledesdiffrentsparamtres.
Le plus simple consiste alors utiliser lapplication Oracle Net Manager (menu Programmes Oracle
nom_oracle_home Outils de configuration et de migration Net Manager sur plateforme Windows ou script
shellnetmgrsurplateformeUnix).

2.Slectiondesmthodesdersolutiondenoms
Pour configurer les mthodes de rsolution de noms utilisables par le client, cliquez sur licne Profil, puis
slectionnezllmentAffectationdenomsdanslalistedroulante :

Dans une configuration standard, la mthode de rsolution de nom locale (TNSNAMES) et la mthode de connexion
simplifie(EZCONNECT)sontslectionnespardfaut.Enutilisantlesdiffrentsboutonsdecepanneau,ilestpossible
dajouteroudesupprimerdesmthodesetdemodifierlordredanslequellesmthodesserontutilises :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-


Surlexempleprcdent,lamthodedersolutiondenomdhte(HOSTNAME)atajoutedanslaliste.
LazoneDomainepardfautpermetdajouterunnomdedomainepardfautauxnomsdeservicerseauutiliss.
Ce nom de domaine par dfaut est souvent une source de problme. Sil est dfini (valeur X par exemple), il est
automatiquementajoutaunomdeservicerseaulorsdelaconnexion,siaucundomainenestindiqu(CONNECT ...
@ORCLdevient CONNECT ... @ORCL.X).Silenomdeserviceainsiconstitu(ORCL.X)nepeutpastrersoluparune
desmthodesdersolutiondenom,uneerreurestretourne(erreurORA-12154).Pourvitercegenredeproblme,
leplussimpleestdenepasdfinirdenomdedomainepardfaut.
Lesdiffrentesinformationssaisiesdanscetcransontenregistresdanslefichiersqlnet.ora.
Exemple :
NAMES.DIRECTORY_PATH= (EZCONNECT, TNSNAMES, HOSTNAME)
# NAMES.DEFAULT_DOMAIN = X
LeparamtreNAMES.DIRECTORY_PATHcontientlalisteordonnedesmthodesdersolutiondenomutilisables.
LeparamtreNAMES.DEFAULT_DOMAIN(iciencommentaire)contientlenomdedomainepardfaut.

3.Configurationdesmthodesdersolutiondenom
a.Rsolutiondenomlocale
Des noms de service rseau peuvent tre dfinis dans le fichiertnsnames.ora avec lapplication Oracle Net
Manager :

Pourafficherlalistedesnomsdeservicerseaudjdfinis,doublecliquezsurledossierRsolutiondenomsde
service.
Pour crer un nouveau nom de service rseau, slectionnez le dossier Rsolution de noms de service puis
slectionnezlemenuModifierCrer.

- 2-

ENI Editions - All rights reserved - Algeria Educ


SaisissezlenomdeservicerseausouhaitpuiscliquezsurleboutonSuivant.

Slectionnezleprotocolerseauutilis(TCP/IPdanscetexemple)puiscliquezsurleboutonSuivant.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-


Lesparamtresduprotocoledpendentduprotocoleslectionn.Danslecasduprotocole TCP/IP,saisissezlenom
duserveurOracleousonadresseIPetlenumroduport(1521pardfaut,maissiunautreportatconfigur
pourleprocessusdcoute,utilisezlemmeici).
Dans le cas du protocole IPC, vous devez indiquer un nom de cl (reprendre la valeur utilise pour le processus
dcoute,gnralementlenomdelinstance).DanslecasduprotocoleNamedPipes,vousdevezindiquerlenomde
lamachineetlenomducanal(reprendrelavaleurutilisepourleprocessusdcoute,habituellementORAPIPE).
CliquezsurleboutonSuivant.

Pour identifier linstance cible, saisissez au choix un nom de service ou un identifiant dinstance (SID). Le nom de
servicedoittreundesnomsdeserviceenregistrsauprsduprocessusdcoute(cf.section Configurationct
serveurdanscechapitre).
LalistedroulanteType de connexionpermetdedfinirletypedeconnexionsouhait :Valeurpardfautdela
basededonnes(valeurpardfaut),ServeurddiouServeurpartag.LechoixdeloptionServeurddiest
ncessairepourforceruneconnexionunserveurddialorsqueleserveurestconfigurenserveurpartag.
CliquezsurleboutonSuivantlcransuivantpermetdetesterlenouveaunomdeservicerseau.

- 4-

ENI Editions - All rights reserved - Algeria Educ

Cliquez sur le bouton Terminer. Le nouveau nom de service rseau apparat dans le dossier il peut tre
slectionnetmodifidirectementsibesoin :

Lesnomsdeservicerseauainsidfinis,sontenregistrsdanslefichiertnsnames.ora.
Exemple :
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SRVWINORA)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
Aprs configuration du processus dcoute ct serveur, il est judicieux, en restant sur le serveur, de
configurer un nom de service rseau et de tenter une connexion laide de ce nom afin de tester la
configuration. Ensuite, si la configuration dun poste ne fonctionne pas, la configuration du serveur ne sera, a
priori, pas en cause. De plus, si le serveur hberge plusieurs bases de donnes, les noms de service rseau
pourront tre utiliss pour passer rapidement dune base lautre (pas besoin de modifier la variable
denvironnementORACLE_SID).
Le fichier tnsnames.ora ne contient aucune information relative au poste il est donc parfaitement possible den
crerunsurunpostepuisdelediffusersurtouslesautrespostes.

b.Connexionsimplifie
LamthodedersolutiondenomEasyConnectnencessiteaucuneconfigurationctclientetpeuttreutilise
directement, si elle a t, au pralable, slectionne comme mthode de rsolution de nom dans le fichier
sqlnet.ora(cf. section Configuration des mthodes de rsolution de nom dans ce chapitre). Cette mthode est
apparueenversion 10etestutilisableuniquementenenvironnementTCP/IP.
Ladressedeconnexionestdfiniedelamaniresuivante :
[//]hte[:port][/service]
Avec :
hte

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Nomduserveur(ventuellementqualifiparundomaine)ouadresseIPduserveur.
port
Portutilisparleprocessusdcoute(1521pardfaut).
service
Nom de service auquel se connecter. Le nom de service doit tre un des noms de service enregistrs auprs du
processusdcoute(cf. section Configurationctserveurdanscechapitre).Silenomdeservicenestpasspcifi,
le processus se connecte la base dfinie par le paramtre DEFAULT_SERVICE_<nom_listener> dans le fichier
listener.ora.
Exemple :
srvwinora/orcl
srvwinora:1522/test.olivier.fr

- 6-

ENI Editions - All rights reserved - Algeria Educ

Problmescourantsetsolutions
Lesproblmespossiblesdeconnexionentreunclientetunserveursontnombreux.
ORA-12541: TNS : pas de processus dcoute
TNS-12541: TNS : aucun processus dcoute
Explication
Leserveurspcifiparlachanedeconnexionabienttrouv,maisaucunprocessusdcoutenerpond.
Cause(s)
Leprocessusdcoutenestpaslanc.Leportindiqudanslachanedeconnexionnecorrespondpasauportdcoute
duprocessusdcoute.
Action(s)
Vrifier que les ports sont bien configurs de la mme manire ct client et ct serveur. Vrifier si le processus
dcouteestdmarr(ledmarrersibesoin(nepashsiterleredmarrerencasdedoute)).
ORA-12505: TNS : le processus dcoute ne connat pas
actuellement le SID indiqu dans le descripteur de connexion
ORA-12514: TNS : le processus dcoute ne connat pas
actuellement le service demand dans le descripteur de connexion
Explication
Le processus dcoute a bien t contact mais le SID ou le SERVICE_NAME indiqu dans la chane de connexion ne
correspondaucuneinstancecouteparleprocessusdcoute.
Cause(s)
Le SID ou SERVICE_NAME indiqu dans la chane de connexion nest pas bon. Le SID_NAME spcifi dans le fichier de
configurationduprocessusdcoutenestpasbon.
Action(s)
Vrifierquelesidentifiantsdinstanceoulesnomsdeservicecorrespondentbienentreleclientetleserveur(utiliserla
commandestatusouservicesdanslutilitairelsnrctl).Encasdedoute,utiliserunSIDlaplacedunSERVICE_NAME
danslachanedeconnexion.
ORA-12545: Connexion impossible car lhte ou lobjet cible
nexiste pas
TNS-12545: la connexion a chou car lhte ou lobjet cible
nexiste pas
Explication
Leserveurindiqudanslachanedeconnexionnapasputrecontact.
Cause(s)
Lenomduserveuresterron.
Action(s)
Vrifierlavaliditdunomduserveur.ventuellement,remplacerlenomduserveurparsonadresseIP.Vrifiersile
serveurestaccessible.
ORA-12170: TNS : dlai de connexion dpass

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

TNS-12535: TNS : le dlai imparti lopration est coul


Explication
Leserveurindiqudanslachanedeconnexionnapasputrecontactdans ledlaiimparti(dfiniparleparamtre
SQLNET. INBOUND_CONNECT_TIMEOUTdufichiersqlnet.ora ctclient).
Cause(s)
Lenomduserveur(ouladresseIP)esterron.Leserveurnestpasaccessibleouilyaunproblmerseau(coupure,
ralentissement).
Action(s)
VrifierlavaliditdunomduserveuroudeladresseIP.ventuellement,remplacerlenomduserveurparsonadresse
IP. Vrifier si le serveur est accessible et sil ny a pas de problme rseau. Modifier la valeur du paramtre
SQLNET.INBOUND_CONNECT_ TIMEOUT.
ORA-12154: TNS : lidentificateur de connexion indiqu na pas pu tre
rsolu
TNS-03505: Echec de la rsolution du nom
Explication
Lenomdeservicerseauutilispourlaconnexion(@)napasputrersoluparunedesmthodesdersolutionde
nomautorisesctclient.
Cause(s)
Le nom de service rseau utilis dans la connexion est erron (faute de frappe). Il nexiste par de nom de service
rseaucorrespondantdanslefichiertnsnames.ora(mthodedersolutionlocale).Lenomdeservicerseaunapas
putretraduitenadresseIP(mthodedersolutiondenomdhte).Lenomdeservicerseaunapasputrersolu
enhte[:port] [/service](connexionsimplifie).
Action(s)
Vrifier que les mthodes de rsolution de nom souhaites sont bien configures dans le fichier sqlnet.ora. Si la
mthodedersolutiondenomlocalestutilise,vrifierquelenomdeservicerseauutilisdanslaconnexionestbien
dfinidanslefichiertnsnames.ora(pensernotammentlexistenceventuelledunnomdedomainepardfautdfini
dans le fichier sqlnet.ora). Si une autre mthode de rsolution de nom est utilise, vrifier que la syntaxe et la
configurationsontcorrectes.
Si vous obtenez une erreur ORA-01033 ou ORA-01034, la configuration Oracle Net nest pas en cause linstance est
arrte,ouelleestdmarremaislabasenestpasouverte.
Pouraidertablirundiagnostic,lutilitairetnspingpeuttreutilisctclient.
Syntaxe :
tnsping nom_de_service
Lutilitairetnspingtestesilenomdeservicepassenparamtrepeuttrersoluetsilaciblepeuttrecontacte.
Encasdesuccs,tnspingaffichelenomdelamthodedersolutiondenomutilise,lachanedeconnexionutiliseet
le temps mis pour contacter la cible. En cas dchec, tnsping affiche un message derreur, ainsi que le nom de la
mthodedersolutiondenomutiliseetlachanedeconnexionutilise,silapursoudrelenomdeservicerseau.
Exemples
C:\>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production
on 24-JUIN-2008 06:52:18
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Fichiers de paramtres utiliss :
C:\app\oracle\product\11.1.0\client_1\network\admin\sqlnet.ora
Adaptateur TNSNAMES utilis pour la rsolution de lalias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = SRVWINORA)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))
- 2-

ENI Editions - All rights reserved - Algeria Educ

OK (30 msec)
C:\>tnsping srvwinora/orcl

Fichiers de paramtres utiliss :


C:\app\oracle\product\11.1.0\client_1\network\admin\sqlnet.ora
Adaptateur EZCONNECT utilis pour la rsolution de lalias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.154.51)(PORT=1521)))
OK (20 msec)
Lutilitairetnspingtesteuniquementsiunprocessusdcoutepeuttrecontact ilnetestepassilenomde
serviceoulidentifiantdinstanceestconnuduprocessusdcoute.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Introduction
Oracleproposeplusieursoutilsdadministration :

SQL*Plus :outildebasepermettantdditeretdexcuterdesrequtesSQL.
Oracle Enterprise Manager Database Control : application Web, permettant dadministrer graphiquement une
seulebasededonnes.
Oracle Enterprise Manager Grid Control : application Web, similaire la prcdente, permettant dadministrer
demanirecentraliseplusieursbasesdedonnes.
OracleSQLDeveloper:applicationgraphiquepermettantdexcuterdesrequtesoudesscriptsSQL,degrer
les objets dune base de donnes (tables, vues, etc.) et de dvelopper et mettre au point des programmes
PL/SQL.

Oracle Enterprise Manager Grid Control est une infrastructure dadministration compose dun serveur dapplication,
dunrfrentielstockdansunebasededonnesOracleetdagentsinstallssurlesdiffrentsn udsadministrs.Ce
produit qui ncessite une installation spare est intressant pour les entreprises ayant un trs grand nombre de
basesdedonnesadministrer.Pourlesentreprisesayantquelquesbasesadministrer,laversionDatabaseControl
estgnralementsuffisante.OracleEnterpriseManagerGridControlnestpasprsentdanscetouvrage.
Sur plateforme Windows, Oracle propose aussi lapplication Oracle Administration for Windows (menu Dmarrer
Programmes Oracle nom_oracle_home Outils de configuration et de migration Assistant dadministration
pourWindows).CetteapplicationrequiertleproduitMicrosoftManagementConsole.
Dans cet ouvrage, nous nous intresserons uniquement SQL*Plus, Oracle SQL Developer et Oracle Enterprise
ManagerDatabaseControl.
En complment, dans ce chapitre, nous prsenterons brivement la documentation Oracle (un autre outil
dadministrationbienpratique !)puisnousparleronsdesfichiersdalerteetdetrace,ainsiquedunouveauRfrentiel
deDiagnosticAutomatique(AutomaticDiagnosticRepository).

ENI Editions - All rights reserved - Algeria Educ

- 1-

SQL*Plus
1.Vuedensemble
Depuis la version 11, SQL*Plus est disponible uniquement en version ligne de commande. Les anciennes formes
SQL*PlusWindows,SQL*PlusWorksheetetiSQL*Plusnexistentplus.
SQL*Plus permet de saisir et dexcuter des ordres SQL ou du code PL/SQL et dispose en plus de plusieurs
commandes,dontdescommandesdadministration.
La connexion peut seffectuer localement linstance dfinie par la variable denvironnement ORACLE_SID(section
InstallationduserveurduchapitreInstallation)oubientraverslerseaulinstancedfinieparunnomdeservice
rseauouuneidentificationde>connexionsimplifie(cf.section ConfigurationctclientduchapitreOracleNet).
Pour la connexion travers le rseau, le nom de service rseau ou lidentification de connexion simplifie peuvent
treindiquslorsdulancementdeloutil(voirciaprs)outredfinisdansunevariabledenvironnement :

TWO_TASKsurplateformeLinuxouUnix

LOCALsurplateformeWindows(ventuellementdanslabasederegistre).

Exemple :
$ export TWO_TASK=orcl
$ export TWO_TASK=srvlinora:1521/orcl
C:\>set LOCAL=orcl
C:\>set LOCAL=srvwinora:1521/orcl
LavariabledenvironnementTWO_TASKouLOCALestprioritairesurlavariabledenvironnementORACLE_SID.
SQL*Plusproposebeaucoupdecommandessouventtrsutilespourcriredesscriptsdadministration.Pour
plusdinformations,reportezvousladocumentationSQL*PlusUsersGuideandReference.

2.Utilisation
a.LancerSQL*Plus
LasyntaxepourlancerSQL*Plusenlignedecommandeestlasuivante :
sqlplus [ connexion | /NOLOG] [@fichier_script [argument [,...]]]
Syntaxedeloptionconnexion :
[utilisateur]/[mot_de_passe][@service] [AS SYSDBA | AS SYSOPER]
Avec :
utilisateur
NomdelutilisateurOracle.
mot de passe
Motdepassedelutilisateur.
service
Nomdeservicerseauouidentificationdeconnexionsimplifie,utilis(e)pourlaconnexion.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

AS SYSDBA |AS SYSOPER


DemandeuneconnexionSYSDBAouSYSOPER.
/NOLOG
LanceSQL*Plussanstablirdeconnexion.
fichier_script
Scriptexcuter.
argument
Paramtreduscriptexcuter.
AppelerSQL*Plussansparamtresurlalignedecommandeprovoquelaffichageduneinvitedeconnexion.
Loption/NOLOGpermetdelancerSQL*Plussanstablirdeconnexion danscecas,laconnexionpeuttretablie
ensuiteaveclacommandeCONNECT.
LorsquunscriptestsoumisSQL*Plussurlalignedecommande,laconnexionpeuttreassureparlalignede
commandeouparlescript(danscecas,mettreloption /NOLOGsurlalignedecommande).Parailleurs,lafindu
script,SQL*Plusnequittepas encasdebesoin,ilfautdoncpensermettreunecommandeEXIT.
Exemple :
sqlplus
sqlplus
sqlplus
sqlplus

/nolog
system/xy$78@orcl
@info.sql
"/ as sysdba"

Aveclescriptinfo.sql:
CONNECT sys/ab$12@orcl AS SYSDBA
SELECT name FROM v$database;
EXIT

b.Seconnecter
LacommandeCONNECTpermetdtablirunenouvelleconnexion.
Syntaxe :
CONNECT [utilisateur]/[ mot_de_passe][ @service] [AS SYSDBA | AS SYSOPER]
LesoptionssontlesmmesquelorsdulancementdeSQL*Plusenlignedecommande.Laconnexionencoursest
automatiquementdconnecte.
LacommandeDISCONNECTpermetdesedconnecter.
Exemple:
SQL> CONNECT /@orcl AS SYSDBA
Connect.
SQL> CONNECT system/xy$78@srvlinora:1521/orcl
Connect.
Avantdeseconnecter,ilestpossibledetaperlacommandeSET INSTANCE servicepourdfinirlenomdeservice
rseau ou lidentifiant de connexion simplifie utiliser pour la totalit de la session cette commande doit tre
saisiesansaucuneconnexionencours,doncventuellementaprsunDISCONNECT.
Exemple:
SQL> SET INSTANCE orcl
Oracle Database 11g Release 11.1.0.0.0 - Production
SQL> CONNECT / AS SYSDBA
Connect.

- 2-

ENI Editions - All rights reserved - Algeria Educ

SQL> CONNECT system/xy$78


Connect.

c.ExcuterunscriptSQL
LescommandesSTARTou@permettentdexcuterunscriptSQL.
Syntaxe
START script
@script
scriptestlenomduscriptSQLexcuter(aveclecheminsincessaire) lextensionpardfautest.sql.
VousserezparfoisamensexcuterdesscriptssitusdanslarborescenceOracleHome.Lepointdinterrogation
(?) peut tre utilis comme raccourci du chemin vers le rpertoire Oracle Home. Par ailleurs, sur plateforme
Windows,SQL*Plusacceptelesparateur/(laplacede\)danslaspcificationdunchemin.
Exemple
SQL> @?/rdbms/admin/utlpwdmg

d.Excuterunecommandedusystmedexploitation
Lacommande HOSTpermetdexcuterunecommandedusystmedexploitationpartirdeSQL*Plus,notamment
dansunscriptSQL.
Syntaxe
HOST commande
Exemple
SQL> HOST copy d:\app\oracle\oradata\orcl\system01.dbf g:\app\oracle\
oradata\orcl\system01.dbf
1 fichier(s) copi(s).
SurplateformeUnixouLinux,lepointdexclamation(!)peuttreutilislaplacedelacommandeHOST.

e.Utiliserdesvariablesdesubstitution
SQL*Plus permet dutiliser des variables de substitution dans lexcution des ordres SQL, notamment dans un
script.
Unevariabledesubstitutionestdfinieparunnomprcdducaractre&.Ellepeuttreutilisepoursubstituer
une valeur tout lment de lordre SQL : valeur dans une clause WHERE, nom de colonne, nom de table, clause
WHEREcomplte,etc.
Lors de lexcutiondun ordre SQL, si SQL*Plus rencontre une variable de substitution non dfinie, il affiche une
invitepermettantdesaisirunevaleur.
Ilestpossibledecontrlerlinviteetdaffecterunevaleurunevariabledesubstitutionavantlexcutiondelordre
SQLgrcelacommandeACCEPT.
Syntaxe
ACC[EPT] variable [NUM[BER]|CHAR|DATE] [FOR[MAT] format] [DEF[AULT]
dfaut] [PROMPT texte|NOPR[OMPT]] [HIDE]
Avec
variable
Nomdelavariabledesubstitution(sanslecaractre&).
format

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Formatdesaisie(mmesconventionsquecellesutilisesdansloptionFORMATdelacommandeCOLUMN).
dfaut
Valeurpardfautsiaucunevaleurnestsaisie.
texte
Textedelinvite(mettreentreapostrophesouentreguillemetssiletextecontientdesespaces).
HIDE
Permetdemasquerlasaisie(commepourunmotdepasse).
Unevariabledesubstitutionpeutaussitredfinie,sansinterventiondelutilisateur,grcelacommandeDEFINE.
Syntaxe
DEFINE variable = valeur
Avec
variable
Nomdelavariabledesubstitution(sanslecaractre&).
valeur
Valeurdelavariable(mettreentreapostrophesouentreguillemetssilavaleurcontientdesespaces).
Pardfaut,lorsqueSQL*Pluseffectueunesubstitution,ilafficheunmessagedonnantlordreSQLavantetaprsla
substitution. Il est possible dactiver ou de dsactiver cette fonctionnalit grce la commandeSET VERIFY ON |
OFF.
Exempledescriptinfo.sqlutilisantdesvariablesdesubstitution
ACCEPT colonnes CHAR DEFAULT empno PROMPT "Colonne(s) : "
ACCEPT nom CHAR PROMPT "
Nom : "SELECT &colonnes FROM emp WHERE ename = UPPER(&nom);
ExcutionduscriptdansSQL*Plus(saisieengras)
SQL> @info
Colonne(s) : job
Nom : blake
old
1: SELECT &colonnes FROM emp WHERE ename = UPPER(&nom)
new
1: SELECT job FROM scott.emp WHERE ename = UPPER(blake)
JOB
--------MANAGER
SQL> SET VERIFY OFFSQL> @info
Colonne(s) : empno,job,sal
Nom : king
EMPNO JOB
SAL
--------- --------- --------7839 PRESIDENT
5000
Notezquedansledeuximecas,lasubstitutioneffectueparSQL*Plusnestpasaffiche(rsultatdelacommande
SET VERIFY OFF).
Lorsquelavariableestimmdiatementsuiviedunelettre,dunchiffre,dunpointoudunsoulign,ilestncessaire
dutiliserunpointpourbiendlimiterlafindunomdelavariable.
Exemple :

- 4-

ENI Editions - All rights reserved - Algeria Educ

SQL> DEFINE prefixe=user_


SQL> SELECT COUNT(*) FROM &prefixetables;
Enter value for prefixetables:
Surcetexemple,SQL*Plusconsidrequelenomdelavariableestprefixetables(etildemandesavaleurpuisque
cettevariablenestpasdfinie).
Solution :
SQL> SELECT COUNT(*) FROM &prefixe.tables;
old 1: SELECT COUNT(*) FROM &prefixe.tables
new 1: SELECT COUNT(*) FROM user_tables
COUNT(*)
---------638
Aveclepointaprslenomdelavariable,leproblmeneseposeplus.
Leproblmeneseposepassilecaractrequisuitestundlimiteurdutype/,-,$,#,etc.Encasdedoute,lepoint
peutdetoutefaontreutilis.

f.Passerdesvaleursunscript
Lesvariablesdesubstitution&1,&2, peuventtreutilisespourfairerfrenceauxparamtresprsentssurla
lignedappelduscript.
Exempledescriptinfo.sql utilisantdesparamtrespassssurlalignedappelduscript
SET VERIFY OFF
SELECT &1 FROM emp WHERE ename = UPPER(&2);
ExcutionduscriptdansSQL*Plus
SQL> @info job blake
JOB
-------MANAGER
ExcutionduscriptdanslalignedecommandeSQL*Plus
> sqlplus scott/tiger @info.sql job blake
...
JOB
-------MANAGER
Lavaleurpasseenparamtreunscriptdoittremiseentreapostrophesouentreguillemetssiellecontientdes
espaces(lespaceestlesparateurdesparamtres).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

OracleSQLDeveloper
OracleSQLDeveloperestuneapplicationgraphiquepermettantdexcuterdesrequtesoudesscriptsSQL,degrer
les objets dune base de donnes (tables, vues, etc) et de dvelopper et mettre au point des programmes PL/SQL.
OracleSQLDeveloperestgratuitetpeuttretlchargdirectementsurlesiteOTN.LapagedaccueildOracleSQL
Developer se trouve ladresse suivante : http://www.oracle.com/technology/products/database/sql_
developer/index.html.Voustrouvereznotammentcetteadresseladocumentationetdestutoriaux.Depuislaversion
11dOracle,OracleSQLDeveloperestinstallpardfaut.
Sur plateforme Windows, Oracle SQL Developer peut tre lanc par le menu Dmarrer Programmes Oracle
nom_oracle_homeDveloppementdapplicationsSQLDeveloper.
Sur plateforme Unix ou Linux, Oracle SQL Developer peut tre lanc laide du
$ORACLE_HOME/sqldeveloper/sqldeveloper.sh.Lapplicationncessiteunenvironnementgraphique.

shell

script

Sur plateforme Windows, lors du premier lancement, il est possible que loutil demande le chemin de lapplication
java.exe.VouspouvezutilisercellefournieparOracle :%ORACLE_HOME%\jdk\bin\java.exe.
LafentreprincipaledOracleSQLDeveloperalalluresuivante :

Dans la partie gauche de la fentre, une structure arborescente permet de naviguer dans les objets dune ou de

plusieursbasesdedonnes.Unclicsurlebouton
permetdedfinirunenouvelleconnexion.
Danslapartiedroitedelafentre,lazonedetravailpermetdditeretdexcuterdesrequtesSQLetdevisualiserle
rsultat.
Danslensemble,cetoutilesttrsconvivialetsonapprentissageestais.Commesonnomlindique,loutilestplutt
destin aux dveloppeurs et il ne propose donc aucune fonctionnalit dadministration. Pour plus dinformations sur
lutilisationdecetoutil,vouspouvezconsulterladocumentation"OracleDatabaseSQLDeveloperUsersGuide".

ENI Editions - All rights reserved - Algeria Educ

- 1-

OracleEnterpriseManagerDatabaseControl
1.Introduction
OracleEnterpriseManagerDatabaseControlestunoutildadministrationgraphiqueaccessibleparunnavigateur :il
estapparuenversion10gdOracle.
Lorsdelacrationdunebasededonnes,Oraclevousproposedadministrercettebasedefaoncentraliseavec
OracleEnterpriseManagerGridControloudefaonlocaleavecOracleEnterpriseManagerDatabaseControl.
PouradministrerlabaseavecleGridControl(nontraitdanscetouvrage),ilfautinstalleraupralablelagentOracle
ManagementAgentsurlesystme.Sicenestpaslecas,loptionnestpasslectionnableetladministrationavecle
DatabaseControlestproposepardfaut.
Danslasuitedecetouvrage,nousutiliseronsprincipalementlesexpressions"DatabaseControl"ou"consoleOracle
EnterpriseManager"pourdsignerloutilOracleEntrepriseManagerDatabaseControl.
DatabaseControlproposetouteslesfonctionnalitsncessairesladministrationetloptimisationdunebasede
donnesOracle.

2.Architecture
Derrire une apparente simplicit, le Database Control repose sur une architecture relativement complexe. Le
Database Control est une application J2EE qui utilise une version autonome du serveur dapplication OC4J (Oracle
ContainersforJ2EE).

Le Database Control utilise diffrents composants pour surveiller et administrer la base de donnes Oracle et son
environnement(serveurhte,processusdcoute) :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

une version locale du service Oracle Management Service (OMS) destin fonctionner avec la base de
donnesadministre
unrfrentiel(OracleManagementRepository)installdanslabasededonnesadministre(schmaSYSMAN),
destinstockerdesinformationsutilisesparleDatabaseControl
uneversionlocaledelagent(OracleManagementAgent)dontlerleestdefournirdesinformationsauservice
OMSlocal.

Ctclient,unsimplenavigateursuffitpourutiliserlaconsole lenavigateurcommuniqueavecleserviceOMS,surle
port1158.Ctserveur,leserviceOMSetlagentcommuniquentsurleport3938.
Lecompte DBSNMPestutilisparlagentpoursuperviseretgrerlabasededonnes.LecompteSYSMAN est utilis
pourstockerlerfrentielduDatabaseControl ilpeutaussitreutilispouradministrerlabasededonnes.
Le Database Control est associ une base de donnes. Si plusieurs bases de donnes sont prsentes sur le
serveur,chaquebasededonnespossdesapropreinfrastructure(serviceOMS,agent,rfrentiel).Dansuntelcas
defigure,lesportsutilisssontdiffrents :5500et1830pourlasecondebasededonnes,parexemple.
Lefichierportlist.inistockdanslerpertoireinstalldonnelalistedesportsutilissparlesdiffrentes
basesdedonnesprsentessurleserveur.
LesfichiersutilissparleDatabaseControldunebasededonnessontstocksdansdeuxrpertoires :

%ORACLE_HOME%\serveur_sid(plateformeWindows)ou $ORACLE_HOME/serveur_sid(plateformeLinux)
%ORACLE_HOME%\oc4j\j2ee\OC4J_DBConsole_serveur_sid
(plateforme
$ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_serveur_sid(plateformeLinux)

Windows)

ou

La configuration du Database Control est un sujet relativement complexe qui est dcrit dans la documentation
OracleEnterpriseManagerAdvancedConfiguration.Voustrouvereznotammentdanscemanuelcommenteffectuer
lestchessuivantes :

configurerleDatabaseControllorsdelacrationdunebasededonnes

changerlesmotsdepassedeSYSMANetDBSNMP

modifierlesportsutiliss

scuriserleDatabaseControl(cestlecaspardfautenversion11).

SurMetaLink,voustrouverezaussidenombreusesnotesrelativesauDatabaseControl.
Danscetouvrage,nousverronssimplementcommentConfigurerleDatabaseControllorsdelacrationdunebase
dedonnes(cf.ChapitreCrationdunenouvellebasededonnes).

3.GrerleDatabaseControl
LeDatabaseControlpeuttrearrtoudmarrgrcelutilitairelignedecommandeemctl.
Syntaxe :
emctl { start | stop | status } dbconsole
Lescommandesstartetstoppermettentrespectivementdedmarreretdarrterlaconsole lacommandestatus
permetdevoirlestatut.
Lutilitaire agit sur le Database Control de la base de donnes ouverte par linstance dfinie par la variable
denvironnementORACLE_SID sicettevariabledenvironnementnestpaspositionne,lutilitaireafficheunmessage
derreur.
Lacommandeemctl status agentpeutaussitreutilisepourafficherdesinformationsdtaillessurlagent.

- 2-

ENI Editions - All rights reserved - Algeria Educ

LedmarrageduDatabaseControlestassezlong(environ1minute).
Si vous utilisez le Database Control pour administrer la base de donnes, il est souhaitable que ce dernier soit
dmarrautomatiquementlorsdudmarragedusystme.
SurplateformeWindows,leDatabaseControlpeuttredmarrautomatiquementlorsdudmarragedusystme
enpositionnantleserviceassoci(OracleDBConsole<SID>)endmarrageautomatique.
Sur plateforme Unix ou Linux, le serveur dapplication peut tre dmarr automatiquement grce au script de
dmarrageprsentdanslasectionInstallationduserveurduchapitreInstallation.
Le script actuel doit tre modifi pour prendre en charge le dmarrage et larrt de plusieurs Database Control
(ventuellementdansdesOracleHomediffrents)laidedelacommandeemctl.

Vouspouvezvousinspirerdesscriptsdbstartetdbshutpourcrireuntelscript.
Exemple
for ligne in $(cat /etc/oratab | egrep ^[a-zA-Z]+:.*:Y$)
do
SID=$(echo $ligne | cut -d: -f1)
EM_HOME=$(echo $ligne | cut -d: -f2)
export ORACLE_SID=$SID
$EM_HOME/bin/emctl start dbconsole > $LOG 2>&1 &
done
Cet exemple de code permet de dmarrer le Database Control pour toutes les instances dfinies en dmarrage
automatiquedanslefichier/etc/oratab.

4.DbuteravecleDatabaseControl
a.Vuedensemble
Danscettepartie,nousallonsdonnerunevuedensembledelutilisationduDatabaseControl.Danslesdiffrents
chapitres de louvrage, nous verrons ensuite comment utiliser le Database Control pour effectuer les diffrentes
tches dadministration. Pourdmarrer une session Database Control, il suffit douvrir une fentre de votre
navigateuretdesaisiruneURLdelaforme : https://serveur:port/em
serveurestlenomouladresseIPduserveurdebasededonnes.portestlenumroduportsurlequelleservice
OMScommunique(1158parexemple).
Exemple :
https://srvwinora:1158/em
Si la base est dmarre, la page de connexion saffiche. Si la base nest pas dmarre, la page de dmarrage
saffiche(cf.ChapitreDmarrageetarrt).
Lapagedeconnexionpermetdesaisirunnom,unmotdepasseetventuellementdedemanderuneconnexion
SYSDBAouSYSOPER(zoneSeconnecterentantque) :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Initialement,seulslescomptesOracleSYS,SYSTEMetSYSMANpeuventutiliserleDatabaseControl.
Unefoisconnect,vousarrivezsurlapagedaccueilduDatabaseControl :

Cettepagedaccueilvousdonneunevisionglobaledufonctionnementgnraldelabasededonnes.Cettepage
affiche notamment des informations synthtiques sur les performances du systme, lutilisation de lespace et les
alertessignalesparlesystme diffrentslienspermettentensuitedafficherdesinformationsdtaillessurces
diffrentsaspects.
LesliensPerformances,Disponibilit,Serveur,Schma,MouvementdedonnesetLogicieletfichiersassocis
affichentdespagesdenavigationquipermettentdaccderauxdiffrentsoutilsdadministration.
Enhautdechaquepage,leDatabaseControlpropose4liens :

LelienInstallationafficheunepagequipermetdeconfigurerleDatabaseControl cettepagepermetnotamment
dedfinirdautresutilisateurshabilitsutiliserlaconsole.
LelienPrfrencesafficheunepagequipermetdemodifierlesprfrencesdelutilisateurcourant,etnotamment
dedfiniruneadressedecourrierlectroniquepermettantderecevoirunenotificationencasdeproblme(voirla
sectionUtiliserlesalertesdanscechapitre).

b.Informationsdidentificationetdeconnexion
Pour certaines tches dadministration (planification de travaux, sauvegarde/restauration), le Database Control
vous demandera de saisir des informations didentification et de con nexion la base de donnes et/ou au
systmehte.
Pourviterdedevoirsaisircesinformationschaquefois,vouspouvezlesenregistrerdansvosprfrences.
Sur la page Prfrences, cliquez sur le lien Informations didentification et de connexion stockes dans les
prfrences.

- 4-

ENI Editions - All rights reserved - Algeria Educ


Cliquezsurunedesicnesdeladernirecolonnepoursaisirlesinformationsdidentificationdelaciblesouhaite
(instancedebasededonnes,hte).

Pour la base de donnes, vous pouvez enregistrer deux identifications Oracle pour la base de donnes (une
identification "normale", par exemple SYSTEM, et une identification SYSDBA, par exemple SYS) ainsi quune
identificationpourlhte.
Encequiconcernelidentificationpourlhte,vousdevezindiquerunutilisateurdusystmequialedroitdexcuter
desapplicationsdanslerpertoireOracleHome cestlecasdescomptesquisontmembresdugroupeOSDBA,et
doncnotammentducompteutilispourlinstallation.
Sur plateforme Windows, le compte utilis doit par ailleurs tre membre du groupe Administrateurs et avoir le
privilge Ouvrir une session en tant que tche. Si ce nest pas le cas, vous aurez le message derreur suivant
lorsquevouscliquerezsurleboutonTest :

Pourattribuerceprivilge,procdezdelamaniresuivante :

SlectionnezlemenuDmarrer Programmes Outilsdadministration Stratgiedescuritlocale.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Danslarborescencedegauche,cliquezsurledossierStratgieslocale Attributiondesdroitsutilisateur.
Dans la liste des stratgies, double cliquez sur la stratgieOuvrir une session en tant que tche et ajoutez
lutilisateursouhaitdanslaliste.

5.Utiliserlesalertes
a.Visualiserlesalertes
Pardfaut,leDatabaseControlestconfigurpoursignalerdiffrentsproblmessurlefonctionnementdelabase
dedonnes :cestlanotiondalerte.LesalertessontvisiblessurlapagedaccueilduDatabaseControl :

La liste Alertes donne les alertes de linstance et de la base de donnes. La liste Alertes associes donne les
alertes dautres composants Oracle (Oracle Net par exemple) ou de lhte. Lorsquune alerte est signale, vous
pouvezcliquersurlelienassocipouravoirplusdinformations selonlanaturedelalerte,lapageaffichepeut
proposerdeslienspourfairedesactionscorrectricesouuneanalysesupplmentaire.

b.Dfinirlesseuilsdesalertes
Surlapagedaccueil,vouspouvezcliquersurlelienParamtresdemesureetdergle(cadreLiensassocisen
bas),pouraccderlapagedegestiondesseuilsdedclenchementdesalertes :

Cettepageaffichelesseuilsactuelsdedclenchementdesalertespourlesdiffrentesmesures.Pourlesmesures

- 6-

ENI Editions - All rights reserved - Algeria Educ

souhaites,vouspouvezdfinirunseuildavertissementetunseuilcritique.

c.Recevoirunenotificationlorsquunealertesurvient
Il est possible de recevoir directement une notification lorsquune alerte survient, typiquement par messagerie
lectronique.
Pourrecevoirunenotificationparmessagerielectronique,vousdevezfairedeuxchoses :

configurerlesmthodesdenotificationduDatabaseControl

vous"abonner"desnotifications.

Configurerlesmthodesdenotification
Surlapagedaccueil,outouteautrepage,cliquezsurlelienInstallationenhautdroite,puissurlelienMthodes
denotificationpouraccderlapagededfinitiondesmthodesdenotification :

Lapremiremthodedenotificationquevouspouvezdfinirestlanotificationparmessagerielectronique.Pourla
configurer,ilsuffitdindiquerladresseduserveurdemessageriesortant(etsibesoinuneauthentificationpource
serveur) et didentifier lexpditeur (le Database Control) par un nom et une adresse lectronique. Si vous le
souhaitez, vous pouvez dfinir dautres mthodes de notifications : SNMP (Simple Network Management Protocol),
commandedusystmedexploitation,procdurePL/SQL.
La configuration de la mthode de notification par messagerie lectronique peut tre ralise lors de la
crationdunebasededonneslaidedelassistantgraphique,oulorsdelaconfigurationduDatabase
Controlaveclutilitaireemca.

Sabonnerunenotification
Sivoussouhaitezrecevoirdesnotificationsparmessagerielectronique,vousdevezdabordassocieruneadresse
lectroniqueaucompteOraclequevousutilisezpourladministration.
Surlapagedaccueil,outouteautrepage,cliquezsurlelienPrfrencesenhautdroite,pouraccderlapage
degestiondevosprfrences :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-


DanslecadreAdresseemail,vouspouvezindiqueruneouplusieursadresseslectroniques.
Ensuite,vouspouvezcliquersurlelienRglespourvousabonnerunenotification :

Une rgle de notification est un ensemble de conditions qui dclenche une notification : cible (base de donnes,
processus dcoute, hte, etc.), disponibilit de la cible, survenance dune ou plusieurs alertes (avec seuil de
gravit). Plusieurs rgles de notification sont dfinies par dfaut lors de linstallation du Database Control. Par
exemple,largle"DatabaseAvailabilityandCriticalStates"dclencheunenotificationlorsquelabasededonnes
est arrte, et un seuil critique est atteint sur plusieurs mesures (pourcentage de remplissage de la zone
darchivage,pourcentagederemplissageduntablespace,etc.).
Sur la page cidessus, vous pouvez consulter ou modifier une rgle prdfinie ou crer de nouvelles rgles. En
cochant la case de la dernire colonne (Abonnement), vous pouvez vous "abonner" la rgle, cestdire
demandertredestinatairedelanotification.
CestlecompteOracleSYSMANquiestpropritairedesrglesdenotificationprdfinies,maiscellescisont
publiquesetpeuventdonctremodifiesparlesautresutilisateurshabilitsduDatabaseControl.Lorsde

- 8-

ENI Editions - All rights reserved - Algeria Educ

la cration dune base de donnes laide de lassistant graphique, ou lors de la configuration du Database
Control avec lutilitaire emca, si vous configurez la notification par messagerie lectronique, ladresse de
messagerie indique sera associe au compte SYSMAN, et les notifications seront automatiquement envoyes
cetteadresse.

6.Lestchesdemaintenanceautomatises
Troistchesdemaintenanceautomatisessontprogrammespardfaut :

Collectedesstatistiquespourloptimiseur(voirChapitreGestiondestablesetdesindex)

Conseilsurlestockagedessegments(voirChapitreGestiondestablesetdesindex)

ConseilsurloptimisationdesrequtesSQL.

LestchesdemaintenanceautomatisespeuventtresupervisesdansleDatabaseControl.Surlapagedaccueil,
cliquez sur le lien Serveur, puis sur le lienTches de maintenance automatises (cadreOracle Scheduler) pour
afficherlalistedestchesdemaintenanceautomatises :

Par dfaut, les tches de maintenance automatique sexcutent du lundi au vendredi entre 22h00 et 2h00 et le
samedietledimancheentre6h00et2h00.
Si vous cliquez sur le lien correspondant au nom de la tche, vous pouvez visualiser le rsultat de la dernire
excution(saufpourlacollectedesstatistiques).
SivouscliquezsurleboutonConfigurer,lapagedeconfigurationdestchesdemaintenancesaffiche :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-


partir de cette page, vous pouvez activer ou dsactiver les tches, modifier leur planification ou les configurer
(boutonConfigurer).
Dans ces deux pages, il y a une inversion entre les termes "Dsactiv" et "Activ" : "Dsactiv" veut dire
"Activ"etrciproquement.

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Objectifsdelouvrage
CetouvrageapourobjectifdevousprsentertouteslesbasesdeladministrationdunebasededonnesOracle11g :

comprhensionminimaledelarchitecture

procduresdinstallationenenvironnementWindowsetUnix/Linux

configurationdOracleNet

arrtetdmarrage

crationdunenouvellebasededonnes

gestiondelammoire

gestiondustockage(fichiersdedonnes,tablespaces,tables,index,etc.)

gestiondelascurit(utilisateursetdroits)

sauvegardesetrestaurationsavecRMAN(RecoveryManager)

Ce livre contient de nombreux conseils pratiques et de nombreuses recommandations, et prsente les solutions qui
peuvent tre apportes aux problmes courants. Le tout est abondamment illustr par une quantit dexemples sur
lutilisation des commandes et autres ordres SQL, mais aussi par de nombreuses copies dcrans dOracle Enterprise
ManagerDatabaseControl.LesdiffrentsexemplesdecetouvragepeuventtretlchargssurlesitedesEditionsENI.
CetouvragesadresselafoisauxdbutantsquisouhaitentdeveniradministrateurOracle,maisaussiauxnombreux
administrateursformssurletas,etquisouhaitentmettrejourleursconnaissances,lesconsolideretdcouvrirles
nombreusesnouvellesfonctionnalitsdOracle11g.
Pour pouvoir profiter pleinement de ce livre, il est conseill davoir des connaissances pralables sur les bases de
donnesrelationnelles(savoircequestunetable,unevue,unindex)etsurleSQL(ordresSELECT,INSERT,UPDATEet
DELETE).
Danscetouvrage,nousemploieronssouventletermecourammentutilisdeDBApourdsignerladministrateur
delabasededonnes.Enanglais,DBAsignifieDataBaseAdministrator.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

LadocumentationOracle
1.Olatrouver ?
Lemdiadinstallationcontientessentiellementladocumentationrelativelinstallation,notamment :

OracleDatabaseReleaseNotes

OracleDatabaseQuickInstallationGuide

OracleDatabaseInstallationGuide.

La
documentation
Oracle
est
accessible
http://www.oracle.com/technology/documentation/index.html

en

ligne

ladresse

suivante :

2.Organisation
Ladocumentationcomporteplusieurs"livres"(formatHTMLouPDF)regroupsparthme.

LazoneSearchpermetdeffectuerdesrecherches,notammentsurunnumroderreurOracle.
LelienMasterBookListaffichelalistedetousleslivres.
Lesprincipauxlivressontidentifispardescodesproposssousformedeliendansletableaudesynthsedelaliste
deslivres.Leslivreslesplusutilespourladministrationsontlessuivants :
OracleDatabaseConcepts(CON)
ConceptssurlarchitectureetlesfonctionnalitsdOracle.
OracleDatabaseAdministratorsGuide(ADM)
Manueldeladministration.

ENI Editions - All rights reserved - Algeria Educ

- 1-

OracleDatabaseSecurityGuide(SEC)
Gestiondesutilisateursetdesdroits.
OracleDatabaseReference(REF)
Manuel de rfrence de tous les paramtres du fichier de paramtres et de toutes les vues du dictionnaire de
donnes.
OracleDatabaseSQLLanguageReference(SQL)
ManuelderfrenceduSQL.
OracleDatabaseErrorMessages(ERR)
Manueldeserreurs.
OracleDatabaseUtilities(UTI)
ManueldutilisationdesoutilsDataPump,Import,ExportetSQL*Loader.
OracleDatabaseBackupandRecoveryUsersGuide(BAC)
Manueldessauvegardesetrestaurations.
OracleDatabaseBackupandRecoveryReference(BAC)
ManuelderfrencedeloutilRMAN.
OracleDatabaseUpgradeGuide(UPG)
ManuelpourlamigrationdunebaseOracleduneancienneversion.
Ladocumentationcomportebeaucoupdautreslivresrelatifsaudveloppement(PL/SQL,Java...),lacoucheOracle
Net,loptimisation,etc.

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Diagnostiquerlesproblmes
1.Vuedensemble
Depuislaversion11,Oracleinclutunenouvelleinfrastructurepourlediagnosticdesproblmes.
Le composant principal de cette infrastructure est le Rfrentiel de Diagnostic Automatique (Automatic Diagnostic
Repository ADR). ADR est un rpertoire qui stocke de faon structure et centralise toutes les donnes de
diagnostic,parexempledesfichiersdetraceoudalerte.
Cetteinfrastructureintroduitdeuxconcepts:lesproblmesetlesincidents.
Unproblmeestuneerreurcritiquedelabasededonnes,commeleserreursinternes(ORA-00600),leserreursdu
systmedexploitation(ORA-07445)oulemanquedemmoiredanslaSharedPool(ORA-04031).Chaqueproblmeest
identifi par une cl qui inclut le code de lerreur (par exemple ORA-600) et ventuellement, des paramtres
supplmentaires.
Un incident est une occurrence dun problme. Chaque incident est identifi par un numro dincident. Lorsquun
incidentseproduit,labasededonneseffectuelesactionssuivantes :

uneentreestcritedanslefichierdalertedelinstance(voirciaprs)

unealerteestenvoyeOracleEnterpriseManager

des informations de diagnostic sont captures et enregistres dans des fichiers dincidentquisontmarqus
aveclenumrodelincidentetstocksdansunsousrpertoireduRfrentieldeDiagnosticAutomatique.

UnautrecomposantdelanouvelleinfrastructureestleHealthMonitorquiregroupeplusieursoutilsdevrificationdela
bonnesantdelabasededonnes.CesoutilsdevrificationsontexcutsautomatiquementparOraclelorsquune
erreur critique se produit ils peuvent aussi tre excuts la demande. Les rsultats sont stocks dans le
RfrentieldeDiagnosticAutomatique.
PourexploiterleRfrentieldeDiagnosticAutomatique,Oracleproposedeuxoutils :

LeSupportWorkbenchdelaconsoleEnterpriseManager

Loutillignedecommandeadrci

2.LeRfrentieldeDiagnosticAutomatique
Depuislaversion11,touslesfichiersdetraceettouslesfichiersjournauxdesdiffrentscomposantsquisexcutent
surleserveur(basesdedonnes,processusdcoute,etc.),sontstocksdefaonstructureetcentralisedansun
rpertoiredediagnostic:cestleRfrentieldeDiagnosticAutomatique(AutomaticDiagnosticRepositoryADR).
LerpertoiredebasedADRestdfiniparleparamtreDIAGNOSTIC_DESTquiest,pardfaut,galaurpertoireOracle
BasesilavariabledenvironnementORACLE_BASEestdfiniesinon,ilestgal,pardfaut,ausousrpertoirelogdu
rpertoire Oracle Home. Sous ce rpertoire de base, un rpertoire diag est cr avec une arborescence du type
suivant:
diag
+---asm
+---clients
+---crs
+---diagtool
+---lsnrctl
+---netcman
+---ofm
+---rdbms

+---<nom unique base de donnes>

+---<nom instance>

+---alert

+---incident

+---trace

+---...

ENI Editions - All rights reserved - Algeria Educ

- 1-


+---...
+---tnslsnr
Le rpertoirediag contient un sousrpertoire par composant Oracle, avec notamment un rpertoire rdbms pour les
bases de donnes et un rpertoire tnslsnr pour le processus dcoute. Pour les bases de donnes, le rpertoire
rdbms contient un sousrpertoire par base de donnes qui, luimme, contient un sousrpertoire par instance qui
accde la base de donnes (en gnral une seule instance, sauf dans le cas dune configuration Real Application
Clusters).Lesprincipauxrpertoiressontlessuivants :
alert
FichierdalertedelinstanceauformatXML.
incident
Fichiersrelatifsauxincidents.
trace
Fichiersdetracedesprocessusetversiontextedufichierdalertedelinstance.
LavueV$DIAG_INFOdonnedesinformationssurlerpertoiredediagnostic :
SQL> SELECT name,value FROM v$diag_info;
NAME
VALUE
--------------------- ----------------------------------------------------Diag Enabled
TRUE
ADR Base
d:\app\oracle
ADR Home
d:\app\oracle\diag\rdbms\orcl\orcl
Diag Trace
d:\app\oracle\diag\rdbms\orcl\orcl\trace
Diag Alert
d:\app\oracle\diag\rdbms\orcl\orcl\alert
Diag Incident
d:\app\oracle\diag\rdbms\orcl\orcl\incident
Diag Cdump
d:\app\oracle\diag\rdbms\orcl\orcl\cdump
Health Monitor
d:\app\oracle\diag\rdbms\orcl\orcl\hm
Default Trace File
d:\app\oracle\diag\rdbms\orcl\orcl\trace\
orcl_ora_4088.trc
Active Problem Count 1
Active Incident Count 1
Avant la version 11, lemplacement des fichiers dalerte et de trace tait dfini par les paramtres
BACKGROUND_DUMP_DEST(fichiersdalerteetfichiersdetracedesprocessusdarrireplan)etUSER_DUMP_DEST(fichiersde
tracedesprocessusserveur).LesemplacementsrecommandsparlestandardOFAtaientrespectivementlessous
rpertoiresbdumpetudumpdurpertoiredadministration.
Depuislaversion11,lesparamtresBACKGROUND_DUMP_DESTetUSER_DUMP_DESTsontdprcisetignors.Silsnesont
pasdfinisdanslefichierdeparamtresdelinstance,ilssontautomatiquementrenseignsparOracle.

3.Lesfichiersdalerteetdetrace
Oraclemaintientunfichierdalertedanslequelilcritdesmessagesdinformationouderreursurlaviedelabasede
donnes :

- 2-

Crationdelabasededonnes

Dmarragesetarrts

Modificationsdelastructure(tablespaces,fichiersdedonnes)

Erreurscritiques(incidents)

Erreursdebloccorrompu(ORA-01578)

Problmesrelatifslcritureoularchivagedesfichiersdejournalisation.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Encomplment,lorsquunprocessusrencontreunproblme,ilcritdesinformationsdansunfichiertrace.
Lefichierdalerteestdisponiblesousdeuxformes:uneversiontexteetuneversionXML(nouveauenversion11).
Le fichier dalerte au format XML se nomme log.xml et se trouve dans le sousrpertoire alert du rpertoire de
diagnosticdelabasededonnes.Ilestautomatiquementrenommenlog_n.xmllorsquilatteintunecertainetaille.
Lenomdufichierdalerteauformattexteestdelaformealert_<SID>.logilsetrouvedanslesousrpertoiretrace
durpertoiredediagnosticdelabasededonnes.
Le fichier dalerteauformattexte,grossitsanslimite.Ilestconseilldelepurgerrgulirementpourviterquilne
soit trop volumineux le mieux est de larchiver intervalles rguliers pour garder lhistorique de la vie de la base.
Vous pouvez supprimer ou renommer le fichier dalerte au format texte sans crainte Oracle le recrera lorsquil en
aurabesoin.
Lenomdesfichiersdetracedesprocessusdarrireplanestdelaforme<sid>_<nom_processus>_<id_processus>.trc.
Le nom des fichiers de trace des processus serveur est de la forme <sid>_ora_<id_processus>.trc. La taille des
fichiersdetraceestlimiteparleparamtreMAX_DUMP_FILE_SIZE.
Ilfautpriodiquementconsultercesfichiersdalerteetdetrace.Silecontenudunfichierdalerteoudetrace
nestpasclair,ilnefautpashsitercontacterlesupportOracle.

4.UtiliserleDatabaseControl
a.SupportWorkbench
La console Enterprise Manager propose une fonctionnalit intituleSupport Workbench qui permet dexploiter trs
facilementleRfrentieldeDiagnosticAutomatique.
Dans la console, le terme "Support Workbench" est maladroitement traduit par "Prise en charge de
workbench".Danslasuitedecechapitre,jeprfredoncutiliserlenomanglais.

PouraccderlapagedaccueilduSupportWorkbenchpartirdelapagedaccueildelaconsole,cliquezsurlelien
LogicieletfichiersassocispuissurlelienPriseenchargedeworkbench.

LapagedaccueilduSupportWorkbenchaffichelesproblmessurvenusaucoursdes24derniresheures.
EncliquantsurlelienAfficher,lesincidentsrelatifsauproblmesontaffichs :

ENI Editions - All rights reserved - Algeria Educ

- 3-


Pourafficherledtaildunincident,ilsuffitensuitedecliquersurlelienassoci :

LeSupportWorkbenchpermet,trsfacilement,deregrouperlesdonnesdediagnosticdansun"package"envuede
lesenvoyerausupportOracle.

SurlapagedaccueilduSupportWorkbench,cochezleproblmeconcernpuiscliquezsurleboutonPackage :

Lapagesuivantesaffiche :

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Surcettepage,laissezloptionPackagingrapideslectionnepuiscliquezsurleboutonContinuer.

Lapremirepagedelassistantsaffiche :

Surcettepage,vousdevezsaisirvosidentifiantsdeconnexionMetalink.Sivousavezdjcrunedemande
deservice,slectionnezloptionNonpourleboutonradioCrerunedemandedeservice(SR).Optionnellement,
vouspouvezsaisirunnometunedescriptionpourlepackage.
CliqueztroisfoissurleboutonSuivant,pourterminerlacrationdupackageetsonenvoiausupportOracle.

EncasdeproblmelorsdelenvoidupackageausupportOracle,unepagederreursaffiche :

Commelindiquelemessagederreur,lepackageestnanmoinscretpeuttreenvoyultrieurementausupport,
soitpartirdelaconsole,soitmanuellement.Commelemontrelexemplecidessus,lenvoidupackageausupport
OraclechouelorsquOracleConfigurationManagernapastcorrectementinstalletconfigurlorsdelinstallation
dOracle.Pourplusdinformationssurlinstallationetlaconfigurationdececomposant,consultezladocumentation
"Oracle Configuration Manager Installation and Administration Guide" ( ce jour, cette documentation existe
uniquementenversion10.2).
Une fois que le package est cr, et mme sil na pas pu tre envoy, des informations supplmentaires sont
affichesdanslapagedaccueilduSupportWorkbench :

ENI Editions - All rights reserved - Algeria Educ

- 5-


Pour le problme concern, la colonne Package contient Oui, et longlet Packages permet de retrouver les
packagesquionttgnrs,etventuellementdelesenvoyerdenouveausilenvoiinitialachou.

b.Consulterlecontenudufichierdalertedelinstance
Dans la section Liens associs situe dans le bas des pages de la console, le lien Contenu du journal dalertes
afficheunepagedeconsultationducontenudufichierdalertedelinstance.

LelienRechercherafficheunformulairederecherchequipermetdeffectuerunerecherchedanslefichierdalertede
linstance(pardate,textedumessage,etc.).

c.Vrificateurs
Pour accder aux outils de vrification de la bonne sant de la base de donnes, vous pouvez cliquer sur le lien
Centredeconseil(sectionLiensassocissituedanslebasdelapagedaccueildechaqueonglet)puissurlelien
(onglet)Vrificateurs.

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


LesliensdelasectionVrificateurspermettentdelancerlesdiffrentsoutilsdevrification.
La section Traitements du vrificateur affiche le rsultat de lexcution des outils, notamment des excutions
automatiqueseffectuesparOraclelorsquuneerreurcritiqueseproduit.
Pourconsulterlersultat,vouspouvezcliquersurleboutonDtailsousurleliendunomdutraitement.

Lacausedelerreur,siellenapasencorettraite,estaffichedanscettepage.
La mme information peut tre consulte dans longlet Rsultats de recherche du vrificateur du Support
Workbench.

ENI Editions - All rights reserved - Algeria Educ

- 7-


Danslesdeuxcas,vouspouvezcliquersurleboutonLancerRecoveryAdvisorpourrparerleproblmelaidedu
DataRecoveryAdvisor(cf.sectionUtiliserleDatabaseControlduchapitreSauvegardeetrcupration).

5.Loutillignedecommandeadrci
LoutillignedecommandeadrcipermetdeconsulterlecontenuduRfrentieldeDiagnosticAutomatique.
Pourlancerloutileninteractif,ilfautsassurerquelenvironnementOracleestcorrectementpositionn(ORACLE_HOME
etPATH)puissaisirlacommandeadrcilinvitedusystmedexploitation.
Exemple
C:\>adrci
ADRCI: Release 11.1.0.6.0 - Beta on Lun. Juin 30 16:40:29 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
ADR base = "d:\app\oracle"adrci>
Loutil propose un trs grand nombre de commandes qui pour certaines dentreelles,comportentungrandnombre
doptions. Dans ce chapitre, nous prsenterons brivement les commandes et options les plus utiles pour effectuer
des tches courantes. Toutes les commandes et options sont dcrites dans la documentation "Oracle Database
Utilities".
Lescommandeslesplusutilessontlessuivantes:
HELP
Listetouteslescommandes.
HELP commande
Affichelaidedunecommande.
EXIT ouQUIT
Quitteloutil.
SHOW HOMES

- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Affichelechemindelaracinedurpertoiredediagnosticdechaquecomposantprsentsurleserveur.
SET HOMEPATH chemin
Dfinitlerpertoiredediagnosticcourant.
SET EDITOR programme
Dfinitlditeurexterneutiliserpourafficherlecontenudesfichiersdalerteoudetrace.
SHOW ALERT [options]
Affichelecontenudun fichier dalerte.Sansoption,latotalitducontenudufichierdalerteestaffichaveclditeur
externe.
SHOW INCIDENT [options]
AffichedesinformationssurlesincidentsrpertorisdansADR.
SHOW PROBLEM [options]
AffichedesinformationssurlesproblmesrpertorisdansADR.
Lescommandesnesontpassensibleslacasse.
LacommandeSET EDITORdoitabsolumenttreutilisesuruneplateformeWindowscarlditeurpardfaut
estviquinexistepas(enstandard)surcetteplateforme.
Exemples

Dfinirlerpertoiredediagnosticcourant(celuidelinstanceORCL) :

adrci> SHOW HOMES


ADR Homes:
...
diag\rdbms\orcl\orcl
diag\rdbms\test\test
diag\tnslsnr\srvwinora\listener
adrci> SET HOMEPATH diag\rdbms\orcl\orcl

Afficherles10derniresentresdufichierdalertedelinstance:

adrci> SHOW ALERT -TAIL 10


2008-06-27 10:07:57.375000 +02:00
SMCO started with pid=20, OS id=2856
...
2008-06-30 12:26:09.593000 +02:00
Thread 1 advanced to log sequence 43
Current log# 1 seq# 43 mem# 0: D:\APP\ORACLE\ORADATA\ORCL\REDO01.LOG

Afficher, dans la fentre courante, les entres du fichier dalerte de linstance correspondant un critre
particulier(ici,laprsencedunecertaineerreur) :

adrci> SHOW ALERT -TERM -P "message_text like ORA-1652%"


ADR Home = d:\app\oracle\diag\rdbms\orcl\orcl:
********************************************************************
2008-06-24 15:33:29.312000 +02:00
ORA-1652: unable to extend temp segment by 128 in tablespace USERS
2008-06-24 15:35:07.031000 +02:00
ORA-1652: unable to extend temp segment by 128 in tablespace USERS

ENI Editions - All rights reserved - Algeria Educ

- 9-

Lammechoseenutilisantunditeurexterne(icisuruneplateformeWindows,cequincessitededfinir
lditeurutiliseraupralable) :

adrci> SET EDITOR notepad.exe


adrci> SHOW ALERT -P "message_text like ORA-1652%"
ADR Home = d:\app\oracle\diag\rdbms\orcl\orcl:
***************************************************************
Output the results to file: c:\temp\alert_2348_3036_orcl_2.ado

Afficherla"structure"dufichierdalerte(listeles"colonnes"quipeuventtreutilisesdanslesrecherches) :

adrci> DESCRIBE alert_ext


Name
----------------------------ORIGINATING_TIMESTAMP
NORMALIZED_TIMESTAMP
ORGANIZATION_ID
COMPONENT_ID
HOST_ID
HOST_ADDRESS
MESSAGE_TYPE
MESSAGE_LEVEL
MESSAGE_ID
MESSAGE_GROUP
CLIENT_ID
MODULE_ID
PROCESS_ID
THREAD_ID
USER_ID
INSTANCE_ID
DETAILED_LOCATION
UPSTREAM_COMP_ID
DOWNSTREAM_COMP_ID
EXECUTION_CONTEXT_ID
EXECUTION_CONTEXT_SEQUENCE
ERROR_INSTANCE_ID
ERROR_INSTANCE_SEQUENCE
MESSAGE_TsEXT
MESSAGE_ARGUMENTS
SUPPLEMENTAL_ATTRIBUTES
SUPPLEMENTAL_DETAILS
PARTITION
RECORD_ID
FILENAME
PROBLEM_KEY
VERSION

Type
NULL?
--------------- ----------timestamp
timestamp
text(65)
text(65)
text(65)
text(17)
number
number
text(65)
text(65)
text(65)
text(65)
text(33)
text(65)
text(65)
text(65)
text(161)
text(101)
text(101)
text(101)
number
number
number
text(2049)
text(129)
text(129)
text(129)
number
number
text(513)
text(65)
number

AfficherlesincidentsrpertorisdansADR :

adrci> SHOW INCIDENT


********************************************************************
INCIDENT_ID
PROBLEM_KEY
CREATE_TIME
-------------------- ----------------------------------------------6529
ORA 600 [kssadd: null parent]
2008-06-24 16:03:16.593000 +02:00
1 rows fetched

Afficherledtaildunincident :

adrci> SHOW INCIDENT -MODE DETAIL -P "incident_id = 6529"


ADR Home = d:\app\oracle\diag\rdbms\orcl\orcl:
***********************************************************

- 10 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

**********************************************************
INCIDENT INFO RECORD 1
**********************************************************
INCIDENT_ID
6529
STATUS
ready
CREATE_TIME
2008-06-24 16:03:16.593000 +02:00
PROBLEM_ID
1
...
PROBLEM_KEY
ORA 600 [kssadd: null parent]
FIRST_INCIDENT
6529
FIRSTINC_TIME
2008-06-24 16:03:16.593000 +02:00
...
INCIDENT_FILE
d:\app\oracle\diag\rdbms\orcl\orcl\trace\
orcl_ora_2108.trc
OWNER_ID
1
INCIDENT_FILE
d:\app\oracle\diag\rdbms\orcl\orcl\incident\
incdir_6529\orcl_ora_2108_i6529.trc
1 rows fetched
Loutil adcri peut tre utilis en mode batch, soit en passant les commandes sur la ligne de commande
(option exec), soit en excutant un script de commandes (option script). Voir la documentation "Oracle
DatabaseUtilities"pourplusdinformations.

ENI Editions - All rights reserved - Algeria Educ

- 11 -

Principes
Pourrendreunebaseaccessibletouslesutilisateurs,ilfautdmarreruneinstanceetouvrirlabasededonnesavec
cetteinstance.
Ilyatroisgrandesphasesdansleprocessusdedmarrage :

dmarragedelinstance

montagedelabasededonnes

ouverturedelabasededonnes.

Demme,ilyatroisgrandesphasesdansleprocessusdarrt :

fermeturedelabasededonnes

dmontagedelabasededonnes

arrtdelinstance.

Uneinstancepeuttredmarreavectroisniveauxsuccessifsdedisponibilitdelabasededonnes,correspondant
auxtroisphasesdudmarrage :

Instancedmarre(tatNOMOUNT)

Basemonte(tatMOUT)

Baseouverte(tatOPEN).

Lorsdudmarragedelinstance,lefichierdeparamtresestlu,laSGAestalloueetlesprocessusdarrireplansont
dmarrs. ce stade, seule linstance est lance il ny a pas de base de donnes associe. Les vues dynamiques
relativeslinstance(V$INSTANCE, V$SGA,V$OPTION,V$PARAMETER,V$VERSIONetc.)sontinterrogeablesmaispaslesvues
dynamiques relatives la base de donnes (V$DATABASE par exemple). Cet tat est principalement utilis lors de la
crationdunenouvellebase.
Lors du montage de la base de donnes, linstance utilise le paramtreCONTROL_FILESdufichierdeparamtrespour
localiserlesfichiersdecontrleetlesouvrir.Danslefichierdecontrle,linstanceextraitlenometlestatutdesfichiers
de donnes et des fichiers de journalisation, mais ne les ouvre pas et ne vrifie pas non plus leur prsence si un
fichier nest pas trouv, aucun message derreur nest affich. ce stade, une base de donnes est associe
linstance(V$DATABASEestmaintenantinterrogeable)maisnestpasouvertepouruneutilisation"normale" :personne
nepeutseconnecterlabasededonnes,lexceptiondunutilisateurayantleprivilgeSYSDBAouSYSOPER.Lesvues
statiques du dictionnaire ne sont notamment pas accessibles. Dans cet tat, le DBA peut effectuer certaines tches
dadministration : renommer ou dplacer un fichier de donnes ou un fichier de journalisation, activer ou dsactiver
larchivagedesfichiersdejournalisation,effectuerunercuprationdelabasededonnes.
Lorsdelouverturedelabasededonnes,linstanceouvrelesfichiersdejournalisationetlesfichiersdedonnesqui
taientenligneaumomentdelarrt,etvrifielacohrencedelabasededonnes.Silundesfichiersdedonnes
ouvrirnestpastrouvouestendommag,linstancesignaleuneerreuretlabasededonnesnestpasouverte.Sila
base de donnes peut tre ouverte mais que le dernier arrt ntait pas un arrt propre, SMON effectue la
rcupration de linstance. ce stade, la base de donnes est accessible pour une utilisation "normale" : les
utilisateurspeuventseconnecter.Ledictionnairededonnesesttotalementdisponible.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Dmarrage
1.UtiliserSQL*Plus
a.LacommandeSTARTUP
DansSQL*Plus,lacommandeSTARTUPpermetdedmarreruneinstanceetdeluiassocierunebaseavecleniveau
dedisponibilitsouhait.
Syntaxesimplifie
STARTUP [NOMOUNT | MOUNT [nom_base] | OPEN [nom_base]]
[RESTRICT] [PFILE=nom_fichier]
Avec
NOMOUNT | MOUNT | OPEN
niveaudedisponibilitsouhait.
nom_base
nomdelabasemonterououvrir.
RESTRICT
restreintlaccslabaseauxutilisateursayantleprivilgeRESTRICTED SESSION.
PFILE
nomdufichierdeparamtresutiliser.
LoptionRESTRICT
Unebasededonnespeuttreouverte(OPEN)dansunmoderestreint(option RESTRICT)oseulslesutilisateurs
ayant le privilge particulier RESTRICTED SESSION (voir la section Gestion des droits dans le chapitre Gestion des
utilisateursetdeleursdroits)peuventeffectivementseconnecter gnralement,ceprivilgenestdonnquaux
administrateurs.
Cemoderestreintpeuttreutilispoureffectuercertainesoprationsdadministrationquincessitentquelabase
soitouvertemaisquilestprfrable(pasobligatoire)deralisersansutilisateurconnect.Exemples:

rorganiserlestockagedunetable,reconstruiredesindex

faireunexportouunimport

faireunchargementdedonnesavecSQL*Loader.

Ne pas avoir dutilisateurs connects pendant ces oprations permet dviter des mises jour concurrentes
intempestivesetderaliserloprationplusrapidement.
Lorsqueloprationesttermine,ilestpossibledequitterlemoderestreintaveclordreSQL :
ALTER SYSTEM DISABLE RESTRICTED SESSION;
FichierdeparamtresetclausePFILE
Les noms par dfaut du fichier de paramtres texte et du fichier de paramtres serveur dune instance sont
respectivementinit<SID>.oraetspfile<SID>.ora.
Lemplacementpardfautdecesdeuxfichiersdpenddelaplateforme :

ENI Editions - All rights reserved - Algeria Educ

- 1-

%ORACLE_HOME%\database(Windows)

$ORACLE_HOME/dbs(Unix/Linux).

Encequiconcernelefichierdeparamtrestexte,lenometlemplacementrecommandsparlestandardOFAsont
diffrents : init.oradanslesousrpertoire pfiledu rpertoire dadministration. Pour concilier lemplacementpar
dfautetlestandardOFA,ilestpossibledecrerunfichierinit<SID>.oradanslerpertoirepardfautdelaplate
forme et dy mettre une simple inclusion vers le "vrai" fichier de paramtres, grce au paramtreIFILE. Exemple
(Windows) :
IFILE=D:\app\oracle\admin\ORCL\pfile\init.ora<$I[]IFILE>
Silaplateformelepermet,ilestaussipossibledutiliserunliensymbolique.
SansclausePFILEdanslacommandeSTARTUP,Oraclerecherche,lemplacementpardfautdelaplateforme,dans
lordre,unfichier :

spfile<SID>.ora

spfile.ora

init<SID>.ora

Lefichierspfile.ora(sansnomdinstance)estprincipalementutilisdanslecasduneconfigurationReal
ApplicationCluster.
Enpriorit,linstancerecherchedoncpardfautunfichierdeparamtresserveur.SpcifierlaclausePFILEpermet
de dmarrer explicitement avec un fichier de paramtres texte, qui peut ventuellement ne pas respecter le nom
et/oulemplacementpardfaut.
Pourdmarreravecunfichierdeparamtresserveursituunautreemplacementouayantunautrenom,ilfaut
dmarrer avec un fichier de paramtres texte contenant un paramtre SPFILE(pas IFILE) indiquant le chemin
daccscompletaufichierdeparamtresserveur.Exemple(Windows) :
SPFILE=D:\app\oracle\admin\ORCL\pfile\sp.ora
LavaleurduparamtreSPFILE peut tre consulte aprs dmarrage de linstance,danslavueV$PARAMETER ou
laidedelacommandeSQL*PlusSHOW PARAMETER.Siceparamtrenapastspcifiexplicitement,ilestaffecten
interneparleserveur.Silestvide,cestquelinstanceadmarravecunfichierdeparamtrestexte.
Ilestrecommanddutiliserunfichierdeparamtresserveur.Pourvoussimplifierlavie,respectezlenom
etlemplacementpardfaut.

b.Modeopratoire
Lancez SQL*PLUS et connectezvous avec le privilge AS SYSDBA, en vous assurant que linstance souhaite est
correctementdsigne.
Exemple :

Connexionlocaleaprsavoirpositionnlavariabledenvironnement :ORACLE_SID

PlateformeWindows :
C:\>set ORACLE_SID=ORCL
C:\>sqlplus /nolog
SQL> CONNECT / AS SYSDBA

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

PlateformeLinux :
$ .oraenv<$I[]oraenv> <<< ORCL
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA

Connexion travers le rseau en spcifiant un <nom de service rseau grce la commande SET
INSTANCE :
> sqlplus /nolog
SQL> SET INSTANCE orcl
SQL> CONNECT / AS SYSDBA

Connexiontraverslerseauenspcifiantunnomdeservicerseaudanslachanedeconnexion :
> sqlplus /nolog
SQL> CONNECT /@orcl AS SYSDBA

TapezlacommandeSTARTUPaveclesoptionssouhaites :

Dmarreruneinstancesansassocierdebasededonnes(sansdouteenvuedencrerunenouvelle) :
SQL> STARTUP NOMOUNT

Dmarrer une instance et simplement monter la base de donnes (pour effectuer certaines tches
dadministration) :
SQL> STARTUP MOUNT

Dmarreruneinstanceetouvrirlabasededonnespourlarendreaccessibletouslesutilisateurs :
SQL> STARTUP

Exemplededmarrageaveclefichierdeparamtresserveurpardfaut :
SQL> STARTUP
Instance ORACLE lance.
Total System Global Area 313860096 bytes
Fixed Size
1332892 bytes
Variable Size
230689124 bytes
Database Buffers
75497472 bytes
Redo Buffers
6340608 bytes
Base de donnes monte.
Base de donnes ouverte.
SQL> SELECT value FROM v$parameter WHERE name = spfile;
VALUE
---------------------------------------------------------D:\APP\ORACLE\PRODUCT\11.1.0\DB_1\DATABASE\SPFILEORCL.ORA

c.Modifierleniveaudedisponibilitdelabasededonnes
Silinstanceatdmarreavecuntatintermdiairepourlabasededonnes(NOMOUNTouMOUNT),ilestpossible
delafairepasserltatsuivantgrcelordreSQLALTER DATABASE.

DeNOMOUNTMOUNT

ENI Editions - All rights reserved - Algeria Educ

- 3-

ALTER DATABASE [nom_base] MOUNT;

DeMOUNTOPEN

ALTER DATABASE [nom_base] OPEN;


PourpasserdeltatNOMOUNTltatOPEN,ilfautpasserparltatMOUNT.
Il existe aussi des ordres SQL ALTER DATABASE CLOSEet ALTER DATABASE DISMOUNT qui permettent de fermer puis
dmonter la base de donnes. Par contre, ces ordres ne peuvent pas tre utiliss pour fermer une base de
donnespuislarouvrirsanspasserparunarrtcomplet.

d.Rcuprerdesinformationssurlinstanceetsurlabasededonnes
Plusieurs vues du dictionnaire de donnes permettent de rcuprer des informations sur linstance et la base de
donnesaucoursdudmarrage.

DsltatNOMOUNT :

V$INSTANCE :informationssurlinstance

V$PARAMETER :listedesparamtresactifs

V$SGA :informationssurlaSGA

V$VERSION :versiondesdiffrentscomposantsdOracle

V$OPTION :listedesoptionsOracle.

partirdeltatMOUNT :

V$DATABASE :informationsurlabasededonnes.

DansltatOPEN :

PRODUCT_COMPONENT_VERSION :versiondesdiffrentscomposantsdOracle.

DanslavueV$INSTANCE,lacolonneSTATUSpeutprendrelesvaleurssuivantes :
STARTED
instancedmarre,sansbase(NOMOUNT)
MOUNTED
instancedmarre,basemonte(MOUNT)
OPEN
instancedmarre,baseouverte(OPEN)
LacolonneLOGINSindiquesilesconnexionssontautorises(valeurALLOWED)ourestreintes(RESTRICTED).
DanslavueV$DATABASE,lacolonneOPEN_MODEpeutprendrelesvaleurssuivantes :
MOUNTED
basemonte(MOUNT)
READ WRITE

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

baseouverte(OPEN)enlecture/criture(pardfaut)
READ ONLY
baseouverte(OPEN)enlectureseule
Le mode douverture de la base de donnes peut tre spcifi dans lordre SQL ALTER DATABASE, ou dans la
commandeSTARTUP.

2.UtiliserleDatabaseControl
LorsquevousvousconnectezauDatabaseControletquelabasededonnesnestpasouverte,lapagesuivante
saffiche :

Cettepagevouspermetsoitdedmarrerlabasededonnes,soitdeffectuerunercupration.
Silabaseestarrtemaisquellenestpasendommage,vouspouvezcliquersurleboutonDmarrer unepage
didentificationsaffiche :

ENI Editions - All rights reserved - Algeria Educ

- 5-


Sur cette page, saisissez une identification pour lhte et une identification SYSDBAou SYSOPERpour la base de
donnes,puiscliquezsurleboutonOK.
Silinstanceestarrte,lapagedeconfirmationdedmarragesaffiche :

Si linstance est dmarre, base non monte (NOMOUNT) ou base monte (MOUNT), une page de choix doprations
saffiche.
Cette page vous permet de prciser lopration que vous souhaitez faire : arrter la base de donnes, monter la
basededonnes,ouvrirlabasededonnes.SlectionnezloptionsouhaiteetcliquezsurleboutonContinuer la
page de confirmation de dmarrage saffiche avec des informations de statut et dopration adapts. Exemple
(demandedouverturepourunebasededonnesmonte) :

Surlapagedeconfirmationdedmarrage,vouspouvezcliquersurleboutonOptionsavancespourslectionnerles
optionsdedmarrage(NOMOUNT,MOUNT,OPEN,RESTRICT,PFILE,etc.) lesoptionsproposesdpendentducontexte.
Lasquencederecherchedunfichierdeparamtresestlammequepourledmarrageaveclacommande
STARTUPdansSQL*Plus.

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Pour lancer lopration, cliquez sur le bouton Oui. Pendant que lopration se droule, une page dinformations
dactivitestaffiche.
Unefoisqueloprationesttermine,lapagequisaffichedpendducontexte.

Silabasededonnesnestpasouverte(nonmonteoumonte),lapagedinformationssurlestatutestde
nouveauaffiche.
Silabasededonnesestouverte,lapagedeconnexionsaffiche.

VouspouvezalorsvousreconnecterauDatabaseControl.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Arrt
1.UtiliserSQL*Plus
a.LacommandeSHUTDOWN
DansSQL*Plus,lacommandeSHUTDOWNpermetdefermerlabaseetdarrterlinstance.
Syntaxe
SHUTDOWN [NORMAL | IMMEDIATE | TRANSACTIONAL | ABORT]
Options :
NORMAL
Oracle attend que tous les utilisateurs soient dconnects (pas de nouvelle connexion autorise) puis ferme
proprementlabasededonnes.
IMMEDIATE
Oracle dconnecte tous les utilisateurs (en effectuant un ROLLBACK des ventuelles transactions en cours) puis
fermeproprementlabasededonnes.
TRANSACTIONAL
Oracle attend que toutes les transactions en cours se terminent avant de dconnecter les utilisateurs (pas de
nouvelletransactionautorise)puisfermeproprementlabasededonnes.
ABORT
Oracle dconnecte tous les utilisateurs (sans effectuer de ROLLBACK des ventuelles transactions en cours) puis
ferme"brutalement"labasededonnes,sanseffectuerdepointdesynchronisation(checkpoint).Unercupration
delinstanceserancessairelorsduprochaindmarrage.
Leprocessusdelarrtestlesuivant:

Labasededonnesestferme.

Labasededonnesestdmonte.

Linstanceestarrte(lesprocessusdarrireplansontarrtsetlaSGAestlibre).

Un arrt est forcment complet il nest pas possible de sarrter dans un tat intermdiaire (MOUNT ouNOMOUNT).
Pourpasserunebaseouverte(OPEN)entatmont(MOUNT),ilfautarrterlabase(SHUTDOWN)etlaredmarrerdans
ltatsouhait(STARTUP MOUNTparexemple).
Lesarrts NORMAL,IMMEDIATE etTRANSACTIONALsontpropresunpointdesynchronisation(checkpoint) est ralis
surlesfichiersdedonnes.Leredmarrageultrieurnencessiterapasdercuprationdelinstance.Cenestpas
le cas de larrt ABORT pour lequel le point de synchronisation nest pas ralis les fichiers de donnes sont
immdiatement ferms. Ce comportement est similaire un arrt anormal de linstance. Lors du prochain
redmarrage,unercuprationdelinstance(automatique)serancessaire(voirlesprincipesdanslechapitreLes
basesdelarchitectureOracle).
LarrtNORMALestsouventproblmatiquecarilattendladconnexiondesutilisateurs,mmesiceuxcisontinactifs.
Danscecas,larrtIMMEDIATEpeuttreutilispourdconnecterlesutilisateurs lestransactionsventuellement
en cours sont annules. Loprationdannulation des transactions peut prendre un peu de temps et larrt nest
pasaussiimmdiat.
LarrtTRANSACTIONALestunpeumoins"violent"quelarrtIMMEDIATEpuisquilattendquelestransactionsencours
se terminent avant darrter la base. Par contre, il faut avoir conscience que cet arrt peut tre bloqu par une
transactionquineterminepas(latransactionestellemmebloqueouunutilisateurestpartienlaissantunordre

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

INSERT/ UPDATE/DELETEensuspens).
Larrt ABORT est le plus rapide (lui est immdiat !) mais ne doit tre utilis quen dernier recours : blocage dun
autretypedarrt,besoinreldarrterlabaseimmdiatement.
Dans un script darrt automatique destin, par exemple, faire une sauvegarde, utilisez un
SHUTDOWN IMMEDIATEpourtrecertainquelabasededonnesseraeffectivementarrte.

b.Modeopratoire
Lancez SQL*PLUS et connectezvous AS SYSDBA, en vous assurant que linstance souhaite est correctement
dsigne.
Exemple :
> sqlplus /nolog
SQL> SET INSTANCE orcl
SQL> CONNECT / AS SYSDBA
Vrifiezventuellementsilyadesutilisateursconnectsetdestransactionsencours :
Exemple :
SQL> SELECT sid,serial#,username,DECODE(taddr,NULL,,Oui) trans
2 FROM v$session
3 /
TapezlacommandeSHUTDOWNaveclesoptionssouhaites :

Arrtsansutilisateurconnect :
SQL> SHUTDOWN

Arrtavecdesutilisateursconnectsenlaissantlestransactionsseterminer :
SQL> SHUTDOWN TRANSACTIONAL

Lavue V$SESSIONpermetdevisualiserlesutilisateursconnects cettevueseraprsenteplusendtaildansla


sectionSuperviserlesutilisateursconnectsduchapitreGestiondesutilisateursetdeleursdroits.Lestechniques
utilisables pour dconnecter les utilisateurs seront aussi prsentes dans la section Superviser les utilisateurs
connectsduchapitreGestiondesutilisateursetdeleursdroits.
DansV$SESSION,ilfautvrifiersilexistedautressessionsquelessessionscorrespondantauxprocessusdarrire
plan (colonneusername vide) et que la sessionSYS (session utilise pour larrt). La requte prsente cidessus
permetaussidesavoirsilesutilisateursconnectsontunetransactionencours(colonnetransgaleOui).
Dans la pratique, si le Database Control est lanc (service OMS et agent), vous aurez une ou plusieurs
sessions SYSMANet DBSNMP. Pour arrter la base de donnes, vous devrez donc, soit arrter le Database
Control(emctl stop dbconsole),soitutiliserlacommandeSHUTDOWN IMMEDIATE.

2.UtiliserleDatabaseControl
SurlapagedaccueilduDatabaseControl,lecadreGnraldonnelestatutactueletproposeunboutonArrterqui
permetdarrterlabasededonnes :

- 2-

ENI Editions - All rights reserved - Algeria Educ

SivouscliquezsurleboutonArrter,lapagedidentificationsaffiche :

Sur cette page, saisissez une identification pour lhte et une identification SYSDBA ou SYSOPER pour la base de
donnes,puiscliquezsurleboutonOK.
Leschampsdecettepagesontremplispardfautsivousavezdfinidesinformationsdidentificationdans
vos prfrences (cf. section Oracle Enterprise Manager Database Control du chapitre Les outils
dadministration).NotezparailleursquecestlidentificationSYSDBAindiquesurcettepagequiserautilisepour
effectuerlarrtetnonvotreconnexionactuelleauDatabaseControl(quipeuttreuneconnexionnormaleetpas
SYSDBA).
Lapagedeconfirmationdarrtestensuiteaffiche :

Surcettepagedeconfirmationdedmarrage,vouspouvezcliquersurleboutonOptionsavancespourslectionner
lesoptionsdelarrt(NORMAL,IMMEDIATE,etc.) unlienestaussipropospourvisualiserlessessions.
Cliquez sur le bouton Oui pour procder larrt. Pendant que lopration se droule, une page dinformations
dactivitestaffiche :

Auboutdequelquesinstants,cliquezsurleboutonRgnrerpourrevenirauDatabaseControl.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Silarrtnestpasencoretermin,lapagedaccueilhabituellesaffiche.Attendezencorequelquesinstantsavantde
rafrachirlapage.
Pouruneraisoninconnue,ilarrivefrquemmentquunepagederreursoitaffichecestade :

CliquezsurleboutonOKpourrevenirlapageprcdenteetattendezquelquesinstantspourcliquerdenouveau
surleboutonRgnrer.Sileproblmepersiste,quittezleDatabaseControlpuisouvrezlenouveau.
Attendezencorequelquesinstantsavantderafrachirlapage.Lorsquelarrtesttermin,lapagedinformationssur
lestatutdoitsafficher :

- 4-

ENI Editions - All rights reserved - Algeria Educ

Automatisationetscripts
1.SurplateformeUnixouLinux
a.Automatisation
SurplateformeUnixouLinux,desbasesdedonnespeuventtredmarresouarrtesautomatiquementgrce
au script de dmarrage prsent dans la section Installation du serveur du chapitre Linstallation. Ce script de
dmarrageappellelesscriptsdbstartetdbshutfournisparOracle.
Extraitsduscript :
# Dmarrer les bases de donnes
echo "** dmarrage des bases de donnes" >> $LOG
$ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTENER > $LOG 2>&1 &
...
# Arrter les bases de donnes
echo "** arrt des bases de donnes" >> $LOG
$ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTENER > $LOG 2>&1 &
Lesscripts dbstartet dbshututilisentlefichier /etc/oratabpourdterminerquellessontlesbasesdedonnes
dmarrerouarrterautomatiquement.Cefichiercontientuneouplusieurslignesdelaformesuivante :
<ORACLE_SID>:<ORACLE_HOME>:{Y|N}
Exemple :
ORCL:/u01/app/oracle/product/11.1.0/db_1:Y
Lemplacement du fichier oratab peut varier selon le systme dexploitation. Consultez la documentation
InstallationGuidedevotreplateforme.
Pourdmarrerouarrterautomatiquementunebasededonnes,ilsuffitdemettreunYdansledernierchampde
lalignecorrespondantlabasededonnes.
LescriptdbstartlanceSQL*PlusetutiliselacommandeSTARTUPsansclausePFILE lasquencederecherchedu
fichierdeparamtresestdonclammequepourundmarragemanuelaveclacommandeSTARTUPdansSQL*Plus.
Si vous avez plusieurs versions dOracle sur votre serveur, utilisez les scripts dbstart et dbshut de la
versionlaplusrcente(ajustezlavariabledenvironnement$ORACLE_HOMEenconsquence).

b.Scripts
Lesscriptsdbstartetdbshutpeuventtreappelsmanuellementpourdmarrerouarrterlesbasesdedonnes
configuresYdansoratab.
Desscriptsshellpersonnalisssimilairesdbstartetdbshutpeuventtretrsfacilementcrits.
Exemple (scriptrestart) :
ORACLE_SID=$1
ORAENV_ASK=NO
. oraenv
export ORACLE_SID ORAENV_ASK
sqlplus /nolog << _EOF_
CONNECT / AS SYSDBA
SHUTDOWN IMMEDIATE
STARTUP
EXIT
_EOF_

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Appel :
$ . restart ORCL
Ce script permet de redmarrer une base de donnes dont lidentifiant dinstance est pass en paramtre. Il
appelle le script oraenv pour modifier lenvironnement puis SQL*Plus pour faire un SHUTDOWN et un STARTUP. La
connexion SYSDBA seffectue avec une authentification par le systme dexploitation. ORAENV_ASK=NO permet de ne
pasavoirdequestionposeparoraenv.

2.SurplateformeWindows
a.Automatisation
Pourdmarrerautomatiquementunebaseaudmarragedusystme,ilfautmettreleserviceassocilinstance
(OracleService<SID>)endmarrageautomatique.
En complment, il peut tre ncessaire (en cas de problme notamment) de sassurer que le paramtre
ORA_<SID>_AUTOSTARTest bien TRUEdanslabasederegistre.Sileserviceatcrendmarrageautomatique
(chapitreCrationdunenouvellebasededonnes),celadoittrelecas.
Pour arrter automatiquement une base lors de larrt du systme, il faut sassurer que le paramtre
ORA_<SID>_SHUTDOWNest bien TRUE dans la base de registre et ajuster ventuellement la valeur du
paramtreORA_<SID>_SHUTDOWN_TIMEOUT.Normalement,celadoittrelecas.
Dans la base de registre, les paramtres indiqus
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_nom_oracle_home.

cidessus

se

trouvent

dans

la

cl

Lesparamtresdelabasederegistreontlasignificationsuivante :
ORA_<SID>_AUTOSTART
Indiquesilinstanceidentifiepar<SID>doittredmarre(valeurTRUE)ounon(valeurFALSE)aprsledmarrage
duservice.
ORA_<SID>_SHUTDOWN
Indique si linstance identifie par <SID> doit tre arrte (valeur TRUE) ou non (valeur FALSE) lors de larrt du
service.
ORA_<SID>_SHUTDOWNTYPE
Type darrt effectu sur linstance identifie par <SID> : abort, immediate (valeur par dfaut), transactional et
normal.
ORA_<SID>_SHUTDOWN_TIMEOUT
Dlai (en secondes) accord linstance identifie par <SID> pour sarrter avant larrt du service (qui est alors
quivalentunSHUTDOWN ABORT).
Si votre base met plus de 90 secondes sarrter, augmentez la valeur du paramtre
ORA_<SID>_SHUTDOWN_TIMEOUTpourviterdavoirdesarrtsdetypeABORT.
Dans la base de registre, il est possible de dfinir un paramtre ORA_<SID>_PFILE qui donne le chemin daccs
completverslefichierdeparamtrestexteutiliserpourledmarragedelinstanceidentifiepar<SID>.
Siceparamtreestvide,ounexistepas,lasquencederecherchedufichierdeparamtresseffectuecommelors
dun STARTUP sans clause PFILE dans SQL*Plus. Si le paramtre est renseign, le dmarrage seffectue avec le
fichier de paramtres texte indiqu. Si ce paramtre contient une valeur errone, linstance ne dmarre pas au
redmarrageduserviceassoci.Pourdmarreravecunfichierdeparamtresserveurnonstandard,vouspouvez
utiliserlatechniquedufichierdeparamtrestextecontenantunparamtreSPFILE.

b.Scripts
Plusieurstechniquessontpossiblespourcriredesscriptsdedmarrageoudarrt :

- 2-

enutilisantlacommandesystmenetpourdmarrer(net start)ouarrterleservice(net stop)

ENI Editions - All rights reserved - Algeria Educ

enutilisantlutilitaireoradimfourniparOracle
enutilisantunfichierdecommandes(.bat)quilanceSQL*PlusavecunscriptSQLsurlalignedecommande
quidmarreouarrtelabase.

Syntaxesimplifiedelutilitaireoradim :

Pourledmarrage :

ORADIM -STARTUP -SID sid

Pourlarrt:

ORADIM -SHUTDOWN -SID sid [-SHUTTYPE type] [-SHUTMODE mode]


Avec:
sid
Identifiantdelinstance.
type
Indiquecequidoittrearrt.Valeurspossibles :srvc(service)ou inst(instance,pardfaut)ousrvc,inst(les
deux).
mode
Modedelarrt.Valeurspossibles :i(IMMEDIATE,valeurpardfaut),n(NORMAL)oua(ABORT).
Exemple(fichierdecommanderestart.bat) :
set ORACLE_SID=%1%
oradim -shutdown -sid %ORACLE_SID%
oradim -startup -sid %ORACLE_SID%
Appel :
C:\>restart ORCL
Cescriptpermetderedmarrerunebasededonnesdontlidentifiantdinstanceestpassenparamtre.
Le service du Database Control (OracleDBConsole<SID>) est dpendant du service de linstance pour
arrter le service de linstance, il faut au pralable arrter le service du Database Control. Inversement,
dmarrerleserviceduDatabaseControldmarreleservicedelinstance.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Problmescourantsetsolutions
ORA-01033: ORACLE initialization or shutdown in progress
Explication
Labasededonnesnestpasouverte.
Cause(s)
Vous tentez de vous connecter une base de donnes non ouverte sans utiliser de connexion SYSDBA. La base de
donnes est peut tre effectivement en train de dmarrer ou de sarrter la base de donnes est peuttreaussi
toutsimplementnonmonteoumonte.
Action(s)
ConnectezvousAS SYSDBAetinterrogezlacolonneSTATUSdeV$INSTANCE.
ORA-01034: ORACLE not available
Explication
Linstanceestarrte.
Cause(s)
VoustentezdevousconnecteruneinstanceOraclearrtesansutiliserdeconnexionSYSDBA.
Action(s)
ConnectezvousAS SYSDBAetdmarrezlinstance.
ORA-01081: impossible de lancer ORACLE dj en cours - fermer dabord le thread
Explication
Voustentezdedmarreruneinstancedjdmarre.
Cause(s)
Vousntespasconnectlabonneinstance.VoustentezdepasserduntatNOMOUNTouMOUNTOPENenfaisantun
STARTUP.
Action(s)
Interrogez V$INSTANCE pour vrifier quelle instance vous tes connect. Si vous ntes pas sur la bonne instance,
reconnectezvous(aprsavoirmodifiORACLE_SIDouenutilisantlebonnomdeservicerseau).Pourpasserunebase
dedonnesdeltatNOMOUNTouMOUNTOPEN,utilisezlacommandeALTER DATABASE.
ORA-01109: base de donnes non ouverte
ORA-01219: BdD fermee : demandes seulement autorises sur des tables/vues fixes
Explication
Labasededonnesnestpasouvertemaissimplementmonte(MOUNT).
Cause(s)
Vous tentez de faire une action (ORA-01109) ou de lire une vue statique du dictionnaire de donnes (ORA-01219) qui
ncessitequelabasesoitouverte.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Action(s)
InterrogezlacolonneSTATUSdeV$INSTANCEetsicestlecas(valeurMOUNTEDaulieudeOPEN),ouvrezdabordlabase
dedonnes.
ORA-01507: base de donnes non monte
Explication
Labasededonnesnestpasmonte(NOMOUNT) seulelinstanceestdmarre.
Cause(s)
Vous tentez de faire une action qui ncessite que la base de donnes soit monte, par exemple : interrogation de
V$DATABASE,ordreSQLALTER DATABASE OPEN,etc.
Action(s)
Interrogez la colonne STATUSde V$INSTANCEetsicest le cas (valeurSTARTED au lieu deMOUNTED), montez dabordla
basededonnes(ALTER DATABASE MOUNT).
ORA-12560: TNS : erreur dadaptateur de protocole
Explication
Leprocessusdcoutenapasrussidmarrerunprocessuspourconnecterlutilisateurlinstance.
Cause(s)
La variableORACLE_SID nest pas correctement positionne. Sur plateforme Windows, le service associ linstance
(OracleService<SID>)nestpaslanc.
Action(s)
Vrifiezlavariableet/ouleserviceassoci.
BlocagedunSHUTDOWN
Cause(s)
Surun SHUTDOWN NORMAL,ilyadesutilisateursconnects.SurunSHUTDOWN TRANSACTIONAL,ilyadestransactionsen
cours.SurunSHUTDOWN IMMEDIATE,ilyaunetrsgrossetransactionannuler...ouunautreproblme.
Action(s)
Ouvrezuneautresessiondeloutildadministration,connectezvousAS SYSDBAetexcutezunSHUTDOWN ABORT.Sicela
nemarchepas,ilfaut"tuer"lesprocessus :
RedmarrageduserviceassocilinstancesurplateformeWindows.
killdesprocessussurplateformeUnix.
LorsquunSHUTDOWNestencours,ilnestpluspossibledinterrogerV$SESSIONetdoncdedterminersileproblmeest
lidesutilisateursconnects.
SurunSHUTDOWN IMMEDIATE,soyezpatient !Larrtpeutprendreplusieursdizainesdesecondes.

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Vuedensemble
1.tapesdecrationdunenouvellebasededonnespouruneapplication
Leprocessuscompletdecrationdunenouvellebasededonnespouruneapplicationcomportelesgrandestapes
suivantes :
Conceptiondumodlephysique

Dfinir
tous
les
objets
(Oracle)
de
lapplication : tables,
contraintes
dintgrit
(cls
primaires/uniques/trangres), index, vues, programmes stocks (triggers, procdures/ fonctions stockes,
packages).
tudierlavolumtriedelapplication(nombredutilisateurs,nombredelignesattenduesdanslestables).

Crationdelabaseproprementdite(cechapitre)

Crerunenouvelleinstance.
Crerunenouvellebasededonnes(fichiersdecontrle,fichiersdejournalisationetfichiersdedonnesdes
tablespaces"techniques"dOracle).
Rendreledictionnairededonnesexploitable.
cestade,labasededonnespeuttrevuecommeune"enveloppe"(une"botevide")danslaquelledes
structuresvonttrecrespouruneouplusieursapplications.

Crationdesstructuresdestockageadaptes(chapitresGestiondestablespacesetdesfichiersdedonneset
Gestiondesinformationsdannulation)

Crerlestablespaces(avecleursfichiersdedonnes)destinsstockerlesdonnesdelapplication(tables
etindex).
Lesdimensionnerenfonctiondeltudedevolumtrieraliseinitialement.

Cration du compte Oracle qui va contenir les objets de lapplication (chapitre Gestion des utilisateurs et de
leursdroits)

Crerlecompte.

Luidonnerlesprivilgessuffisantspourcrerlesobjets.

Lautoriserutiliserdelespacedanslestablespacesdelapplication.

CrationdesobjetsdelapplicationdanscecompteOracle(chapitreGestiondestablesetdesindex)

CrerlesobjetsOracledelapplication(gnralementsouslaformedunoudeplusieursscripts).
Dimensionner chaque objet occupant de lespace de stockage (table et index) en fonction de ltude de
volumtrieraliseinitialement.

Crationdesutilisateursfinauxdelapplication(chapitreGestiondesutilisateursetdeleursdroits)

ENI Editions - All rights reserved - Algeria Educ

- 1-

Crerlesutilisateurs.
Leurdonnerdesdroitsadaptssurlesobjetsdelapplication(i.e.surlesobjetscrsprcdemmentdansle
comptepropritairedelapplication).

Sauvegardedelabase(chapitreSauvegardeetrcupration)

Sauvegardederfrencedelabase.

Comme vous pouvez le constater, la cration de la base de donnes proprement dite prsente dans ce chapitre
nestquunepetitetapeduprocessuscomplet(maisunetapefondamentale).

2.tapesdecrationdelabasededonnesproprementdite
Lesgrandestapesdelacrationdelabasededonnesproprementditesontlessuivantes :

Crerlesrpertoiressurlesdisques,sipossibleenrespectantlesrecommandationsdustandardOFA.

Prparerunnouveaufichierdeparamtrestexte,gnralementparcopiedunancien.

PositionnerlavariabledenvironnementORACLE_SID.

Crer le service associ linstance (plateforme Windows) ou crer le fichier de mot de passe pour
lidentificationSYSDBA(plateformeUnixouLinux).

LancerSQL*PlusetseconnecterAS SYSDBA.

Crerunfichierdeparamtresserveur(pasobligatoire,maisconseill).

DmarrerlinstanceentatNOMOUNT.

Crerlabasededonnes(ordreSQLCREATE DATABASE).

Finaliserlacrationdudictionnaire(quelquesscriptsexcuter).

ConfigurerOracleNetpourlanouvellebasededonnes.

Enregistrerlanouvelleinstancedanslefichieroratab(plateformeUnixouLinux).

ConfigurerleDatabaseControl.

LacrationdunenouvellebasededonnessupposelinstallationpralabledOracle(chapitreInstallation).
SileserveurabritedjdesbasesdedonnesOracle,ilestvivementconseilldeffectuerunesauvegarde
decesbasesdedonnesavantdedmarrerleprocessusdecration.
Aprscestapes,lanouvellebasededonnesestouverteetcontient :

- 2-

lestablespacesSYSTEMetSYSAUXavecleur(s)fichier(s)dedonnesassoci(s)

ventuellementuntablespacedannulationetuntablespacetemporaireselonlesoptionsutilises

lesfichiersdecontrleetdejournalisation

lesdeuxcomptesDBAstandard(SYSetSYSTEM)

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

lesegmentdannulationSYSTEM

ledictionnairededonnes.

ce stade, la base de donnes est prte pour accueillir des structures complmentaires qui vont constituer
lapplication.

3.Mthodesdisponibles
LanouvellebasededonnespeuttrecrelamainaveclesoutilsdusystmedexploitationetSQL*Plus dans
cecas,ilesttrssimpledcrireoudercuprerdesscriptsetdelesrutiliserchaquefois.Lestapesdecration
de la base de donnes proprement dite sont toujours les mmes et dpendent (relativement) peu des
caractristiques de lapplication (et en tout tat de cause, des paramtres peuvent tre ajusts ultrieurement en
fonction des caractristiques de lapplication) utiliser des scripts "gnriques" de cration de bases est donc
envisageable.
La nouvelle base de donnes peut aussi tre cre laidedun assistant graphique, lassistant Configurationde
base de donnes. Cet assistant facilite la cration de la base de donnes en offrant la possibilit dutiliser des
modlesdebasededonnesprtslemploiet/ouenpermettantdedfinirtrsprcismentlescaractristiquesde
lanouvellebasededonneslaidedeplusieurscrans.Parailleurs,ilestpossiblededfinirsespropresmodles
de base de donnes, comprenant ou non des fichiers de donnes prts lemploi, puis de les utiliser lors de la
cration ultrieure dune nouvelle base de donnes. Lassistant graphique offre aussi la possibilit de gnrer les
scriptsdecrationdelabasededonnes,sanscrerlabasededonnes cestunbonmoyenpourconstituernos
scripts"gnriques".
Lassistantgraphiqueinclutlestapessuivantesdecrationdesstructuresdestockage(chapitresGestion
desfichiersdecontrleetdejournalisationetGestiondestablespacesetdesfichiersdedonnes).

ENI Editions - All rights reserved - Algeria Educ

- 3-

Crationdelabasededonnesmanuellement
1.Crerlesrpertoiressurlesdisques
PourrespecterlesrecommandationsdustandardOFA(voirlechapitreInstallation),vousdevezcrer :

unrpertoiredadministration,portantlenomdelabasededonnes,situdanslerpertoire%ORACLE_BASE%
\admin(Windows)ou$ORACLE_BASE/admin(Linux/Unix),
unrpertoirededonnes,portantlenomdelabasededonnes,situdansunrpertoireoradataluimme
situdansORACLE_BASEousurunautrevolume.

Depuis la version 11 et lapparition du Rfrentiel de Diagnostic Automatique, le rpertoire dadministration


contientmoinsderpertoiresetdefichiers.
Lerpertoiredadministrationcontientgnralementlesrpertoiressuivants :
adump
Rpertoirepourdesfichiersdaudit.
createouscripts
Rpertoiredesscriptsdecrationdelabasededonnes.
expoudpdump
Rpertoirepourlesfichiersdexport.
pfile
Rpertoirepourlesfichiersdeparamtrestexte.
Sileserveurcomporteplusieursdisques,ilserajudicieuxderpartirlesdiffrentsfichiersdelabasededonnessur
ces disques afin doptimiser les entres/sorties et dviter les contentions dans ce cas, il faut crer dautres
rpertoiresdedonnessurlesdisquesconcerns.
Un rpertoire supplmentaire peut tre cr pour la zone de rcupration rapide (voir le chapitre Sauvegarde et
rcupration).

Gnralement,labasededonnesetlinstanceportentlemmenom.

2.Prparerunnouveaufichierdeparamtrestexte
a.Principes
CommeindiqudanslasectionLabasededonnesduchapitreLesbasesdelarchitectureOracle,ilestconseill
dutiliserunfichierdeparamtresserveur,celuicitantinitialementcrpartirdunfichierdeparamtrestexte.
PourrespecterlestandardOFA,cefichierdeparamtrestextedoitsappelerinit.oraetsetrouverdanslesous
rpertoirepfiledurpertoiredadministration.Gnralement,cefichierdeparamtrestexteestcrparduplication
dunfichierexistantoudunfichiermodlequevousaurezdfini.
Nousnecreronspasdefichierinit<SID>.ora(avecuneinclusiondufichierinit.ora)lemplacementpardfautde
laplateforme(dbssousUnix/Linux,databasesousWindows) ainsi,nousnerisquonspasdedmarrerparmgarde
avecunfichierdeparamtrestexte.
Ilyaplusde250paramtresdocumentsparOracle !Ilnestvidemmentpasquestiondelesspcifiertous !Surla
totalitdesparamtres,unetrentainedeparamtresquilconvientdeconnatre,sontsuffisantspourlaplupartdes

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

basesdedonnes.
Certainsparamtresserontdcritsbrivementdanscettepartiepuisprsentsdemanireplusdtailledansdes
chapitresultrieurs.

b.Lesprincipauxparamtres
Lesparamtresnesontpaslistsdansunordrealphabtiquemaisdansunordrethmatique.
Reportezvous la section Complments sur les paramtres relatifs la mmoire pour avoir plus
dinformationscesujet.

DB_NAME
Nomdelabase(jusqu8caractres).GnralementDB_NAMEestgalaunomdelinstance(ORACLE_SID).
Exemple :
DB_NAME = hermes
DB_DOMAIN
Localisationlogiquedelabasesurlerseau(jusqu128caractres).Ceparamtre,associauparamtreDB_NAME,
permet Oracle de construire le nom global de la base de donnes<, sous la forme DB_NAME.DB_DOMAIN. Ce
paramtre est important si la base de donnes appartient un systme distribu (ou est susceptible de
ltre) sinon,ilpeuttreignor.
Exemple :
DB_DOMAIN = olivier-heurtel.fr
DB_UNIQUE_NAME
Nomuniquedebasededonnes(jusqu30caractres).DesbasesdedonnesayantlemmeDB_NAMEauseindu
mme DB_DOMAIN (par exemple une base de production et une base de test) doivent avoir un DB_UNIQUE_NAME
diffrent.Ceparamtreestapparuenversion10.Ilest,pardfaut,galDB_NAME.
Ceparamtredoittrespcifisivoussouhaitezouvrirsimultanmentsurunserveurdeuxbasesportantlemme
nom(lemmeDB_NAME) ilpermetdelesdiffrencier.
Exemple :
DB_UNIQUE_NAME = hermes_demo
COMPATIBLE
Indique un numro de version dOracle avec laquelle la base de donnes doit tre compatible. Valeurs possibles :
10.0.0jusquaunumrodelaversionactuelle(11.1.0.6).Valeurpardfaut :11.0.0.
CeparamtrepermetdutiliserunenouvelleversiondOracleenrestantcompatibleavecuneversionplusancienne,
etdoncsansavoirbesoindetesterlesnouvellesfonctionnalitssurlabasededonnes.Certainesfonctionnalits
delanouvelleversionpeuventtrerestreintes.Lavaleurduparamtrepeuttreaugmenteultrieurement,maisil
estensuitegnralementimpossiblederedescendre(ilfautrepartirdunesauvegardeantrieureauchangement).
Exemple :
COMPATIBLE = 11.1.0.
CONTROL_FILES
Emplacementdesfichiersdecontrledelabasededonnes.Ilestconseilldenspcifierauminimum2,sipossible
surdesdisquesdiffrents(danslidal,3ou4surdesdisquesdiffrents).LarecommandationOFApourlenommage
dufichierestcontrolN.ctl,N tantunnumrodordre(1,2,etc.ou01,02,etc.).
Silefichierdeparamtresatcrparduplicationdunfichierexistantutilis,noubliezpasdemodifierce
paramtre. En cas doubli, vous risquez dcraser les fichiers de contrle prsents dans cette directive et
doncdeprovoquerunarrtbrutaldelabasededonnesquilesutilise.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Exemple :
CONTROL_FILES = ("f:\oracle\oradata\HERMES\control01.ctl",
"g:\oracle\oradata\HERMES\control02.ctl")
DB_BLOCK_SIZE
Taille de bloc "standard" en octets, utilise par dfaut pour les fichiers de donnes des tablespaces et pour
lorganisationducachededonnes(buffercache).Lavaleurdoittrecompriseentre2Koet32Ko(saufrestriction
spcifiquelaplateforme)ettreunmultipledelatailledeblocdusystmedexploitation.Ceparamtrenepeut
pastremodifiultrieurementsansrecrerlabasededonnes.Valeurpardfaut=8192(8Ko).
La taille de bloc peut avoir un impact plus ou moins important sur les performances. Lexpos des avantages et
inconvnients respectifs des "petits" blocs et des "grands" blocs sort du cadre de cet ouvrage. En rsum, les
recommandationsdOraclesontlessuivantes :

Pourunsystmeplutttransactionnel(gnralementcaractrispardespetitesrequtesdelectureetde
misesjour),utilisezdes"petits"blocs(4Koou8Ko).
Pourunsystmepluttdcisionnel(gnralementcaractrispardesgrossesrequtesdelecture),utilisez
des"gros"blocs(16Koou32Ko).
Pourlessystmesmixtes,oudansledoute,utilisezunetailledeblocde8ko(valeurpardfaut).

Exemple :
DB_BLOCK_SIZE = 8192
MEMORY_MAX_TARGET
Taille maximum de la mmoire utilisable par linstance. Peut tre spcifie en octets, en Ko (symbole K), en Mo
(symbole M) ou en Go (symbole G). Si ce paramtre nest pas spcifi, il est gal la valeur du paramtre
MEMORY_TARGET.
Noubliezpasquelesmodificationsdynamiquesdelammoireseffectuentdanslalimitedelavaleurduparamtre
MEMORY_MAX_TARGET,quiluinestpasdynamique(cf.ChapitreLesbasesdelarchitectureOracl,sectionLinstance).
Exemple
MEMORY_MAX_TARGET = 2G
MEMORY_TARGET
Tailledelammoireallouelinstance.Peuttrespcifienoctets,enKo(symboleK),enMo(symboleM)ouenGo
(symbole G). Valeur par dfaut : 0. Valeur minimale : 148 Mo. La valeur peut tre arrondie par Oracle au granule
suprieur.Ceparamtreestapparuenversion11.
Si ce paramtre a une valeur diffrente de zro, la gestion automatique de la mmoire (Automatic Memory
ManagementAMM)estactive.Danscecas,OracledimensionneautomatiquementlaSGAetlaPGAenfonctionde
leurs besoins respectifs et de la charge du systme (cf. section Linstance du chapitre Les bases de larchitecture
Oracle).
Exemple
MEMORY_TARGET = 2G
SGA_MAX_SIZE
TaillemaximaledelaSGA.Peuttrespcifieenoctets,enKo(symboleK),enMo(symboleM)ouenGo(symboleG).
Si ce paramtre nest pas spcifi, Oracle lui donne la valeur du paramtreMEMORY_MAX_TARGET sil est dfini ou la
tailledelaSGAaudmarragedelinstance.
Noubliez pas que les modifications dynamiques de la SGA seffectuent dans la limite de la valeur du paramtre
SGA_MAX_SIZE,quiluinestpasdynamique(cf.sectionLinstanceduchapitreLesbasesdelarchitectureOracle).
Exemple :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

SGA_MAX_SIZE = 1G
SGA_TARGET
TaillesouhaitepourlaSGA.Peuttrespcifienoctets,enKo(symboleK),enMo(symboleM)ouenGo(symbole
G).Valeurpardfaut :0.Valeurminimale :64Mo,annoncedansladocumentationmaisplutt80Mosuruneplate
forme32bitset88Mosuruneplateforme64bits.LavaleurpeuttrearrondieparOracleaugranulesuprieur.Ce
paramtreestapparuenversion10.
Si la gestion automatique de la mmoire est active (MEMORY_TARGET est diffrent de zro), ce paramtre fixe une
tailleminimalepourlaSGA sil nestpasspcifi,lavaleur0luiestattribueetlatailledelaSGAestajusteen
interne.
Silagestionautomatiquedelammoireestdsactive(MEMORY_TARGETestgalzro),etsiceparamtreaune
valeurdiffrentedezro,lerglageautomatiquedelammoirepartageestactiv.Danscecas,lescomposantes
suivantes de la SGA sont automatiquement dimensionnes (cf. section Linstance du chapitre Les bases de
larchitecture Oracle) : Database Buffer Cache (DB_CACHE_SIZE), Shared Pool (SHARED_POOL_SIZE), Large Pool
(LARGE_POOL_SIZE),JavaPool(JAVA_POOL_SIZE)etStreamsPool(STREAMS_ POOL_SIZE).
Exemple :
SGA_TARGET = 1G
SHARED_POOL_SIZE
Taille en octets de la Shared Pool. Peut tre spcifie en octets, en Ko (symbole K), en Mo (symbole M) ou en Go
(symboleG).LavaleurpeuttrearrondieparOracleaugranulesuprieur.
Silerglageautomatiquedelammoirepartageestactiv(SGA_TARGETou MEMORY_ TARGETdiffrentdezro),ce
paramtrefixeunetailleminimalepourlaSharedPool.Silnestpasspcifi,lavaleur0luiestattribueetlataillede
laSharedPoolestajusteeninterneparOracle.
Si le rglage automatique de la mmoire partage est dsactiv (SGA_TARGET ou MEMORY_TARGET gal zro), ce
paramtrefixelatailledelaSharedPool.Silnestpasspcifi,savaleurpardfautestde64Mosuruneplateforme
32bitset128Mosuruneplateforme64bits.
IlnyapasderglesimplenideformuledecalculpourdterminerlatailledelaSharedPool.Lesbesoinsdpendent
normment de lapplication. Par contre, il peut tre facilement audit ultrieurement et modifi en cas de besoin
(sansarrterlabasecarleparamtreestdynamique).
Si le partage des requtes est bon, la taille de laShared Poolestpeulieaunombredutilisateurs. La taille de la
SharedPoolestpluttlieaunombretotalderequtesdiffrentes,excutesparlapplicationetleurcomplexit.Il
est par ailleurs important de tenir compte des programmes PL/SQL utiliss par lapplication (triggers,
procdures/fonctionsstockes,packages).
Pouruneapplicationmoyenne,ayantunbonpartagedesrequtes(utilisationdevariablesbind)etnutilisantpasde
programmes PL/SQL, une valeur de lordre de 150 Mo peut tre suffisante. Si lapplication utilise des programmes
PL/SQL,ousilapplicationutilisebeaucoupderequtes,ilnefautpashsiteraugmenterlatailledelaSharedPool
300Moouplus.
Silepartagedesrequtesestmauvais,avoiruneSharedPooltropimportantenapporterarien,voiredgraderales
performances(linstancepassantbeaucoupdetemps,envain,chercherunerequteidentiqueenmmoire).

SivousutilisezleDatabaseControl,ilfautaugmenterlatailledelaSharedPool(aumoins80Mo).
Exemple :
SHARED_POOL_SIZE = 128M
JAVA_POOL_SIZE
Taille en octets de la Java Pool. Peut tre spcifie en octets, en Ko (symbole K), en Mo (symbole M) ou en Go
(symboleG).LavaleurpeuttrearrondieparOracleaugranulesuprieur.
Si le rglage automatique de la mmoire partage est activ (SGA_TARGET ou MEMORY_TARGET diffrent de zro), ce
paramtrefixeunetailleminimalepourlaJavaPool.Silnestpasspcifi,lavaleur0luiestattribueetlatailledela
JavaPoolestajusteeninterneparOracle.
Si le rglage automatique de la mmoire partage est dsactiv (SGA_TARGET ou MEMORY_TARGET gal zro), ce
paramtrefixelatailledelaJavaPool.Silnestpasspcifi,savaleurpardfautestde24Mo.
SivousnutilisezpaslamachinevirtuelleJavaintgreauserveurOracle(pourdvelopperdesprocduresstockes

- 4-

ENI Editions - All rights reserved - Algeria Educ

enJavaparexemple),vouspouvezmettreceparamtrezro.
Exemple :
JAVA_POOL_SIZE = 0
LARGE_POOL_SIZE
Taille en octets de la Large Pool. Peut tre spcifie en octets, en Ko (symbole K), en Mo (symbole M) ou en Go
(symboleG).LavaleurpeuttrearrondieparOracleaugranulesuprieur.
Si le rglage automatique de la mmoire partage est activ (SGA_TARGET ou MEMORY_TARGET diffrent de zro), ce
paramtrefixeunetailleminimalepourlaLargePool.Silnestpasspcifi,lavaleur0luiestattribueetlataillede
laLargePoolestajusteeninterneparOracle.
Si le rglage automatique de la mmoire partage est dsactiv (SGA_TARGET ou MEMORY_TARGET gal zro), ce
paramtrefixelatailledelaLargePool.Silnestpasspcifi,savaleurpardfautestdrivedelavaleurdautres
paramtres.
LesbesoinsenLargePooldpendentnormmentdelapplicationetdesfonctionnalitsutilises(excutionparallle
des requtes, serveurs partags, etc). Il peut tre facilement audit ultrieurement et modifi en cas de besoin
(sansarrterlabasecarleparamtreestdynamique).
Exemple :
LARGE_POOL_SIZE = 64M
DB_CACHE_SIZE
Tailledu DatabaseBufferCache pour la taille de bloc standard (poolstandard).Peuttrespcifieenoctets,enKo
(symboleK),enMo(symboleM)ouenGo(symboleG).LavaleurpeuttrearrondieparOracleaugranulesuprieur.
Si le rglage automatique de la mmoire partage est activ (SGA_TARGET ou MEMORY_TARGET diffrent de zro), ce
paramtrefixeunetailleminimalepourleDatabaseBufferCache.Silnestpasspcifi,lavaleur0luiestattribueet
latailleduDatabaseBufferCacheestajusteeninterneparOracle.
Si le rglage automatique de la mmoire partage est dsactiv (SGA_TARGET ou MEMORY_TARGET gal zro), ce
paramtrefixelatailleduDatabaseBufferCache.Silnestpasspcifi,savaleurpardfautestde48Mo(ou4Mo
multipliparlenombredeCPU,sicettevaleurestplusgrande).
Ilny a pas de rgle simple ni de formule de calcul pour dterminer la taille duDatabase Buffer Cache. Les besoins
dpendentnormmentdelapplication.Parcontre,ilpeuttrefacilementauditultrieurementetmodifiencasde
besoin(sansarrterlabasecarleparamtreestdynamique).
LeDatabaseBufferCacheestsouventlacomposantelaplusimportantedelaSGA(lesdeuxtiersouplus).
Pourunepetitebaseavecpeudutilisateurs,unetaillede128256Mopeuttresuffisante.Pourlesbasesplus
volumineusesavecunnombredutilisateurslev,lataillepeutmonter1Goouplus.
Exemple :
DB_CACHE_SIZE = 640M
DB_nK_CACHE_SIZE
TailleenoctetsduDatabaseBufferCachepourlesblocsden Ko(n valant2,4,8,16ou32,maispaspourlataillede
blocstandard).Peuttrespcifieenoctets,enKo(symbole K),enMo(symboleM)ouenGo(symboleG).Lavaleur
peuttrearrondieparOracleaugranulesuprieur.
Si la base de donnes utilise dautres tailles de bloc que la taille standard, il faut utiliser ces paramtres pour
dimensionnerdespoolsadaptsdansleDatabaseBufferCache.
LOG_BUFFER
TailleenoctetsduRedo Log Buffer.Valeurpardfaut :512Ko(ou128KomultipliparlenombredeCPU,sicette
valeurestplusgrande).Lavaleurpardfautestgnralementsuffisante,dautantplusquecettevaleurestdansla
pratiquesuprieurecequiestannoncdansladocumentation.
Exemple :
LOG_BUFFER = 524288 # 512 Ko

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

PGA_AGGREGATE_TARGET
QuantitdemmoiretotaleallouelaPGAagrgedetouslesprocessusserveurs.Peuttrespcifieenoctets,
enKo(symboleK),enMo(symboleM)ouenGo(symboleG).Valeurpardfaut :10Mo,ou20%delatailledelaSGA
sicettevaleurestplusgrande.
Si la gestion automatique de la mmoire est active (MEMORY_TARGET est diffrent de zro), ce paramtre fixe une
taille minimale pour la PGA cumule sil nest pas spcifi, la valeur 0 lui est attribue et la taille de la PGA est
ajusteeninterne.
Silagestionautomatiquedelammoireestdsactive(MEMORY_TARGETestgalzro),ceparamtrefixelataillede
laPGAcumule.
Oracleallouelammoireauxdiffrentsprocessusserveursenfonctiondeleurbesoins,enessayantdemaintenirla
tailletotalecumuledetouteslesPGAendessousdelalimitedfinieparceparamtre.
Plusceparamtreestlev,plusOracleestcapabledallouerbeaucoupdemmoireauxprocessusserveursetplus
lesprocessusserveurssontcapablesdefairedesoprationsmmoirevolumineuses(trioujointureparhachagepar
exemple),sansfairedestockagetemporairesurdisque(cequiamliorevidemmentlesperformances).
Ilnyapasderglesimplenideformuledecalculpourdterminerlavaleurdeceparamtre.Engnral,dansun
systmetransactionnellesbesoinsenmmoiredesprocessusserveurssontfaibles unevaleurdelordrede512
Ko 1 Mo par session peut tre suffisante. Par contre, dans un systme dcisionnel, les utilisateurs excutent
souventdesrequtesquieffectuentdestrissurungrosvolumededonnes danscecas,ilfautcompteraumoins
10Moparsession.
Exemple :
PGA_AGGREGATE_TARGET = 200M
STATISTICS_LEVEL
Niveaudecollectedesstatistiquessurlabasededonnesetlesystmedexploitation,utilisesnotammentpourles
fonctionnalitsdegestionautomatiquedOracle.Valeurspossibles :ALL,TYPICAL(valeurpardfaut)etBASIC.
La valeur par dfaut (TYPICAL) est adapte pour la plupart des bases de donnes elle permet de bnficier des
fonctionnalitsdegestionautomatiquedOracle,avecunimpactminimumsurlesystme.LavaleurBASICdsactive
lesfonctionnalitsdegestionautomatiquedOracle.LavaleurALLpermetdecollecterplusdestatistiquesmaisaun
impactimportantsurlesystme cettevaleurpeuttreutiliseponctuellementdansunesessionparticulire,des
finsdoptimisation.

Laissezlavaleurpardfaut !
Exemple :
STATISTICS_LEVEL = typical
OPEN_CURSORS
Dtermine le nombre maximum de curseurs qui peuvent tre ouverts simultanment par une session. Valeur par
dfaut :50.
Lesbesoinsvarientnormmentduneapplicationlautre.Mettreunevaleurtropleveparrapportauxbesoins
napasdincidence.Unevaleurde500doittresuffisantepourungrandnombredapplications.
Si une session atteint la limite, lerreur ORA-01000: nombre maximum de curseurs ouverts dpass est retourne.
Danscecas,saufdysfonctionnementdelapplication,augmentezlavaleurduparamtre.
Exemple :
OPEN_CURSORS = 500
PROCESSES
Nombre maximum de processus qui peuvent se connecter simultanment linstance. Valeur par dfaut : 100.
Comptezunpourchaquesessionutilisateursimultane,plusunpourchaqueprocessusdarrireplan(1520en
gnral),plusuncertainnombrepourlessessionsSYSMANetDBSNMPutilisesparleDatabaseControl(unedizaine
engnral).
Pour connatre le nombre de processus darrireplan lancs par linstance, vous pouvez interroger la
vueV$BGPROCESS(filtrezsurpaddr <> 00).Vouspouvezaussiinterrogerlavue<V$PROCESSpourconnatrelenombre
totaldeprocessusdmarrsparlinstance.

- 6-

ENI Editions - All rights reserved - Algeria Educ

Si le nombre maximum de processus est atteint et quun utilisateur cherche se connecter, il recevra le message
derreurORA-00020: nombre maximum de processus (NN) atteint,NN tantlavaleurduparamtre.
Exemple :
PROCESSES = 200
SESSIONS
Dtermine le nombre maximum de sessions qui peuvent tre ouvertes dans linstance. La valeur par dfaut de ce
paramtreestdrivedelavaleurduparamtrePROCESSESparlaformule(1.1 * PROCESSES) + 5.Cettevaleurpar
dfautestaussilavaleurminimaleduparamtre.Ceparamtredoittreconsidrdansuneconfigurationserveurs
partags o le nombre de processus peut tre faible, mais le nombre de sessions lev. Dans une configuration
serveursddis,ceparamtrepeuttreignorsileparamtrePROCESSESatdfini.
Exemple :
SESSIONS = 300
SHARED_SERVERS
Spcifielenombredeprocessusserveurspartagsquisontcrslorsquelinstancedmarre(0pardfaut).Indiquer
unevaleurdiffrentedezro,activelafonctionnalitdeserveurspartags.Laissezcettevaleurzropourtreen
configurationserveursddis(configurationutiliserapriori,saufsilenombredutilisateurssimultansestvraiment
trslev).
Exemple :
SHARED_SERVERS = 20
JOB_QUEUE_PROCESSES
Nombre maximum de processus qui peuvent tre lancs pour excuter des tches automatiques (calcul de
statistiques,rafrachissementdunevuematrialise,etc.).Valeurspossibles :entre0et1000(valeurpardfaut).
Lavaleurdeceparamtredoittresuprieureaunombredetchessusceptiblesdesexcuterenparallle.

Laissezlavaleurpardfaut !

NLS_LANGUAGE
Langagepardfautdelinstance,utilispourlesmessages,lesnomsdejouretdemoisetletri.Dtermineaussila
valeur des paramtres NLS_DATE_LANGUAGE et NLS_SORT. La valeur par dfaut est drive de la variable
denvironnementNLS_LANG.
Exemple :
NLS_LANGUAGE = french
NLS_TERRITORY
Territoirepardfautdelinstance,utilispourlanumrotationdesjoursetdessemaines.Dtermineaussilavaleur
pardfautdesformatsdedate,dessparateursnumriquesetdessymbolesmontaires.
Exemple :
NLS_TERRITORY = france
UNDO_MANAGEMENT
Mode de gestion souhait pour les segments dannulation. Les valeurs possibles sont MANUAL pour la gestion
manuelleet AUTO(pardfaut)pourlagestionautomatique.Lagestionautomatiquedessegmentsdannulationest
prsente en dtail dans le chapitre Gestion des informations dannulation. Ce mode de gestion est vraiment trs
intressant et doit tre utilis. Il peut tre activ ds la cration de la base en mettant le paramtre
UNDO_MANAGEMENT AUTO et en crant un tablespace dannulation dans lordre SQL CREATE DATABASE(voirlasection
Crationdelabasededonnesdanscechapitre).
Exemple :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

UNDO_MANAGEMENT = auto
UNDO_TABLESPACE
Nom du tablespace dannulation utiliser par dfaut lors du dmarrage de linstance. Si ce paramtre nest pas
renseign,linstanceutiliselepremiertablespacedannulation quelletrouve(cf.ChapitreGestiondesinformations
dannulation).
DIAGNOSTIC_DEST
Rpertoire de base du Rfrentiel de Diagnostic Automatique (cf. section Diagnostiquer les problmes du chapitre
Les outils dadministration). Ce paramtre est apparu en version 11. Egal, par dfaut, la valeur de la variable
denvironnement ORACLE_BASE si cette variable nest pas dfinie, il est gal par dfaut, au sousrpertoire log du
rpertoireOracleHome.
Arrangezvous pour que ce paramtre soit gal au rpertoire de base dOracle, soit en dfinissant la
variabledenvironnementORACLE_BASE,soitendfinissantleparamtre.
Exemple
DIAGNOSTIC_DEST = d:\app\oracle
DB_RECOVERY_FILE_DEST
Emplacement de la zone de rcupration rapide (flash recovery area). Si ce paramtre est spcifi, il faut aussi
spcifier le paramtre DB_RECOVERY_FILE_DEST_SIZE. Voir le chapitre Sauvegarde et rcupration pour plus
dinformations sur le fonctionnement et le rle de la zone de rcupration rapide. Ce paramtre est apparu en
version10.
Exemple :
DB_RECOVERY_FILE_DEST = h:\oracle\flash_recovery_area
DB_RECOVERY_FILE_DEST_SIZE
Taille maximale autorise pour lensemble des fichiers stocks dans la zone de rcupration rapide. Peut tre
spcifieenoctets,Ko(symboleK),enMo(symboleM)ouenGo(symboleG).Ceparamtreestapparuenversion
10.
Exemple :
DB_RECOVERY_FILE_DEST_SIZE = 20G
LOG_ARCHIVE_DESTetLOG_ARCHIVE_DUPLEX_DEST
Spcifientuneoudeuxdestinationspourlarchivagedesfichiersdejournalisation(StandardEdition).Voirlechapitre
Sauvegardeetrcuprationpourplusdinformationssurlarchivagedesfichiersdejournalisation.
Exemple :
LOG_ARCHIVE_DEST = h:\oracle\arch\HERMES
LOG_ARCHIVE_DEST_n
Spcifie une ou plusieurs destinations pour larchivage des fichiers de journalisation (Enterprise Edition). n est
compris entre 1 et 10. Voir le chapitre Sauvegarde et rcupration pour plus dinformations sur larchivage des
fichiersdejournalisation.
Exemple :
LOG_ARCHIVE_DEST_1 = "LOCATION=h:\oracle\arch\HERMES"
LOG_ARCHIVE_FORMAT
Dfinit le format du nom des archives des fichiers de journalisation. Doit inclure les variables %T,%S et %Rdonnant
respectivementlenumrodelinstance(thread),lenumrodesquencedufichierdejournalisationetunidentifiant

- 8-

ENI Editions - All rights reserved - Algeria Educ

dincarnation.VoirlechapitreSauvegardeetrcuprationpourplusdinformationssurcesvariables.
Exemple :
LOG_ARCHIVE_FORMAT = redo_%T_%S_%R.arc
REMOTE_LOGIN_PASSWORDFILE
positionnerselonlastratgieadoptepourlidentificationSYSDBA(cf.sectionLadministrateurdebasededonnes
duchapitreLesbasesdelarchitectureOracle).Valeurspossibles :

NONE :pasdefichierdemotdepasse seulelauthentificationparlesystmedexploitationestactive.

EXCLUSIVE :utilisationdunfichierdemotdepasseddilabasededonnes.

SHARED :utilisationdunfichierdemotdepassepartagentreplusieursbasesdedonnes.

Avecunfichierdemotdepasse,pardfaut,seullecompteSYSaledroitdeseconnecteravecleprivilgeSYSDBAou
SYSOPER.SileparamtreREMOTE_LOGIN_PASSWORDFILEestgalEXCLUSIVEde>,ilestpossiblededonnerleprivilge
SYSDBA ou SYSOPER dautres utilisateurs (dans la limite dun nombre maximum dutilisateurs indiqu lors de la
crationdufichierdemotdepasse).SileparamtreREMOTE_LOGIN_PASSWORDFILEestgalSHARED,seullecompte
SYSpeututiliserlesprivilgesSYSDBAouSYSOPER.
Exemple :
REMOTE_LOGIN_PASSWORDFILE = exclusive
SEC_CASE_SENSITIVE_LOGON
Indiquesilesmotsdepassesontsensibleslacasse(true,valeurpardfaut)ounon(false).Ceparamtreest
apparuenversion11.
Laissezlavaleurpardfaut,saufsicelaposeunproblmedecompatibilitavecvotreapplication.
Exemple
SEC_CASE_SENSITIVE_LOGON = true

c.Unexemplesimple
Vous pouvez crer une base de donnes de dmarrage, utilisant la gestion automatique de la mmoire, avec un
fichierdeparamtrecontenanttrspeudeparamtres.
Exemple :
DB_NAME = HERMES
COMPATIBLE = 11.1.0
CONTROL_FILES = ("d:\oracle\oradata\HERMES\control01.ctl",
"d:\oracle\oradata\HERMES\control02.ctl")
DB_BLOCK_SIZE = 8192
MEMORY_TARGET = 512M
DB_RECOVERY_FILE_DEST = d:\oracle\flash_recovery_area
DB_RECOVERY_FILE_DEST_SIZE = 20G
Pourlesautresparamtres,lesvaleurspardfautsontsatisfaisantes,aumoinsdansunpremiertemps.

3.Crerleserviceassocilinstanceoucrerlefichierdemotdepasse
a.Crerleserviceassocilinstance(plateformeWindows)
SurplateformeWindows,ilfautcrerleserviceassocilinstance selonlesoptionsutilises,cettetapepermet
aussidecrerlefichierdemotdepasseutilispourlauthentificationSYSDBA.
Leserviceestcrlaidedelutilitaireoradim.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

Syntaxesimplifie
ORADIM -NEW -SID sid [-SYSPWD mot_de_passe] [-MAXUSERS nombre]
[-STARTMODE auto|manual] [-SRVCSTART system|demand]
[-PFILE fichier] [-SPFILE]
[-SHUTMODE normal|immediate|abort] [-TIMEOUT dure]
Avec
-SID sid
SIDdelanouvelleinstance.
-SYSPWD mot_de_passe
Mot de passe deSYS pour le privilgeSYSDBA. La prsence de cette option cre le fichier de mot de passe, ce qui
permetdavoiruneauthentificationSYSDBAparfichier demotdepasse.Loptionpeuttreomiseencasdutilisation
dune authentification SYSDBA par le systme dexploitation. Ne pas oublier de positionner le paramtre
REMOTE_LOGIN_PASSWORDFILEenconsquence(cf.sectionLadministrateurdebasededonnesduchapitreLesbases
delarchitectureOracle).
-MAXUSERS nombre
IndiquelenombredutilisateursquipourrontrecevoirleprivilgeSYSDBAouSYSOPERetquiserontenregistrsdansle
fichierdemotdepasse.Ncessitelutilisationdunfichierdemotdepasse(optionprcdente).
-STARTMODE auto | manual
Prciselemodededmarragesouhaitpourlinstance :
auto :linstanceestdmarrelorsqueleservicedmarre(paramtreORA_<SID>_ AUTOSTART = TRUEdanslabase
deregistre).
manual(pardfaut) :linstancenestpasdmarrelorsqueleservicedmarre(paramtreORA_<SID>_AUTOSTART =
FALSEdanslabasederegistre).
-SRVCSTART system | demand
Prciselemodededmarragesouhaitpourleservice :
system :leserviceestenredmarrageautomatique.
demand(pardfaut) :leserviceestenredmarragemanuel.
-SPFILE
Indique que linstance nutilise pas explicitement de fichier de paramtres texte pour le dmarrage automatique.
Danscecas,lorsdundmarrageautomatique,lasquencederecherchedunfichierparamtresseffectuecomme
indique dans la section Dmarrage du chapitre Dmarrage et arrt La commande STARTUP. Option par dfaut si
loptionPFILEnestpasspcifie.
-PFILE fichier
Chemindaccscompletaufichierdeparamtrestexteutiliserexplicitementpourledmarrageautomatique(pas
de squence de recherche de fichier de paramtres). Ne pas mettre cette clause si vous utilisez un fichier de
paramtresserveur(recommand).
-SHUTMODE normal | immediate |abort
Type darrt effectu sur linstance lorsque le service sarrte (voir les options de la commande STARTUP dans la
section Dmarrage du chapitre Dmarrage et arrt La commande STARTUP). Est enregistr dans le paramtre
ORA_<SID>_AUTOSTART = FALSEdelabasederegistre.
-TIMEOUT dure
Dlai (en secondes) accord linstance pour sarrter avant larrt du service (qui est alors quivalent un

- 10 -

ENI Editions - All rights reserved - Algeria Educ

SHUTDOWN ABORT).EstenregistrdansleparamtreORA_<SID>_SHUTDOWN_TIMEOUTdelabasederegistre.90secondes
pardfaut.
ORADIM -NEWcreetdmarreleserviceOracleService<SID>.Ilcreaussileservice OracleJobScheduler<SID>utilis
parlordonnanceur Oracle (scheduler)pourlancerdestravauxauniveaudusystmedexploitation par dfaut, ce
serviceestdsactiv.
Pour les options -STARTMODE, -SHUTMODE et -SRVCSTART, la premire lettre des valeurs suffit (STARTMODE a, par
exemple).
Exemple :
C:\>oradim -new -sid HERMES -syspwd wX#12 -startmode a -srvcstart s -spfile
Instance cre.
C:\>
Cetexemplecreunserviceavectouteslesoptionsquipermettentdavoirunredmarrageautomatique.Unfichier
deparamtresserveurestutilisetlauthentificationSYSDBAparunfichierdemotdepasseestpossible(enplusde
lauthentificationparlesystmedexploitation).
Dune manire plus gnrale, lutilitaire ORADIM permet de grer le service associ linstance, notamment de
modifiercertainsparamtresoudelesupprimer(suitelasuppressiondunebaseparexemple).
TapersimplementORADIMsurlalignedecommandepermetdobtenirlaidedeloutil.
Loption-EDITdeORADIMpermetdemodifierlescaractristiquesduserviceetdelinstance,notammentdactiverou
dedsactiverledmarrageautomatique.
Syntaxesimplifie
ORADIM -EDIT -SID sid
[-SYSPWD mot_de_passe] [-MAXUSERS nombre]
[-STARTMODE auto| manual ] [-SRVCSTART system| demand ]
[-PFILE fichier] [-SPFILE]
[-SHUTMODE normal| immediate |abort] [-TIMEOUT dure]
Lesclausessontlesmmesquepourlacration.

b.Crerlefichierdemotdepasse(plateformeUnix/Linux)
SurplateformeUnixouLinux,ilnyapasdenotiondeserviceassocilinstance.Parcontre,ilpeuttrencessaire
decrerlefichierdemotdepasseutilispourlauthentificationSYSDBA.
Lefichierdemotdepasseestcrlaidedelutilitaireorapwd.
Cet utilitaire existe aussi sur plateforme Windows. Il permet de crer ou de recrer le fichier de mot de
passesansutiliseroradim.
Syntaxe
ORAPWD FILE=fichier PASSWORD=mot_de_passe ENTRIES=nombre
FORCE=y|n IGNORECASE=y|n
Avec
FILE=fichier
Chemincompletverslefichierdemotdepassecrer.
PASSWORD=mot_de_passe
MotdepassedeSYSpourleprivilgeSYSDBA.
ENTRIES=nombre
IndiquelenombredutilisateursquipourrontrecevoirleprivilgeSYSDBAouSYSOPERetquiserontenregistrsdansle
fichierdemotdepasse.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 11 -

FORCE=y|n
Mettreypourforcerlasuppressionpralabledufichiersilexistedj(utileencasderecrationdufichierdemotde
passe).
IGNORECASE=y|n
Mettrey pour avoir un mot de passe non sensible la casse etn(valeurpardfaut)pouravoirunmotdepasse
sensiblelacasse.Apparuenversion11.Avantlaversion11,lemotdepassentaitpassensiblelacasse.

Aucunespacenedoittreprsentautourdusigne=.
Exemple :
ORACLE_SID=HERMES
PWFILE=$ORACLE_HOME/dbs/orapw$ORACLE_SID
orapwd file=$PWFILE password=wX#12 entries=4
SurplateformeUnixouLinux,lefichierdemotdepassesappellegnralementorapw<SID>(<SID>dsignantlenom
delinstance)etestsitudanslerpertoire$ORACLE_HOME/dbs.
SurplateformeWindows,lefichierdemotdepassesappellegnralementpwd<SID>.ora(<SID>dsignantlenom
delinstance)etestsitudanslerpertoire%ORACLE_HOME%\database.
Silefichierdemotdepasseexistedj,vousobtiendrezuneerreur pourrecrerunfichierdemotdepasse,ilfaut
supprimermanuellementleprcdentouutiliserloptionFORCE.
Noubliez pas de positionner le paramtreREMOTE_LOGIN_PASSWORDFILE en consquence (section
LadministrateurdebasededonnesduchapitreLesbasesdelarchitectureOracle).

4.LancerSQL*PlusetseconnecterASSYSDBA
Maintenant que les tapes raliser au niveau du systme dexploitation sont termines, nous pouvons lancer
SQL*PlusetnousconnecterAS SYSDBA.
Pourcela :

PositionnerlavariabledenvironnementORACLE_SIDauniveaudusystmedexploitation :

SurplateformeWindows(possibleaussidanslabasederegistre) :
set ORACLE_SID=HERMES

SurplateformeUnixouLinux(adapterenfonctiondushell) :
export ORACLE_SID=HERMES

DmarrerSQL*Plussansseconnecter :sqlplus /nolog

SeconnecterAS SYSDBA :

Authentifiparlesystmedexploitation :
CONNECT / AS SYSDBA

Authentifiparunfichierdemotdepasse :
CONNECT sys/wX#12 AS SYSDBA

- 12 -

ENI Editions - All rights reserved - Algeria Educ

5.Crerlefichierdeparamtresserveur
Lacrationdunfichierdeparamtresserveurseffectuepartirdunfichierdeparamtrestexte,grcelordreSQL
CREATE SPFILE.
Syntaxe :
CREATE SPFILE [ = nom_spfile ] FROM PFILE [ = nom_pfile ] ;
Avec :
nom_spfile
Chemindaccscomplet(surleserveur)etnomdufichierdeparamtresserveurcrer.Sinonspcifi,unnompar
dfautetunemplacementpardfautsontutiliss(dpenddelaplateforme).
nom_pfile
Chemindaccscomplet(surleserveur)etnomdufichierdeparamtrestextedorigine.Sinonspcifi,unnompar
dfautetunemplacementpardfautsontutiliss(dpenddelaplateforme).
Exemple :
SQL> CREATE SPFILE FROM
2 PFILE = d:\app\oracle\admin\HERMES\pfile\init.ora;
Fichier cr.
Cette opration ncessite une connexion SYSDBA ou SYSOPER. Si le fichier de paramtres serveur existe dj, il est
remplac.
Lenometlemplacementpardfautdufichierdeparamtresserveurestlesuivant :

%ORACLE_HOME%\database\spfile<SID>.ora(Windows)

$ORACLE_HOME/dbs/spfile<SID>.ora(Unix/Linux).

Utiliserlenometlemplacementpardfautfaciliteladministrationultrieuredelabase,notammentledmarrage(voir
lechapitreDmarrageetarrt).
Lenometlemplacementpardfautdufichierdeparamtrestexteestlesuivant :

%ORACLE_HOME%\database\init<SID>.ora(Windows)

$ORACLE_HOME/dbs/init<SID>.ora(Unix/Linux).

Danscechapitre,titreCrationdelabasededonneslamain,sectionPrparerunnouveaufichierdeparamtres
texte, nous avons prconis de ne pas crer de fichier de paramtres texte lemplacement par dfaut. En
consquence, dans lordre SQL CREATE SPFILE, il faut donc spcifier lemplacement du fichier de paramtres texte
utiliscommesource(cestlaseulefois !).
Silefichierdeparamtrestextecontientuneerreurdesyntaxe(nomdeparamtreerron,parenthseabsenteou
surnumraire,guillemetouapostropheabsentousurnumraire,etc.),lordreCREATE SPFILEvachouer :

Nomdeparamtreerron :LRM-00101: unknown parameter name...

Syntaxe(parenthse,guillemet,etc.) :LRM-00116: syntax error at...

Chemindufichiertexte :LRM-00109: could not open parameter file...

Corrigezlefichierdeparamtrestexteetrecommencez.Biennoterqucestade,lesvaleursdesparamtresnesont
pas vrifies elles seront vrifies au dmarrage de linstance. La cration du fichier de paramtres serveur peut
seffectuerultrieurement.Personnellement,jeprconisedelecrerdsledbut ainsi,dslepremierdmarragede
linstance,lefichierdeparamtresserveursestutilis,cequipermetsibesoindefairedesmodificationsdynamiques
deparamtresenlesrendantpersistantesdanslefichierdeparamtres(cf.ChapitreGestiondelinstance).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 13 -

6.Dmarrerlinstance
Linstancepeutmaintenanttredmarre,enNOMOUNTpuisquelabasededonnesnexistepasencore :
SQL> STARTUP NOMOUNT
Instance ORACLE lance.
...
Si le fichier de paramtres texte contient une erreur de valeur sur un paramtre (valeur en dehors de la plage
autorise,mauvaischemin,etc.),lacommandeSTARTUP NOMOUNTvachouer.Corrigezlefichierdeparamtrestexte,
recrezlefichierdeparamtresserveuretrecommencez.Biennoterqucestade,lesvaleursdetouslesparamtres
nesontpasvrifies certainesserontvrifiesultrieurement(parexemplelorsdelexcutiondelordreSQLCREATE
DATABASE).

7.Crerlabasededonnes
a.LordreSQLCREATEDATABASE
LordreSQLCREATE DATABASEpermetdecrerlabasededonnes.
Syntaxe :
CREATE DATABASE [nom_base]
[ USER SYS IDENTIFIED BY mot_de_passe ]
[ USER SYSTEM IDENTIFIED BY mot_de_passe ]
[ CONTROLFILE REUSE ]
[ SET DEFAULT { BIGFILE | SMALLFILE } TABLESPACE ]
[ DATAFILE spcification_fichier [,...] ]
[ EXTENT MANAGEMENT LOCAL ]
[ SYSAUX DATAFILE spcification_fichier [,...] ]
[[ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom
[ DATAFILE spcification_fichier [,...] ] ]
[[ BIGFILE | SMALLFILE ] DEFAULT TEMPORARY TABLESPACE nom
[ TEMPFILE spcification_fichier [,...] ]
[ EXTENT MANAGEMENT LOCAL ] [ UNIFORM [ SIZE valeur [K|M|G|T] ] ] ]
[ DEFAULT TABLESPACE nom
[ DATAFILE spcification_fichier [,...] ]
[ clause_extent_management ] ]
[ LOGFILE [GROUP numro] spcification_fichier_redo [,...] ]
[ ARCHIVELOG | NOARCHIVELOG ]
[ FORCE LOGGING ]
[ CHARACTER SET jeu ]
[ NATIONAL CHARACTER SET jeu ]
[ SET TIME_ZONE = { +|- hh:mi | region } ]
[ MAXINSTANCES nombre ]
[ MAXLOGFILES nombre ]
[ MAXLOGMEMBERS nombre ]
[ MAXDATAFILES nombre ] ;
Avec :
- spcification_fichier
nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE]
[ clause_auto_extend ]
- clause_auto_extend
AUTOEXTEND OFF
| AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ]
[ MAXSIZE UNLIMITED | valeur [K|M|G|T] ]
- clause_extent_management
EXTENT MANAGEMENT DICTIONARY
| EXTENT MANAGEMENT LOCAL
{ AUTOALLOCATE | UNIFORM [ SIZE valeur [K|M|G|T] ] }
- spcification_fichier_redo
(nom_fichier [,...]) [ SIZE valeur [K|M|G] ] [REUSE]

- 14 -

ENI Editions - All rights reserved - Algeria Educ

Exemple :
CREATE DATABASE hermes
USER SYS IDENTIFIED BY wX#12
USER SYSTEM IDENTIFIED BY az#78
SET DEFAULT SMALLFILE TABLESPACE
DATAFILE &chemin\system01.dbf SIZE 200M
AUTOEXTEND ON NEXT 10M
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE &chemin\sysaux01.dbf SIZE 100M
AUTOEXTEND ON NEXT 10M
LOGFILE
GROUP 1
(&chemin\redo01a.log,
&chemin\redo01b.log) SIZE 50M,
GROUP 2
(&chemin\redo02a.log,
&chemin\redo02b.log) SIZE 50M,
GROUP 3
(&chemin\redo03a.log,
&chemin\redo03b.log) SIZE 50M
SMALLFILE UNDO TABLESPACE undotbs
DATAFILE &chemin\undotbs01.dbf SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 1024M
SMALLFILE DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE &chemin\temp01.dbf SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 1024M
DEFAULT TABLESPACE deftbs
DATAFILE &chemin\deftbs01.dbf SIZE 10M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
NOARCHIVELOG
CHARACTER SET WE8ISO8859P15
NATIONAL CHARACTER SET AL16UTF16
SET TIME_ZONE = Europe/Paris
MAXINSTANCES 1
MAXLOGFILES 16
MAXLOGMEMBERS 4
MAXDATAFILES 128
/
Cetexempleutiliseunevariabledesubstitution&cheminpourlechemindesfichiersdelabasededonnes cette
variableestdfinieaupralabledansSQL*Plus,aveclasyntaxeDEFINE chemin=....
LordreSQLCREATE DATABASEdurequelquesminutes.
LordreSQLCREATE DATABASEcrelanouvellebasededonnes,enloccurrence :

crationdesfichiersdecontrle

crationdesfichiersdejournalisation

crationdutablespaceSYSTEMetdesonfichierdedonnes

crationdutablespaceSYSAUXetdesonfichierdedonnes

crationdudictionnairededonnes(dansletablespaceSYSTEM)

crationdunsegmentdannulation(nommSYSTEMstockdansletablespaceSYSTEM)

crationdescomptesSYSetSYSTEM(entreautres)

crationventuelleduntablespacedannulation,duntablespacetemporairepardfautetduntablespace
permanentpardfaut.

larrive, la base de donnes est ouverte et parfaitement oprationnelle. Par contre, les vues et synonymes du
dictionnairededonnesnesontpascrsetledictionnaireestdonc peuexploitable.Lafinalisationdelacration
dudictionnaireestdcritedanslepoint Finaliserlacrationdudictionnaireciaprs.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 15 -

TouteslesstructuresstockesdansletablespaceSYSTEMsontcresgrceauscriptsql.bsqquisetrouvedansle
rpertoire%ORACLE_HOME%\rdbms\adminou$ORACLE_HOME/rdbms/admin.
Encequiconcernelesfichiersdelabasededonnes,lesrecommandationsdenommagesontlessuivantes :
Fichierdecontrle
controlnn.ctl,nntantunnumrodordre(01,02,etc.).
Fichierdejournalisation
redonn.log,nn,nntantlenumrodugroupe(01,02,etc.).
Fichiersdedonnes
tablespacenn.dbf,tablespacetantlenomdutablespaceetnnlenumrodordredufichierauseindutablespace
(01,02,etc.).
SilordreSQLCREATE DATABASEchouepouruneraisonoupouruneautre,ilestpossiblequeplusieursdesfichiers
delabasededonnesaientdjtcrs.Danscecas,avantderelancerlacration,ilfautsupprimerlesfichiers
djcrs(souspeinequeleCREATE DATABASEchouedenouveau,maiscettefoisparcequedesfichiersexistent
dj).
Lescausesdunchecdelacrationdunebasededonnespeuventtremultiples :

manquedespace

cheminerronpourunfichier(Oraclenecreparlesrpertoires,ilsdoiventdjexister)

etc.

Silemessagederreuraffichlcranestsibyllin(dugenreORA-01092: instance ORACLE interrompue. Dconnexion


impose),consultezlefichierdalertedelinstancequivousdonnera(normalement)desinformationsdtaillessurla
natureduproblme.

b.OptionsdelordreSQLCREATEDATABASE
TouteslesclausesdelordreSQLCREATE DATABASE sontoptionnellesetontdesvaleurspardfaut.Danslapratique,
ilestprfrabledelesspcifiertoutes(oupresque)afindebiencontrlerlescaractristiquesdelanouvellebase.
nom_base
Nomdelabasededonnes.PardfautgalauparamtreDB_NAME.Provoqueuneerreursilenomindiquiciest
diffrentdelavaleurduparamtreDB_NAME.
USER{SYS|SYSTEM}IDENTIFIEDBY
Exemple :
USER SYS IDENTIFIED BY wX#12
USER SYSTEM IDENTIFIED BY az#78
CesdeuxclausespermettentdechangerlesmotsdepassedeSYSetSYSTEMdslacrationdelabasededonnes.
Biennoterquecesdeuxclausesnesontpasobligatoires(maisrisquentdeledevenirdansuneversionultrieure).
Parcontre,siluneestspcifie,lautredoitltreaussi.Sicesclausesnesontpasspcifies,lesmotsdepassepar
dfautsontattribusSYS(change_on_install)etSYSTEM(manager).
CONTROLFILEREUSE
SiloptionestprsenteetquundesfichiersindiqusdansleparamtreCONTROL_FILESexistedj,Oraclelerutilise
etlcrase.Siloptionestabsente,danslammesituation,unmessagederreursafficheetlacrationdelabase
eststoppe.
Dupointdevuedelascurit,ilestprfrabledenepasmettrecetteoptionafindviterdcraserparmgardeun
fichierdecontrleutilisparuneautrebase.

- 16 -

ENI Editions - All rights reserved - Algeria Educ

SETDEFAULT{BIGFILE|SMALLFILE}TABLESPACE
Cetteclausespcifieletypepardfaut(BIGFILEouSMALLFILE)destablespacescrslorsdelacrationdelabase
dedonnes.LetypespcifiicisappliquenotammentauxtablespacesSYSTEMetSYSAUX,etnepeutpastremodifi
pourcesdeuxtablespaces.Sicetteclauseestomise,OraclecredestablespacesSMALLFILEpardfaut.
Untablespace BIGFILE est un tablespace qui ne comporte quun seul fichier de donnes qui peut contenir jusqu
2^32 blocs Oracle (plus de 4 milliards). Un tablespace SMALLFILE est le tablespace traditionnel dOracle, qui peut
comporterjusqu1022fichiers,chaquefichierpouvantcontenirjusqu2^22blocsOracle(plusde4millions).Les
tablespacesBIGFILEsontapparusenversion10.
Cette notion de tablespaceBIGFILE est prsente plus en dtail dans le chapitre Gestion des tablespaces et des
fichiersdedonnes.
DATAFILEspcification_fichier[,...]
Exemple :
DATAFILE &chemin\system01.dbf SIZE 200M
AUTOEXTEND ON NEXT 10M
Cetteclausepermetdeprciserlemplacement,lenometlatailledun(ouventuellementdeplusieurs)fichiersde
donnespourletablespaceSYSTEM.
Lasyntaxeestlasuivantepourlaspcificationdunfichierdedonnes :
- spcification_fichier
nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE]
[ clause_auto_extend ]
nom_fichier
Chemin daccs complet au fichier de donnes, normalement dans un rpertoire de donnes (oradata) pour
respecterlestandardOFA.
SIZE
Tailleinitialedufichier.LataillepeuttreomiseuniquementsiloptionREUSEestutiliseetquelefichierexistedj.
REUSE
Si loption est prsente et que le fichier existe dj, Oracle le rutilise et lcrase. Si loption est absente, dans la
mmesituation,unmessagederreursafficheetlacrationdelabasededonneseststoppe.Dupointdevuede
lascurit,ilestprfrabledenepasmettrecetteoptionafindviterdcraserparmgardeunfichierdedonnes
utilisparuneautrebasededonnes.
- clause_auto_extend
AUTOEXTEND OFF
| AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ]
[ MAXSIZE UNLIMITED | valeur [K|M|G|T] ]
AUTOEXTEND
Indique si le fichier de donnes peut (ON) ou non (OFF) grossir une fois que tout lespace initialement allou est
compltementutilis.
NEXT
Espaceminimumallouaufichierlorsdelextension.
MAXSIZE
Taillemaximaledufichier,ventuellementnonlimite(UNLIMITED).

LagestiondestablespacesetdesfichiersdedonnesseraprsenteendtaildanslechapitreGestiondes
tablespacesetdesfichiersdedonnes.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 17 -

Pourle<tablespaceSYSTEM,ilfautprvoirunfichierdedonnesdauminimum200Mo(siaucuneoptionparticulire
nest installe), et il est vivement conseill de permettre ce fichier de donnes de stendre en fonction des
besoins(clauseAUTOEXTEND).
Touteslestaillespeuventtreexprimesenoctet(pasdesymbole),Ko(symboleK),Mo(symboleM),Go(symboleG)
ouTo(symboleT).LestaillesenTonesontautorisesquepourlestablespacesBIGFILE.
Le type (BIGFILE ou SMALLFILE) du tablespace SYSTEM est dtermin par la clause SET DEFAULT ... TABLESPACE
prsenteprcdemment.UnseulfichierdedonnespeuttrespcifisiletablespaceestdetypeBIGFILE.
EXTENTMANAGEMENTLOCAL
CetteclauseindiquequeletablespaceSYSTEMdoittregrlocalement pardfaut,ilestgrparledictionnaire.
LanotiondetablespacegrlocalementseraprsentedanslechapitreGestiondestablespacesetdesfichiersde
donnes.Biennoterlesconsquences(positives!)decetteclause :

Touslestablespacesdoiventtregrslocalement(conseillparOracle).

Untablespacetemporairepardfautdoittrecrdslacrationdelabase(conseillparOracle).

Si la gestion automatique des segments dannulation est active (par dfaut et conseill par Oracle), un
tablespacedannulationdoittrecrdslacrationdelabasededonnes(conseillparOracle).

Ilnyapasdinconvnient(aucontraire)utiliseruntablespaceSYSTEMgrlocalement !
SYSAUXDATAFILEspcification_fichier[,...]
Exemple :
SYSAUX DATAFILE &chemin\sysaux01.dbf SIZE 100M
AUTOEXTEND ON NEXT 10M
Cetteclausepermetdeprciserlemplacement,lenometlatailledun(ouventuellementdeplusieurs)fichiersde
donnespourletablespaceSYSAUX(apparuenversion10).
La syntaxe de spcification du fichier de donnes est la mme que le tablespace SYSTEM. Les caractristiques du
tablespaceSYSAUXserontprsentesdanslechapitreGestiondestablespacesetdesfichiersdedonnes.
Le type (BIGFILE ou SMALLFILE) du tablespace SYSAUX est dtermin par la clause SET DEFAULT ... TABLESPACE
prsenteprcdemment.
LatailledutablespaceSYSAUXdpendranormmentdesfonctionnalitsutilisesdanslabasededonnes(OLAP,
OracleText,OracleinterMedia,etc.).Siaucuneoptionparticulirenestutilise,unetaillededpartde100Moest
suffisante. En rythme de croisire, il faut compter 200 300 Mo pour le rfrentiel AWR (base comportant en
moyenne une trentaine de sessions actives) et environ 100 Mo pour le rfrentiel du Database Control (mais
lespaceutilisparcesdeuxcomposantsdpenddenombreuxfacteurs).Ilestconseilldepermettreaufichierde
donnesdutablespaceSYSAUXdestendreenfonctiondesbesoins(clauseAUTOEXTEND).
[BIGFILE|SMALLFILE]UNDOTABLESPACE...
Exemple :
SMALLFILE UNDO TABLESPACE undotbs
DATAFILE &chemin\undotbs01.dbf SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 1024M
Cetteclausepermetdecreruntablespacedannulationquiestutilispourlagestionautomatiquedessegments
dannulation. Ce mode de gestion est intressant et doit tre utilis ds la cration de la base. La gestion
automatique des segments dannulation sera prsente en dtail dans le chapitre Gestion des informations
dannulation.
La syntaxe pour spcifier les caractristiques des fichiers de donnes de ce tablespace est la mme que pour le
tablespace SYSTEM.Laclauseoptionnelle BIGFILEou SMALLFILE permet de prciser le type de tablespace si cette
clauseestomise,letypeestdterminparlaclauseSET DEFAULT ... TABLESPACEprsenteprcdemment.
[BIGFILE|SMALLFILE]DEFAULTTEMPORARYTABLESPACE...
Exemple :

- 18 -

ENI Editions - All rights reserved - Algeria Educ

SMALLFILE DEFAULT TEMPORARY TABLESPACE temp


TEMPFILE &chemin\temp01.dbf SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 1024M
Cetteclausepermetdecreruntablespacetemporairepardfaut.Cettenotionestintressanteetdoittremise
en uvredslacrationdelabasededonnes.Letablespacetemporaireseraprsentendtaildanslechapitre
Gestiondestablespacesetdesfichiersdedonnes.
La syntaxe pour spcifier les caractristiques des fichiers de donnes de ce tablespace, est la mme que pour le
tablespaceSYSTEM,maisenremplaantlemotclDATAFILEparTEMPFILE.LaclauseoptionnelleBIGFILEouSMALLFILE
permet de prciser le type de tablespace si cette clause est omise, le type est dtermin par la clause SET
DEFAULT ... TABLESPACEprsenteprcdemment.
DEFAULTTABLESPACEnom...
Exemple :
DEFAULT TABLESPACE deftbs
DATAFILE &chemin\deftbs01.dbf SIZE 10M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
Cetteclausepermetdecreruntablespacepermanentpardfaut.Cetablespaceseraaffectpardfaut,comme
tablespacepardfautdesutilisateursnon"systme"(autresqueSYS,SYSTEM,etc.).Letablespacepardfautdun
utilisateur est le tablespace dans lequel Oracle stocke les segments crs par lutilisateur si celuici na pas
mentionnexplicitementdetablespace.Cettenotionnestpasfondamentale.Ellenestrellementintressanteque
dans les bases de donnes o beaucoup dutilisateurs, ayant le droit de crer des segments, devront tre
grs dfiniruntablespacepermanentpardfautpermetdesimplifierlacrationdesutilisateurs(chapitreGestion
des utilisateurs et de leurs droits). Le tablespace permanent par dfaut peut tre dfini ultrieurement. Le
tablespace permanent par dfaut utilis par dfaut par Oracle est le tablespace SYSTEM cela ne prsente pas de
risquevisvisdutablespaceSYSTEM,carlesutilisateursnonDBAnontpas(normalementcestlecaspardfaut)
dequotasurletablespaceSYSTEM,etnepeuventpasycrerdesegments(voirlechapitreGestiondesutilisateurs
etdeleursdroits).
La syntaxe pour spcifier les caractristiques des fichiers de donnes de ce tablespace est la mme que pour le
tablespace SYSTEM. Le tablespace est obligatoirement de type SMALLFILE. La clause EXTENT MANAGEMENT sera
prsentedanslechapitreGestiondestablespacesetdesfichiersdedonnes.
LOGFILE
Exemple :
LOGFILE
GROUP 1
GROUP 2
GROUP 3

(&chemin\redo01a.log,
&chemin\redo01b.log) SIZE 50M,
(&chemin\redo02a.log,
&chemin\redo02b.log) SIZE 50M,
(&chemin\redo03a.log,
&chemin\redo03b.log) SIZE 50M

Cetteclausepermetdeprciserlemplacement,lenombreetlatailledesfichiersdejournalisation(voirlechapitre
LesbasesdelarchitectureOraclepourlesprincipesdorganisationengroupes,compossdeplusieursmembres).
Lasyntaxeestlasuivante :
LOGFILE [GROUP numro] spcification_fichier_redo [,...]
spcification_fichier_redo =
(nom_fichier [,...]) [ SIZE valeur [K|M|G] ] [REUSE]
Avec :
numro
Numrodugroupe.Siloptionestabsente,Oraclenumrotelesgroupes1,2,...(cequiestbien).
nom_fichier
Chemindaccscompletunfichiermembredugroupe,normalementdansunrpertoirededonnes(oradata)pour
respecterlestandardOFA.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 19 -

SIZE
Tailledechaquemembredugroupeenoctet(pasdesymbole),Ko(symboleK),Mo(symboleM)ouGo(symboleG).La
taillepeuttreomiseuniquementsiloptionREUSEestutiliseetquelefichierexistedj.
REUSE
Si loption est prsente et que le fichier existe dj, Oracle le rutilise et lcrase. Si loption est absente, dans la
mmesituation,unmessagederreursafficheetlacrationdelabasededonneseststoppe.Dupointdevuede
lascurit,ilestprfrabledenepasmettrecetteoptionafindviterdcraserparmgardeunfichierdedonnes
utilisparuneautrebasededonnes.
Vousdevezspcifierauminimumdeuxgroupes,composschacundunmembre.Dupointdevuedelascurit,ilest
conseill davoir au minimum deux membres par groupe, si possible sur des disques diffrents. Pour les
performances, il est aussi conseill de mettre les fichiers de journalisation sur des disques ddis (pour viter les
contentionssurlesentres/sorties).
Comptetenudelasyntaxe,touslesmembresdungroupeontforcmentlammetaille.Parcontre,rienninterdit
davoir des groupes de tailles diffrentes : cela ne prsente aucun intrt, sauf temporairement, durant une
oprationderedimensionnementdelatailledesfichiersdejournalisation(chapitreGestiondesfichiersdecontrle
etdesfichiersdejournalisation).
Dterminerlenombredegroupesetlatailledesgroupesestunsujetcomplexepourlequelilnexistepasdeformule
decalcul.Lencore,ilestpossible,aposteriori,dauditerlefonctionnementdesfichiersdejournalisationafindevoir
silenombredegroupesetlatailledesgroupessontsatisfaisants encasdeproblme,ilestrelativementsimple
dapporter des corrections en ajoutant un nouveau groupe (cest simple) ou en augmentant la taille des groupes
(cestunpeupluscompliqu).NousverronstoutceladansledtaildanslechapitreGestiondesfichiersdecontrle
etdesfichiersdejournalisation.
Pour dmarrer, il est classique dutiliser trois ou quatre groupes de fichiers de journalisation dune taille comprise
entre20(petiteactivittransactionnelle)et100Mo(activittransactionnelleplusimportante).
ARCHIVELOG|NOARCHIVELOG
CetteclauseindiquesilabasededonnesfonctionnedanslemodeARCHIVELOGouNOARCHIVELOG.Gnralement,la
baseesttoujourscreenmodeNOARCHIVELOGpuisventuellementpasseensuiteenmode ARCHIVELOG. ilnest
eneffetpasutiledarchiverlesfichiersdejournalisationremplislorsdelacrationdelabasededonnes(encasde
problme, il est plus simple de recrer la base). La mise en uvre de larchivage aprs cration de la base de
donnesestprsentedanslechapitreSauvegardeetrcupration.
FORCELOGGING
CertainsordresSQLpeuventtreexcutsenmodeNOLOGGING,cestdiresansgnrerdactivit(oupresquepas)
dans les fichiers de journalisation. Cette technique est intressante pour les performances (lopration est plus
rapide)maispeutposerdesproblmespourlarcupration :lesoprationseffectuesenNOLOGGINGquinontpas
tsauvegardesnesontpasrcuprables ilfautlesrefaire(sicestpossible...).
LaclauseFORCE LOGGINGdelordreSQLCREATE DATABASEmetlabasededonnesdanslemodeFORCELOGGING,cequi
permet de garantir que toutes les modifications seront enregistres dans les fichiers de journalisation, mme si
loprationconcerneesteffectuedanslemodeNOLOGGING.
Danslapratique,sterlapossibilitderalisercertainesoprationsdanslemodeNOLOGGINGestdommage,carcela
peut tre trs intressant du point de vue des performances (pour la cration des index par exemple). Il est
prfrable de ne pas mettre la base de donnes dans le mode FORCE LOGGING et de bien contrler les oprations
ralises en NOLOGGING, et notamment de faire des sauvegardes aprs les oprations de ce genre si, cellesci ne
peuvent pas tre facilement refaites en cas dincident.Cette proprit de la base de donnes peut tre modifie
ultrieurement par lordre SQL ALTER DATABASE [NO] FORCE LOGGING. Elle est enregistre dans la colonne
FORCE_LOGGINGdelavueV$DATABASE.

LaclauseFORCE LOGGINGpeuttrepositionnesuruntablespacecequipermetdavoiruncontrleplusfin.

CHARACTERSET&NATIONALCHARACTERSET
Exemple :
CHARACTER SET WE8ISO8859P15
LaclauseCHARACTER SETdfinitlejeudecaractresutilispourlestockagedesdonnesdanslescolonnesdetype
CHAR,VARCHAR2,LONGetCLOB.

- 20 -

ENI Editions - All rights reserved - Algeria Educ

LeCHARACTER SET,bienquoptionnel,doittreindiquavecsoin,carilnestpassimplechangerultrieurement la
valeurpardfautdpenddelaplateformeetdelinstallation.
PourlEuropedelouest,lesjeuxdecaractresWE8ISO8859P1etWE8ISO8859P15sontsouventutilisscarilsstockent
lescaractressur8bitsetpermettentdoncdeconserverlescaractresaccentus ledeuximejeupermetenplus
destockerlesymboledeleuro.UneautrevaleurusuelleestUS7ASCII cejeudecaractreanglosaxonnepermet
pasdestockerlesaccents.LejeuUnicodeAL32UTF8estaussisupportetrecommandparOracle.
La clause NATIONAL CHARACTER SET dfinit le jeu de caractres utilis pour le stockage des donnes dans les
colonnesdetypeNCHAR,NVARCHAR2etNCLOB.
Ilest,luiaussi,dlicatchangerultrieurement.LeNATIONAL CHARACTER SETpeuttreomissivousneprvoyezpas
dutiliserundeuximejeudecaractresdanslabasededonnes ilestpardfautgalAL16UTF16.Seulslesjeux
decaractresUTF8etAL16UTF16sontautoriss.
Les techniques de changement de jeu de caractres sont dcrites dans la documentation Oracle Database
GlobalizationSupportGuide.
SETTIME_ZONE
Exemple :
SET TIME_ZONE = Europe/Paris
Cetteoptionpermetdedfinirlefuseauhorairedelabase.Cefuseauhoraireestutilisparlestypesdedonnes
TIMESTAMP WITH TIME ZONEetTIMESTAMP WITH LOCAL TIME ZONE.Sicetteoptionnestpasspcifie,Oracleutilisele
fuseau horaire du systme dexploitation. Si le fuseau horaire du systme dexploitation nest pas valide, Oracle
utiliselefuseauUTC.Lefuseauhorairepeuttredfiniparunechanedelaforme+|- hh:midonnantledcalage
parrapportlheureuniverselle(+01:00parexemple),ouparlenomdunergion(Europe/Parisparexemple).Vous
pouvezinterrogerlacolonneTZNAMEdelavueV$TIMEZONE_NAMESpouravoirlalistedesnomsdergion.
MAXINSTANCES MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES
Exemple :
MAXINSTANCES 1
MAXLOGFILES 16
MAXLOGMEMBERS 4
MAXDATAFILES 128
Cesoptionspermettentdelimiterlenombredefichiersdelabasededonnes :
MAXLOGFILES
Nombremaximumdegroupesdefichiersdejournalisation.
MAXLOGMEMBERS
Nombremaximumdemembresdansungroupedefichiersdejournalisation.
MAXDATAFILES
Nombremaximumdefichierdedonnes.
Les valeurs minimales, par dfaut, et maximales dpendent de la plateforme.Ces paramtrent impactent
directementlatailledesfichiersdecontrlecarOraclerservelenombredentresncessairesdanslesfichiersde
contrle mettre des valeurs trs grandes, "pour tre tranquille", peut donc conduire un fichier de contrle
dmesurmentgrand(plusde10Mo,contremoinsde10Moentempsnormal).Mettrelesvaleurssuivantespermet,
engnral,dtretranquille,sanstropaugmenterlatailledufichierdecontrle :
MAXLOGFILES
En gnral, une base utilise quatre ou cinq groupes, donc, mettre une valeur de lordre de 10 serait largement
suffisant malheureusement, MAXLOGFILES a une valeur minimum gale deux fois celle dune autre option,
MAXINSTANCES(intressanteuniquementavecloptionRAC),quipardfautvaut16(soitunMAXLOGFILESminimumde
32 !). Le plus simple est soit de ne rien mettre (et la valeur par dfaut, gale la valeur minimum est largement
suffisante)soitdemettre32(cequirevientaumme) :quipeutleplus,peutlemoinsetlespacegaspilldansle
fichier de contrle est ngligeable. Une autre approche peut consister donner une valeur MAXINSTANCES (1 par
exemple)etmettreMAXLOGFILESunevaleurdelordrede10.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 21 -

MAXLOGMEMBERS
3 ou 4 (utiliser trois membres par groupe offre normalement un niveau de scurit suffisant, si ces membres sont
situssurdesdisquesdiffrents).5estsouventlavaleurmaximaleautorisepourcetteoption.
MAXDATAFILES
Delordrede50100(ventuellementpluspourlestrsgrossesbases).Classiquement,unebasemoyenneutilise
1020fichiersdedonnes.

8.Finaliserlacrationdudictionnairededonnes
AprslexcutiondelordreSQLCREATE DATABASE,labasededonnesestparfaitementoprationnelle,maislesvues
etlessynonymesquirendentledictionnairededonnesexploitablenesontpascrs.
Pour crer ces vues et ces synonymes, vous devez excuter (sous SYS) des scripts fournis par Oracle (dans %
ORACLE_HOME%\rdbms\adminou$ORACLE_HOME/rdbms/admin) :

catalog.sql:vuesetsynonymesdebase
catproc.sql : complments pour les options procdurales (cration dun grand nombre de packages fournis
parOracle).

Lesscriptscatalog.sqletcatproc.sqlappellentdautresscripts.
Lepassagedecatalogetcatprocdureenviron1015minutes.
Dautres fonctions particulires dOracle peuvent ncessiter lexcution de scripts supplmentaires dans ce cas, le
scriptlancerestclairementindiqudansladocumentation.
Enrglegnrale,lesscriptsdoiventtreexcutsdansleschmaSYS(propritairedudictionnairededonnes)et
doncavecuneconnexionAS SYSDBA.Encasdedoute,ouvrezlescriptetregardezsonentte laconnexionutiliser
estgnralementindique.
Encomplment,vouspouvezexcuter(sousSYSTEM)lescriptpupbld.sqlsitudans%ORACLE_HOME%\sqlplus\adminou
$ORACLE_HOME/sqlplus/admin.Cescriptestexcutpourcrerunetable(PRODUCT_USER_PROFILE)dontlaprsenceest
testeparlesoutilsOracle(SQL*Plusnotamment)lorsdelaconnexiondunutilisateur.Silatablenexistepasetque
lutilisateurnestpasunDBA,unmessagedalerteestaffich(maislaconnexionestaccepte).
Excuterlescriptpupbld.sqlpermetdviterdavoircemessage.
LatablePRODUCT_USER_PROFILEpeuttreutilisepourlimiterlanaturedesordresSQLquunutilisateurpeutexcuter
aveclesoutils(parexemple,interdirelutilisationdelordre UPDATEdansSQL*Plus).Pourensavoirplus,consulterla
documentationSQL*PlusUsersGuideandReference.

9.ConfigurerOracleNetpourlanouvellebasededonnes
cestade,vouspouvezconfigurerOracleNetpourlanouvellebasededonnes :

Modification de la configuration du processus dcoute (fichier listener.ora) pour avoir un enregistrement


statiquedelinstance.
Crationdunnomdeservicerseau(fichiertnsnames.ora)pourpouvoirseconnecterlabasededonnes
sansdevoirpositionnerlavariabledenvironnementORACLE_SID.

CesdiffrentesconfigurationsonttprsentesdanslasectionConfigurationctserveurduchapitreOracleNetet
ConfigurationctclientduchapitreOracleNet.

10.Enregistrerlanouvelleinstancedanslefichieroratab
Surplateforme Unix ou Linux, il est intressant denregistrerlanouvelleinstancedanslefichier /etc/oratab,dune
part,pourpouvoirchangerfacilementdenvironnement avec lutilitaireoraenv (voirlasectionInstallationduserveur
duchapitreInstallation),etdautrepart,pourbnficierventuellementduredmarrageautomatique(voirlasection

- 22 -

ENI Editions - All rights reserved - Algeria Educ

AutomatisationetscriptsduchapitreDmarrageetarrt).
Exemple :
HERMES:/u01/app/oracle/product/11.1.0/db_1:Y

11.ConfigurerleDatabaseControl
LenvironnementduDatabaseControl(rfrentiel,arborescencedefichiersdanslerpertoireOracleHomeservicesur
plateforme Windows) peut tre cr grce lutilitaire ligne de commande emca (Enterprise Manager Configuration
Assistant)Appel sans option, lutilitaire affiche une aide. Cet utilitaire propose un grand nombre doptions qui
permettentdeconfigurer,reconfigurer,mettrejourousupprimerleDatabaseControl.
Syntaxesimplifie :
emca -config dbcontrol db [-repos {create | recreate}]
emca -deconfig dbcontrol db [-repos drop]
Le premier appel permet de configurer lenvironnement complet. Loption -repos permet de crer ou recrer le
rfrentiel.Sicetteoptionestabsente,lerfrentielestsupposdjexister.
Ledeuximeappelpermetdesupprimerlaconfiguration.Loption-repos droppermetdesupprimerlerfrentiel.Si
cette option est absente, le rfrentiel nest pas supprim.Pour reconfigurer le Database Control sans supprimer le
rfrentiel,vouspouvezdoncappelersuccessivement emca -deconfigpuisemca -configenomettantchaquefois
loption-repos.
Lorsquevouslancezlutilitairepourcrerlenvironnement,cederniervousposeunesriedequestions.
Exemple :
C:\>emca -config dbcontrol db -repos create
EMCA DEMARRE 10 juil. 2008 07:49:35
Assistant Configuration dEM, version 11.1.0.5.0 - Production
Copyright (c) 2003, 2005, Oracle. Tous droits rservs.
Entrez les informations suivantes :
SID de base de donnes:
HERMES
Numro de port du processus dcoute:
1521
Mot de passe de lutilisateur SYS:
Mot de passe de lutilisateur DBSNMP:
Mot de passe de lutilisateur SYSMAN:
Adresse lectronique pour les notifications (facultatif):
contact@olivier-heurtel.fr
Serveur de messagerie sortant (SMTP) pour les notifications (facultatif):
smtp.orange.fr
----------------------------------------------------------------Vous avez indiqu les paramtres suivants
Rpertoire dorigine ORACLE_HOME de la base de donnes
................ D:\app\oracle\product\11.1.0\db_1
Nom dhte local ................ srvwinora
Numro de port du processus dcoute ................ 1521
SID de base de donnes ................ HERMES
Adresse lectronique pour les notifications
................ contact@olivier-heurtel.fr
Serveur de messagerie sortant (SMTP) pour les notifications
................ smtp.orange.fr
----------------------------------------------------------------Voulez-vous continuer ? [oui(Y)/non(N)]: Y
10 juil. 2008 07:50:38 oracle.sysman.emcp.EMConfig perform
INFO: Cette opration est en cours de journalisation dans
D:\app\oracle\cfgtoollogs\emca\HERMES\emca_2008_07_10_07_49_35.log.
...
10 juil. 2008 08:36:34 oracle.sysman.emcp.EMDBPostConfig perform
Configuration
INFO: >>>>>>> URL de Database Control : https://srvwinora:5500/
em <<<<<<<10 juil. 2008 08:36:37 oracle.sysman.emcp.EMDBPostConfig invoke

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 23 -

ATTENTION:
************************ WARNING ************************
Le rfrentiel de gestion a t mis en mode scuris : les donnes
Enterprise Manager seront cryptes. La cl de cryptage a t stocke
dans le fichier D:\app\oracle\product\11.1.0\db_1\srvwinora_HERMES\
sysman\config\emkey.ora. Vrifiez que ce fichier est bien
sauvegard, car les donnes cryptes deviendront inutilisables si
vous perdez ce fichier.
***********************************************************
Enterprise Manager a t configur
EMCA ARRETE 10 juil. 2008 08:36:38
Surlexemplecidessus,lesquestionsposessontengrasetlesrponsesenitalique.Lesquestionsposessontles
suivantes :
SIDdebasededonnes
Identifiantdelinstance.
Numrodeportduprocessusdcoute
Numroduportsurlequelleprocessusdcoutecommunique(gnralement1521).
MotdepassedelutilisateurSYS
MotdepasseducompteSYS(indiquerlemotattribuSYSlorsdelacrationdelabasededonnes).Lasaisieest
masque.
MotdepassedelutilisateurDBSNMP
MotdepasseducompteDBSNMP(crparlutilitaire).Lasaisieestmasque.
MotdepassedelutilisateurSYSMAN
MotdepasseducompteSYSMAN(crparlutilitaire).Lasaisieestmasque.
Adresselectroniquepourlesnotifications(facultatif)
Adresselectroniquelaquellelesnotificationsserontenvoyes(associaucompteadministrateurSYSMAN).Peuttre
laissvideetconfigurultrieurementdansleDatabaseControl.
Serveurdemessageriesortant(SMTP)pourlesnotifications(facultatif)
Passerelle SMTP utilise pour lenvoi des notifications par courrier lectronique. Peut tre laiss vide et configur
ultrieurementdansleDatabaseControl.
lafindelinstallation,emcaaffichedeuxmessagesimportants :

UnmessagedonnantlURLutiliserpourseconnecterauDatabaseControl.

Unmessageinvitantsauvegarderunfichiercontenantunecldechiffrage.

VouspouvezensuitevousconnecterauDatabaseControlenutilisantlURLindiqueparlutilitaire.
Sibesoin,vouspouvezutiliserlappelemca -reconfig portspourmodifierlesportsutilissparleDatabaseControl.
Lutilitaire emca peut aussi tre utilis dans un mode non interactif, soit en spcifiant les valeurs dans la ligne de
commande,soitenutilisantunfichierderponseavecloption-respFile.Pourplusdinformationssurcesdiffrentes
possibilits,vouspouvezconsulterladocumentation"OracleDatabaseUtilities".

12.Rsum :crireunscriptdecrationdunebasededonnes
En utilisant les caractristiques de chaque systme dexploitation, il est facile dcrire des scripts plus ou moins
paramtrspermettantdautomatiserlacrationdunenouvellebasededonnes.

- 24 -

ENI Editions - All rights reserved - Algeria Educ

VoustrouverezdesexemplesdescriptspourlesplatesformesWindowsetUnix/LinuxsurlessitesdesEditionsENI.

13.Retrouverdesinformationssurlabasededonnes
LesvuesV$DATABASEetDATABASE_PROPERTIESpermettentderetrouverdesinformationssurunebasededonnes.
LescolonnesintressantesdelavueV$DATABASEsontlessuivantes :
NAME
Nomdelabasededonnes.
CREATED
Date/heuredecrationdelabasededonnes.
LOG_MODE
Modedefonctionnementvisvisdelarchivage(ARCHIVELOGouNOARCHIVELOG).
FORCE_LOGGING
YES ouNOselonquelemodeFORCE LOGGINGestactifounon.
PLATFORM_NAME
Nomdelaplateforme.
DB_UNIQUE_NAME
Nomuniquedelabasededonnes.
LavueDATABASE_PROPERTIEScontientdesinformationssurlespropritsdelabase.Lesprincipalescolonnesdecette
vuesontlessuivantes :
PROPERTY_NAME
Nomdelaproprit.
PROPERTY_VALUE
Valeurdelaproprit.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 25 -

Crationdelabasededonneslaidedelassistantgraphique
1.Vuedensemble
LassistantConfigurationdebasededonnespermetde :

crerunenouvellebasededonnes,partirdemodlespouvantcomporterdesfichiersdedonnesprts
lemploi

modifierlesoptionsinstallesdansunebasededonnes

supprimerunebasededonnes

crerdesmodles

configurerASM.

Lassistant cre des structures de stockage complmentaires (que nous verrons dans les chapitres Gestion des
tablespacesetdesfichiersdedonnesetGestiondesinformationsdannulation).
Lassistantpeuttrelancpartirdune fentre du systme dexploitationparlacommandedbca. Sur plateforme
Windows, lassistant peut aussi tre lanc par le menu Dmarrer Programmes Oracle nom_oracle_home
OutilsdeconfigurationetdemigrationAssistantConfigurationdebasededonnes.
Un cran de bienvenue saffiche cliquez sur le bouton Suivant pour afficher lcran proposant les diffrentes
oprations :

Lesoptionssontlessuivantes :
Crerunebasededonnes
Permetdecrerunenouvellebasededonnes(voirciaprs).
Configurerlesoptionsdebasededonnes

ENI Editions - All rights reserved - Algeria Educ

- 1-

Permetdemodifierlemodedeconnexionpardfautdelabasededonnes(serveurddiouserveurpartag)et
dinstalleroudesupprimerdesoptionssupplmentairesdanslabasededonnes.
Supprimerunebasededonnes
Permetdesupprimerunebasededonnes.
Grerlesmodles
Permetdecrer,modifieretsupprimerdesmodles(voirciaprs).
ConfigurerAutomaticStorageManagement
PermetdeconfigureruneinstancepourutiliserlesystmedestockageASM.
SlectionnezloptionsouhaiteetcliquezsurleboutonSuivant.
Lassistant peut tre utilis en mode non interactif en utilisant un fichier de rponse. Pour plus dinformations,
consultezladocumentation"OracleDatabaseInstallationGuide"devotreplateforme.

2.Crationpartirdunmodleavecfichiersdedonnes
Les modles avec fichiers de donnes permettent de crer une nouvelle base trs rapidement. Par contre, cette
dernireinclutungrandnombredoptionspasforcmentutilespourtouteslesapplications.
Unmodleavecfichiersdedonnesestenquelquesorteunclonedebasededonnes(une"sauvegarde")quipeut
dj contenir les objets dune application, avec ventuellement des donnes (donnes dans des tables de
nomenclatureparexemple).Labasededonnescreavecunmodledecegenreestprtelemploi.
Choixdumodle

Enstandard,lassistantproposetroismodles,dontdeuxincluentdesfichiersdedonnesprtslemploi avecce
genredemodle,loprationdecrationdunenouvellebaseesttrsrapidecarilnestpasncessairedecrerles
fichiers,dexcuterlesscripts,etc.LemodleDataWarehousepermetdecrerunebasededonnespluttoriente
application dcisionnelle. Le modle Usage gnral ou traitement transactionnel permet de crer une base de
donnes pour une activit mixte ou orienteapplication de saisiecest le modle choisi pour la suite. Le modle

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Base de donnes personnalise ne comporte pas de fichiers de donnes ils devront donc tre spcifis et crs
(cration de base complte). Nous verrons lutilisationdun tel modle au point Cration partir dun modle sans
fichierdedonnesdecettesection.
LeboutonAfficherlesdtails...permetdafficherdesinformationssurlesmodles.
Slectionnezlemodle(Usagegnraloutraitementtransactionnelpourlasuite)etcliquezsurleboutonSuivant.
Identificationdelanouvellebase

Sur cet cran, saisissez le Nom global de la base de donnes (sous la forme DB_NAME.DB_DOMAIN) et le SID de
linstance,puiscliquezsurleboutonSuivant.
Optionsdegestion

ENI Editions - All rights reserved - Algeria Educ

- 3-


Sur cet cran, indiquez si vous souhaitez que la base de donnes soit gre ou non par le Database Control,
saisissezventuellementlesinformationsdemandespourlanotificationetlasauvegarde(peuttrefaitplustard
dans le Database Control) puis cliquez sur le bouton Suivant. Si vous choisissez dadministrer la base avec le
Database Control, lassistant effectuera la configuration ncessaire (rfrentiel, rpertoires, service sur plateforme
Windows).
Motsdepasse

Surcetcran,saisissezlesmotsdepassedesdiffrentscomptespuiscliquezsurleboutonSuivant.Utiliserlemme
mot de passe pour les diffrents comptes est pratique dans un environnement de test mais, dconseill en
- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

production.
Optionsdestockage

Surcetcran,indiquezlesystmedestockagechoisipourlabasededonnespuiscliquezsurleboutonSuivant.
Danscetouvrage,seullestockagedansunsystmedefichiersesttudi.
Emplacementdesfichiersdelabasededonnes

ENI Editions - All rights reserved - Algeria Educ

- 5-

Sur cet cran, indiquez lemplacement des fichiers de la base de donnes puis cliquez sur le bouton Suivant. En
cliquant sur le bouton Variables demplacement de fichier... vous pourrez dfinir des variables contenant des
cheminsdaccs,quipourronttreutilisesdanslaspcificationdelemplacementdesfichiers.
Configurationdelarcupration

Sur cet cran, saisissez lemplacement (paramtre DB_RECOVERY_FILE_DEST) et la taille (paramtre


DB_RECOVERY_FILE_DEST_SIZE) de la zone de rcupration rapide, indiquez si vous souhaitez activer ds le dpart
larchivagedesfichiersdejournalisation,puiscliquezsurleboutonSuivant.Sivousactivezlarchivagedesfichiersde
journalisation, vous pouvez cliquer sur le bouton Activer les paramtres du mode darchivage... pour dfinir la
destinationdesarchives,leformatdesnomsdarchives,etc.(touslesparamtresLOG_ ARCHIVE_*).
Contenudelabasededonnes

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Sur cet cran, indiquez si vous souhaitez installer les schmas dexemple fournis par Oracle (premier onglet) et/ou
excuter des scripts personnels (deuxime onglet), puis cliquez sur le bouton Suivant. Les schmas dexemple
peuvent tre installs ultrieurement (scripts stocks dans le rpertoire %ORACLE_HOME%\demo\schema ou
$ORACLE_HOME/demo/ schema).
Paramtresdinitialisation

Lesquatreongletsdecetcranpermettentdespcifierlesvaleursdeplusieursparamtresdinitialisation.Lebouton
Touslesparamtresdinitialisation...permetdeconsultertouslesparamtresutilissetsibesoindelesmodifier.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Notezquelassistantutilisesystmatiquementunfichierdeparamtresserveur.
LongletMmoirepermetderglerlesparamtresrelatifslammoire.SiloptionStandardestslectionne,vous
pouvezmodifierlaquantitdemmoireallouelinstance(SGAetPGA).SiloptionUtiliserlagestionautomatique
de la mmoire est coche, lassistant active la gestion automatique de la mmoire (paramtre
MEMORY_TARGET) sinon,lassistantactivelagestionautomatiquedelammoirepartageetcalculeunerpartition
SGA/PGAenfonctiondutypedebasededonnesdumodle(dcisionnelouusagegnral) :lesvaleurscalcules
peuvent tre visualises grce au bouton Afficher la rpartition de la mmoire.... Si loption Personnalis est
choisie,vouspouvezactiverounonlagestionautomatiquedelammoirepartage(menudroulantGestiondela
mmoire).Silagestionautomatiquedelammoirepartageestactive,lassistantvousdemanderajustedesaisir
latailledelaSGA(paramtre<$I[]SGA_TARGET>SGA_TARGET)<etlatailledelaPGA(paramtrePGA_AGGREGATE_TARGET).
Silagestionautomatiquedelammoirepartagenestpasactive,vouspourrezdimensionnerindividuellementles
diffrentesstructuresdelammoire.
LongletDimensionnement permet de dfinir le nombre maximum de processus (paramtrePROCESSES).Lataillede
bloc (paramtre DB_BLOCK_SIZE) ne peut pas tre modifie car le modle inclut les fichiers de donnes et ceuxci
utilisentdjunecertainetailledebloc.
LongletJeux de caractrespermetdechoisirlesjeuxdecaractres(clauseCHARACTER SET etNATIONAL CHARACTER
SET de lordre SQL CREATE DATABASE), le langage par dfaut (paramtreNLS_LANGUAGE) et le territoire par dfaut
(paramtreNLS_ TERRITORY).
Longlet Mode de connexion permet de choisir le mode de connexion par dfaut de la base de donnes (serveur
ddi ou serveur partag) et ventuellement dindiquer le nombre de processus serveurs partags, lancer au
dmarragedelinstance(paramtreSHARED_ SERVERS).
Aprsavoirsaisilesinformationsrequisessurlesdiffrentsonglets,vouspouvezcliquersurleboutonSuivant.
Paramtresdescurit

Sur cet cran, vous pouvez choisir dutiliser ou pas les nouveaux paramtres de scurit apparus en version 11
(notamment les mots de passe sensibles la casse paramtre SEC_CASE_SENSITIVE_LOGON). A priori, il est
recommand dutiliser ces nouveaux mcanismes de scurit (voir le chapitre Gestion des utilisateurs et de leurs
droits).
Aprsavoirslectionnunedesdeuxoptions,vouspouvezcliquersurleboutonSuivant.
Tchesdemaintenanceautomatique

- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Sur cet cran, vous pouvez choisir dactiver ou pas les tches de maintenance automatiques prvues en standard
(collectedesstatistiques,conseilsurlestockagedessegments,conseilsurloptimisationdesrequtesSQL).Apriori,
ilestrecommanddactivercestchesautomatiquesqui,sontraliseslanuitetleweekend,avecunfaibleimpact
surlesperformancesduserveur.Lesparamtresdecestchesdemaintenance,notammentlaplanification,peuvent
tremodifisdansleDatabaseControl(cf.sectionLadocumentationOracleduchapitreLesoutilsdadministration).
Aprsavoireffectuvotrechoix,vouspouvezcliquersurleboutonSuivant.
Stockagedelabasededonnes
Lcransuivantpermetdespcifierlesfichiersdelabasededonnes :fichierdecontrle,fichiersdejournalisationet
fichiersdedonnes.

ENI Editions - All rights reserved - Algeria Educ

- 9-


Le dossier Fichier de contrle permet de configurer les fichiers de contrle (paramtre CONTROL_FILES). Longlet
OptionspermetdedfinirlavaleurdesoptionsMAX*(MAXDATAFILES,etc.)delordreSQLCREATE DATABASE.

LedossierFichiersdedonnespermetdemodifierlemplacementetlenomdesfichiersdedonnes.Parcontre,dans
le cas de lutilisationdun modle avec fichiers de donnes (comme ici), il nest pas possible ( ce stade) dajouter
dautrestablespacesetfichiersdedonnes,oudemodifierlatailledesfichiersdedonnesexistants cesoprations
pourronttrefaitesultrieurementdansleDatabaseControl.

- 10 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Le dossier Groupes de fichiers de journalisation permet de configurer les fichiers de journalisation :
ajouter/supprimerdesgroupes,ajouterdesmembresdanslesgroupes,modifierlatailledesgroupes.
Aprsavoirsaisilesinformationsrequises,vouspouvezcliquersurleboutonSuivant.
Optionsdecration

Sur cette page, indiquez si vous souhaitez crer la base immdiatement et/ou enregistrer les options dans un
nouveaumodleet/ougnrerlesscriptsdecrationdelabasededonnes,puiscliquezsurleboutonTerminer.

ENI Editions - All rights reserved - Algeria Educ

- 11 -

La troisime option est un moyen pratique pour gnrer des scripts de cration de base de donnes que vous
pourrezensuitemodifier,paramtreretrutiliser.
Confirmation
UnrcapitulatifestaffichlorsquevouscliquezsurleboutonTerminer.
CliquezsurleboutonOKpourlancerlopration.
Durantlacrationdelabasededonnes,unefentreafficheuntatdavancement.
Lorsquelacrationdelabasededonnesesttermine,unefentredonnantquelquesinformationssaffiche :

CettefentredonnenotammentlURLutiliserpourseconnecterauDatabaseControl.
Lassistant cre automatiquement un nom de service rseau pour la nouvelle instance dans le fichier
tnsnames.ora. Par contre, la configuration du processus dcoute nest pas modifie linstance nest pas
enregistredemanirestatiqueauprsduprocessusdcoute.
Sur plateforme Unix/Linux, lassistant ajoute automatiquement une entre pour la nouvelle instance dans le
fichier/etc/oratab parcontre,linstancenestpaspositionneenredmarrageautomatique.

3.Crationpartirdunmodlesansfichierdedonnes
Si vous utilisez un modle sans fichier de donnes, vous pourrez contrler plus finement les options installes et
lassistant effectue une cration complte (CREATE DATABASE, catalog, catproc, etc.). La cration de la base de
donnesestdoncpluslonguequelorsdelutilisationdunmodleavecfichiersdedonnes.
Dans cette section, nous ne prsentons que les crans supplmentaires ou diffrents de ceux prsents
prcdemment.
Nouvelletape :contenudelabasededonnes

- 12 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Cet cran permet de slectionner les fonctionnalits installer dans la base de donnes chaque option se
matrialise par lexcution dun script supplmentaire qui rallonge la dure de cration de la base. Ces options
peuventtreinstallesultrieurement,notammentvialoptionConfigurerlesoptionsdebasededonnespropose
surlepremiercrandelassistant.
LongletScriptspersonnalisspermetdedsignerdesscriptscomplmentairesexcuterlorsdelacration.
Le boutonComposants de base de donnes standard... affiche un cran qui permet de dsactiver quatre options
installes par dfaut par Oracle : la machine virtuelle Java, loption Multimedia (anciennement interMedia), la
fonctionnalit Oracle XML DB et Application Express (un environnement de dveloppement rapide Web intgr la
basededonnes).Oracleconseilledelaissercesquatreoptions.
Paramtresdinitialisation

Surledeuximeonglet,latailledeblocpeuttrespcifie(paramtreDB_BLOCK_SIZE).
Stockagedelabasededonnes

ENI Editions - All rights reserved - Algeria Educ

- 13 -


Destablespacesetdesfichiersdedonnespeuventtreajouts,supprimsetmodifis(taillenotamment).

4.Grerlesmodles
Lassistant permet de dfinir des modles de base de donnes personnaliss, pouvant ventuellement inclure des
fichiersdedonnesprtslemploi.
Lepremiercrandelagestiondesmodlespermetdechoisirloprationraliser,crationousuppression.

- 14 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Plusieursoptionssontproposespourlacration.
Loption A partir dun modle existant permet de choisir un modle puis de drouler les diffrentes tapes de la
crationpourmodifierlesoptionssouhaites(commepourunecrationdebasededonnes).
LoptionA partir dune base de donnes existante (structure seulement)permetdereprendrelastructuredune
basededonnesexistante,maissansinclurelesfichiersdelabasededonnes.
LoptionApartirdunebasededonnesexistante(structureetdonnes)permetdereprendrelastructuredune
basededonnesexistanteaveclesfichiersdedonnes(etdonclesdonnesquisontstockesdedans) :cesten
quelque sorte un clone de la base de donnes dorigine qui pourra tre utilis pour crer une nouvelle base de
donnesidentique(saufmodificationsdeconfigurationeffectueslorsdelacrationdelabasededonnes :nom,
tailledelaSGA,etc.).
Les modles sont stocks par dfaut dans le rpertoire %ORACLE_HOME%\assistants\ dbca\templates (plateforme
Windows)ou$ORACLE_HOME/assistants/dbca/ templates(plateformeUnix/Linux).
Un modle avec fichiers de donnes est compos de trois fichiers : un fichier XML .dbcquicontientladfinitiondu
modle,unfichier.ctlquiestunecopiedufichierdecontrledelabasededonnesetunfichier.dfbquicontient
les fichiers de donnes. Un modle sans fichiers de donnes comporte un seul fichier XML .dbt qui contient la
dfinition du modle. Notez que les fichiers Seed_Database.ctl et Seed_Database.dfb sont communs aux deux
modlesavecfichiersdedonnesfournisparOracle.
Pour crer une base de donnes partir du modle sur un autre serveur, il suffit de copier les fichiers du modle
danslerpertoiretemplatesduserveur,puisdelancerlassistant.
Unmodleavecfichiersdedonnescrsuruneplateforme(Windowsparexemple)nepeutpastreutilis
sur une autre plateforme (Unix par exemple). Il nen est pas de mme pour les modles sans fichiers de
donnes.

ENI Editions - All rights reserved - Algeria Educ

- 15 -

PrsentationdOracle11g
1.Introduction
Cet ouvrage prsente ladministration dOracle Database 11g, qui sera le plus souvent dsigne par le terme
"Oracle11g".
Oracle Database 11g est un Systme de Gestion de Bases de Donnes Relationnelles (SGBDR) disponible sur un
grandnombredeplatesformes(Unix,Linux,Windows).Dupointdevuedeladministration,lesdiffrencesentreles
platesformessontminimes.
Oracle11gestcommercialisselontroisgammes:

EditionEntreprise(EnterpriseEdition)

EditionStandard(StandardEdition)etEditionStandardOne(StandardEditionOne)

EditionPersonnelle(PersonalEdition),surplateformeWindowsuniquement.

Ldition Standard comporte toutes les fonctionnalits de base permettant de mettre en uvre des applications
clientserveur ou Internet/Intranet, pour un groupe de travail ou un dpartement dentreprise. Cette dition ne
permetpasdefairefonctionnerlesoptionsavancesdOracle11g(voircidessous)etestlimitedesserveursou
desclustersdeserveursavecunecapacitmaximalede4processeurs.Depuisquelquestemps,Oraclecommercialise
aussi une dition Standard One, fonctionnellement identique ldition Standard, mais limite des serveurs bi
processeurs.
Ldition Entreprise est plus particulirement destine aux applications critiques de lentreprise et propose des
fonctionnalitssupplmentaires,enstandardouenoption,permettantdamliorerladisponibilitetlescapacitsde
monteenchargedesgrossesbasesdedonnes,etdenfaciliterladministrationetloptimisation.titredexemple:

Oracle Real Application Clusters (RAC) : permet dutiliser Oracle sur des serveurs en cluster (haute
disponibilit,rpartitiondecharge).
OraclePartitioning:permetdesubdiviserlestockagedesgrosobjets(tablesetindex)enplusieurslments
appelspartitions.
Advanced Security Option : offre des fonctionnalits avances sur la gestion de la scurit (cryptage,
authentification,etc.).
Oracle Tuning Pack : module dadministration permettant de faciliter loptimisation des performances de la
basededonnes.
OracleOLAPetOracleDataMining:fonctionnalitsdestineslamiseenplacedesystmesdcisionnels.
Total Recall (nouveau en version 11g) : solution permettant le stockage sur le long terme de donnes
historiques.
Real Application Testing (nouveau en version 11g) : permet de capturer lactivit relle dune base de
donnesetderejouercetteactivitsurunautresystme.
Advanced Compression (nouveau en version 11g) : permet la compression de tout type de donnes
(structuresetnonstructures).

OracleRealApplicationClustersestuneoptiondelditionEntreprisemaisestincluse,avecquelquespetites
contraintes,danslditionStandard(pasStandardOne) !
LditionPersonnelleestuneversionmonolicenceduproduit,particulirementdestineaudveloppeurelleoffrele
mmeniveaudefonctionnalitquelditionEntreprise.
Les bases de larchitecture et de ladministration sont les mmes pour les trois ditions. Sauf exception, les
fonctionnalits prsentes dans cet ouvrage sont communes aux trois ditions toute fonctionnalit ncessitant

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

lditionEntrepriseseraclairementsignale.
Les diffrents produits Oracle peuvent tre tlchargs sur le site Oracle Technology Network
(http://www.oracle.com/technology/index.html) ils peuvent tre utiliss gratuitement pour le dveloppement ou le
prototypageduneapplication(maispaspourlutilisationduneapplication).

2.Principalesnouveautsdelaversion11
Laversion11apporteungrandnombredenouveautsetdamliorationsdansdenombreuxdomaines.Pournen
citerquequelquesunes :

- 2-

Installationetmiseniveausimplifies.

Gestioncompltementautomatiquedelammoiretotaleutiliseparlinstance.

Compressiondestables,mmedansunenvironnementtransactionnel.

Gestionsimplifiedesparamtresdinitialisation(SPFILE).

Gestionautomatiquedelannulationactivepardfaut.

Gestionsimplifiedelespacetemporaire.

Nouveaucachepourstockerlersultatdesrequtes.

Configurationdelabasededonnes,pardfaut,plusscurise.

Nouveaurfrentielpourfaciliterlediagnosticdesincidents(AutomaticDiagnosticRepository).

Assistantpourlarcuprationdesdonnes(DataRecoveryAdvisor).

AmliorationdelagestiondesfichiersdejournalisationarchivsdansRMAN(RecoveryManager).

AmliorationdesperformancesdessauvegardescompressesdansRMAN.

Extensiondestechniquesdeflashbacklannulationdunetransactionvalide(FlashbackTransaction).

BasededonnestransportableentreLinuxetWindows.

Amliorationdeladtectiondesblocscorrompus.

Amliorationdelacrationetdelarcuprationdunesauvegardedelongterme.

Sauvegardeetrestaurationparalllisedestrsgrosfichiersdedonnes.

Indexinvisibles.

Tablesenlectureseule.

CompressiondelatotalitdufichierdexportgnrparDataPump.

ChiffragedufichierdexportgnrparDataPump.

Colonnesvirtuelles.

OprateursPIVOTetUNPIVOT.
ENI Editions - All rights reserved - Algeria Educ

NouvelassistantpourrsoudreunproblmerelatifunordreSQL(SQLRepairAdvisor).

AmliorationdelinterfaceutilisateurdOracleEnterpriseManagerDatabaseControl.

UtilisationduLogMinertraverslinterfacegraphiquedOracleEnterpriseManagerDatabaseControl.

Chiffrageduntablespace.

Bienvidemment,cettelistenestpasexhaustive.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Gestiondesparamtresdinitialisation
1.Modifierlesparamtresdinitialisation
a.Lestypesdeparamtres
Lesparamtrespeuventtreclasssendeuxcatgories :

lesparamtresdynamiques

lesparamtresstatiques.

Les paramtres dynamiques peuvent tre modifis par un ordre SQL alors que linstance est en cours de
fonctionnement.Selonlescas,leparamtreestmodifiableauniveaudelasessionet/oudusystme(pourtoutes
lessessions).Auniveausystme,lamodificationpeuttreimmdiate(sappliqueauxsessionsactuelles)oudiffre
(sappliqueauxsessionsfuturesuniquement).
Les paramtres statiques ne peuvent pas tre modifis dynamiquement alors que linstance est en cours de
fonctionnement ilfautmodifierlavaleurduparamtredanslefichierdeparamtresetredmarrerlinstance.
LescolonnesISSES_MODIFIABLEetISSYS_MODIFIABLEdelavueV$PARAMETERdonnentdesinformationssurletypede
paramtre. La colonne ISSES_MODIFIABLE vaut TRUE ou FALSE selon que le paramtre est modifiable ou non au
niveau de la session. La colonne ISSYS_MODIFIABLE vautFALSE si le paramtre nest pas modifiable au niveau du
systme,etDEFERREDouIMMEDIATEselonquilestmodifiableendiffrouimmdiatement.

LesdiffrentsparamtressontdcritsdansladocumentationOracleDatabaseReference.

b.LesordresSQLALTERSYSTEMetALTERSESSION
Les ordres SQL ALTER SESSION etALTER SYSTEM permettent de modifier dynamiquement la valeur des paramtres
dinitialisation,respectivementauniveaudelasessionetdusystme.
Syntaxesimplifie :
ALTER SESSION SET paramtre = valeur [...] ;
ALTER SYSTEM SET paramtre = valeur [...] [ COMMENT = texte ]
[ DEFERRED ] [ SCOPE = MEMORY | SPFILE | BOTH ] ;
Options :
paramtre
Nomduparamtre.
valeur
Valeurattribueauparamtre.
COMMENT = texte
Commentaireassocilamodificationduparamtre.Insrdanslefichierdeparamtresserveursicedernierest
lacibledelamodification(voirlaclauseSCOPE) visibledanslacolonneUPDATE_ COMMENTdelavueV$PARAMETERsila
mmoireestlacibledelamodification(voirlaclauseSCOPE).
DEFERRED
Siprsente,indiquequelamodificationneconcernequelesfuturessessions,pascellesactuellementconnectes.
Nadesensquesilammoireestlacibledelamodification(voirlaclauseSCOPE).Peuttreobligatoirepourcertains
paramtres(ceuxdontlacolonneISSYS_MODIFIABLEvautDEFERREDdanslavue$PARAMETER).

ENI Editions - All rights reserved - Algeria Educ

- 1-

SCOPE
Dfinitlacibledelamodification :
MEMORY : lammoireseulement(instanceencours).
SPFILE : lefichierdeparamtresserveurseulement.
BOTH : lesdeux.
LaclauseSCOPE = SPFILEnepeuttrespcifiequesilinstanceadmarravecunfichierdeparamtresserveur.
La modification sapplique uniquement au fichier de paramtres serveur et nest pas prise en compte
immdiatement elleserapriseencompteuniquementauprochaindmarrage.Cestlaseuleoptionpossiblepour
lesparamtresstatiques.
La clause SCOPE = MEMORY sapplique uniquement la mmoire (instance en cours) et est prise en compte
immdiatement. La modification ne survit pas larrt de la base. Cette option nest pas autorise pour les
paramtres statiques. Cest la seule option possible si linstance a dmarr avec un fichier de paramtres
texte cestlavaleurpardfautdanscecas.
LaclauseSCOPE = BOTHsappliquelammoire(instanceencours)etestpriseencompteimmdiatement(aspect
MEMORY). La modification est persistante dans le fichier de paramtres serveur (aspect SPFILE).Cetteoptionnest
pasautorisepourlesparamtresstatiques(aspectMEMORY).Ellenepeuttrespcifiequesilinstanceadmarr
avec un fichier de paramtres serveur (aspect SPFILE). Cette option nest pas autorise pour les paramtres
statiques(aspectMEMORY).
Exemple :
Modificationdunparamtreuniquementdanslefichierdeparamtresserveur :
SQL> ALTER SYSTEM SET PROCESSES = 200
2 COMMENT = Modif. OH du 10/07/2008
3 SCOPE = SPFILE;
Systme modifi.
Modificationdunparamtreenmmoireetdanslefichierdeparamtresserveur :
SQL> ALTER SYSTEM SET MEMORY_TARGET = 500M
2 COMMENT = Modif. OH du 10/07/2008
3 SCOPE = BOTH;
Systme modifi.
Sivousutilisezunfichierdeparamtresserveur(conseill)etquevoussouhaitezmodifierunparamtrestatique,
procdezdelamaniresuivante :

ModifiezleparamtreaveclordreSQLALTER SYSTEMetlaclauseSCOPE=SPFILE.

Redmarrezlinstance(SHUTDOWN IMMEDIATEpuisSTARTUP).

Si linstance est arrte et que vous souhaitez modifier un paramtre statique pour le prochain dmarrage, vous
devezdabordfaireunSTARTUP(NOMOUNTsuffit),avantde modifierleparamtreparlordreSQLALTER SYSTEMetde
redmarrer.LordreSQLALTER SYSTEMncessitequelinstancesoitdmarre.
Pour supprimer un paramtre du fichier de paramtres serveur, vous pouvez utiliser une variante de lordre SQL
ALTER SYSTEM.
Syntaxesimplifie :
ALTER SYSTEM RESET paramtre [ SCOPE = SPFILE ] ;
Options :
paramtre
Nomduparamtre
LaclauseSCOPE = SPFILEestoptionnelle cestlaseuleautorise.Aprslasuppression,auprochaindmarrage,la
valeur par dfaut du paramtre sera utilise. Les ordres SQL ALTER SYSTEM de modification de paramtres sont
enregistrsdanslefichierdalertedelinstance.

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

2.Lesparamtresdansledictionnairededonnes
Plusieursvuesdudictionnairepermettentdevisualiserlesparamtres :

V$SYSTEM_PARAMETER : valeuractuelledesparamtresdanslinstance.
V$SYSTEM_PARAMETER2 : mmechosequeV$SYSTEM_PARAMETERmaisavecunaffichagesurplusieurslignesdes
paramtresquiontunelistedevaleurs(commeleparamtreCONTROL_FILESparexemple).
V$PARAMETER et V$PARAMETER2 : mme contenu que les vues V$SYSTEM_ PARAMETER et V$SYSTEM_PARAMETER2
maisaveclesvaleursactuellesdesparamtresdanslasessioncourante cesvuesdonnentdonclavaleur
desparamtresquionttventuellementmodifisdanslasession(parunALTER SESSION).
V$SPPARAMETER : contenu actuel du fichier de paramtres serveur actif le contenu de la vue est vide si
linstancenutilisepasdefichierdeparamtresserveur.

PrincipalescolonnesdesvuesV$SYSTEM_PARAMETER,V$SYSTEM_PARAMETER2,V$PARAMETERetV$PARAMETER2 :
NAME
Nomduparamtre(enminuscules).
VALUE
Valeurduparamtre.
DISPLAY_VALUE
Valeurduparamtredansunformatdaffichageplusconvivial(parexemple252Maulieude264241152).
ISDEFAULT
TRUEsileparamtreestgalsavaleurpardfaut,FALSEsinon.
ISSES_MODIFIABLE
TRUEsileparamtreestmodifiableauniveaudelasession,FALSEsinon.
ISSYS_MODIFIABLE
FALSEsileparamtrenestpasmodifiableauniveaudusystme,etDEFERREDouIMMEDIATEselonquilestmodifiable
endiffrouimmdiatement.
ISMODIFIED
Indiquesileparamtreatmodifidepuisledmarragedelinstance.MODIFIEDsimodifiauniveaudelasession
courante,SYSTEM_MODsimodifiauniveaudusystme,FALSEsinonmodifi.
ISDEPRECATED
TRUEsileparamtreestdprci(risquededisparatredansuneprochaineversion),FALSEsinon.
UPDATE_COMMENT
Commentaireassocilamodificationlaplusrcente(optionCOMMENTdelordreSQLALTER SYSTEM).
PrincipalescolonnesdelavueV$SPPARAMETER :
NAME

ENI Editions - All rights reserved - Algeria Educ

- 3-

Nomduparamtre(enminuscules).
VALUE
Valeurduparamtre.
DISPLAY_VALUE
Valeurduparamtredansunformatdaffichageplusconvivial(parexemple252Maulieude264241152).
ISSPECIFIED
TRUEsileparamtreestspcifidanslefichierdeparamtresserveur,FALSEsinon.
UPDATE_COMMENT
Commentaireassocilamodificationlaplusrcente(optionCOMMENTdelordreSQLALTER SYSTEM).
Notez que la vue V$SPARAMETER donne la valeur du paramtre dans le fichier de paramtres serveur la valeur
actuellepeuttrediffrentesileparamtreatmodifipourlinstancecouranteuniquement(SCOPE=MEMORY).
Exemple : comparaisonentreV$PARAMETERetV$SPPARAMETER
SQL> SELECT
2
p.name,
3
p.display_value
actuel,
4
sp.display_value
spfile
5 FROM
6
v$parameter
p,
7
v$spparameter
sp
8 WHERE
9
p.name = sp.name
10
AND
p.name = processes
11 /
NAME
ACTUEL
SPFILE
-------------------- -------------------- --------------processes
100
200
Dans SQL*Plus, les commandes SHOW PARAMETERS [chane] etSHOW SPPARAMETERS [chane] affichent la valeur des
paramtres respectivement dans la session courante et dans le fichier de paramtres serveur. Par dfaut, ces
commandes affichent la valeur de tous les paramtres. Si une chane est spcifie lors de lappel, ces commandes
affichentlavaleurdetouslesparamtresdontlenomcontientcettechane.
Exemple
SQL> SHOW PARAMETERS memory
NAME
-------------------------------hi_shared_memory_address
memory_max_target
memory_target
shared_memory_address

TYPE
----------integer
big integer
big integer
integer

VALUE
-----------0
500M
400M
0

3.Exporterunfichierdeparamtresserveur
UnfichierdeparamtresserveurpeuttrerexportauformattexteparlordreSQLCREATE PFILE.
Syntaxe
CREATE PFILE [ = nom_pfile ] FROM SPFILE [ = nom_spfile ];
Lefonctionnement(significationdesparamtres,valeurspardfaut,etc.)estlemmequepourlordreSQLCREATE
SPFILE (voir la section Cration dune base de donnes la main du chapitre Cration dune nouvelle base de
donnes).LutilisationdecetordreSQLncessitenotammentuneconnexionSYSDBAouSYSOPER.CetordreSQLpeut
treutilisinstancearrte !

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Exemple :
SQL> CREATE PFILE = d:\app\oracle\admin\HERMES\pfile\init.ora
2 FROM SPFILE;
Fichier cr.
Contenudufichier(extrait)
*.__db_cache_size=152M
...
*.__shared_pool_size=72M
...
*.db_name=HERMES
...
*.memory_target=524288000#Modif. OH du 10/07/2008
...
*.processes=200#Modif. OH du 10/07/2008
...
Ces lignes en gras correspondent des paramtres dont la valeur avait t modifie prcdemment avec loption
COMMENT. Le commentaire est prsent dans le fichier de paramtres serveur (voir aussi le contenu de la colonne
UPDATE_COMMENTdanslavueV$SPPARAMETER).
Dans loptique de lutilisationdun fichier de paramtres commun plusieurs instances (par exemple, avec loption
RAC RealApplicationClusters),lesparamtrespeuventtrespcifissouslaformeinstance.paramtre,lesymbole*
dsignant nimporte quelle instance (*.memory_target). Cette syntaxe est utilise lors de lexport dun fichier de
paramtresserveur.
Lefichierainsignrpeuttreutilisdesfinsdesimpleconsultationoudemodification,pourrecrerlefichierde
paramtresserveurpartirdufichierdeparamtrestextemodifi(laidedelordreSQL CREATE SPFILE ... FROM
PFILE), ou pour effectuer des dmarrages particuliers. Notez que si linstance a dmarr avec un fichier de
paramtresserveur,celuicinepeutpastreremplacalorsquilestencoursdutilisation vousdevezdoncarrter
labasededonnes(SHUTDOWN IMMEDIATE)avantderecrerlefichierdeparamtresserveurlaide de lordreSQL
CREATE SPFILE(quiluiaussifonctionneinstancearrte !).Depuislaversion11,ilestpossibledecrerunfichierde
paramtrestexteouunfichierdeparamtresserveurpartirdesvaleursdesparamtresactuellementenmmoire
(instanceencours).
Syntaxe
CREATE PFILE [ = nom_pfile ] FROM MEMORY;
CREATE SPFILE [ = nom_spfile ] FROM MEMORY;
LesprincipesdefonctionnementsontlesmmesquepourlesautresvariantesdesyntaxedecesdeuxordresSQL.

4.UtiliserleDatabaseControl
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienParamtresdinitialisation
(cadreConfigurationdebasededonnes)pouraccderlapagedegestiondesparamtresdinitialisation :

ENI Editions - All rights reserved - Algeria Educ

- 5-


SurlongletEncours,vouspouvezconsulteretmodifierlavaleuractuelledesparamtres.
Par dfaut, les modifications affectent uniquement linstance en cours (SCOPE=MEMORY). Pour affecter linstance en
coursetlefichierdeparamtresserveur(SCOPE=BOTH),cochezlacaseAppliqueraufichierSPFILElesmodifications
dans le mode des instances en cours dexcutionavantdecliquersurlebouton Appliquer.Seulslesparamtres
dynamiquessontmodifiables.
SurlongletFichierSPFILE,vouspouvezconsulteretmodifierlavaleurdesparamtresdanslefichierdeparamtres
serveur :

Par dfaut, les modifications affectent uniquement le fichier de paramtres serveur (SCOPE=SPFILE). Pour affecter
linstanceencoursetlefichierdeparamtresserveur(SCOPE=BOTH),cochezlacaseAppliquer les modifications en
mode SPFILE aux instances en cours dexcution avant de cliquer sur le bouton Appliquer. Si vous cochez cette
caseetquevousmodifiezunparamtrestatistique,leDatabaseControlvousproposeraderedmarrer(seulmoyen
pourappliquerlamodification"linstanceencours").

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Le bouton Rinitialiser permet de supprimer le paramtre slectionn du fichier de paramtres serveur (ALTER
SYSTEM RESET).

5.Problmescourantsetsolutions
a.Fichierdeparamtresserveurperduouendommag
Silefichierdeparamtresserveurestperduouendommag,vouspouvezauchoix :

Silinstanceestdmarre,lerecrerpartirdesvaleursdesparamtresactuellementenmmoire(CREATE
SPFILE FROM MEMORY).
Siunfichierdeparamtrestextevalideestdisponible,lerecrerpartirdecefichiertexte(CREATE SPFILE
FROM PFILE).
Lerestaurerpartirdunesauvegarde(voirlechapitreSauvegardeetrcupration).

Endernierressort,vouspouvezcrerunfichierdeparamtrestextelamainpuisrecrerlefichierdeparamtres
serveurpartirdecefichiertexte.Pourcrerlefichierdeparamtrestexte,vouspouvezcopiercollerlesvaleurs
desparamtresquisontcritesdanslefichierdalertedelinstancechaquedmarrage.
Exemple :
Starting up ORACLE RDBMS Version: 11.1.0.6.0.
Using parameter settings in server-side
spfile D:\APP\ORACLE\PRODUCT\11.1.0\DB_1\DATABASE\SPFILEHERMES.ORA
System parameters with non-default values:
processes
= 150
nls_language
= "FRENCH"
nls_territory
= "FRANCE"
memory_target
= 252M
...

b.Valeurerronequiempcheledmarrage
Une valeur errone dans le fichier de paramtres serveur peut empcher le dmarrage "normal" de la base de
donnes.
Deuxcaspeuventseproduire :

Linstancedmarremaislabasededonnesnepeutpastremonteououverte.

Linstancenedmarrepas.

Si linstance dmarre, vous pouvez modifier le paramtre erron, ou le supprimer, avec lordre SQLALTER SYSTEM
(SETouRESET).
Si linstance ne dmarre pas, vous pouvez crer un fichier de paramtres texte partir du fichier de paramtres
serveur(CREATE PFILE FROM SPFILE),corrigerlavaleurduparamtredanslefichierdeparamtretexte,puisrecrer
lefichierdeparamtresserveurpartirdufichiertexte(CREATE SPFILE FROM PFILE).Pourmmoire,lesordresSQL
CREATE PFILE et CREATE SPFILE fonctionnent mme si linstance nest pas dmarre (il faut juste une connexion
SYSDBA).

c.ErreurlorsdunALTERSYSTEM
ORA-02065: option interdite pour ALTER SYSTEM
Explication
Loptionspcifienestpassupporte.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Cause(s)
Lenomduparamtreestincorrect.
Action(s)
Vrifiezetcorrigezlenomduparamtre.
ORA-02095: Le paramtre dinitialisation indiqu ne peut pas tre modifi
Explication
Leparamtrenepeutpastremodifi.
Cause(s)
Leparamtreeststatiqueetnepeutpastremodifipourlinstanceencours.
Action(s)
UtilisezlaclauseSCOPE=SPFILE.
ORA-02096: Le paramtre dinitialisation indiqu ne peut pas tre modifi avec cette option
Explication
Leparamtreestmodifiablemaispasavecloptionutilise.
Cause(s)
VousnavezpasutilisloptionDEFERREDpourunparamtrequilencessiteoulinverse,vousavezutilisloption
DEFERREDpourunparamtrepourlequelcestinterdit.
Action(s)
ConsultezladocumentationduparamtreetcorrigezlordreSQL.
ORA-02097: le paramtre ne peut pas tre modifi, car la valeur indique nest pas valide
Explication
Leparamtreestmodifiablemaislavaleurestincorrecte.
Cause(s)
Enrglegnrale,cetteerreursurvientlorsquelavaleurspcifieesttropgrandeoutroppetite.
Action(s)
ConsultezladocumentationduparamtreetcorrigezlordreSQL.

- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Gestiondynamiquedelammoire
1.Principes
DepuisOracle9i,laSGAetlaPGAsontdynamiques.Ellespeuventtremodifiesdynamiquementalorsquelinstance
estencoursdefonctionnement,cestdireaugmentesoudiminues,sansdevoirarrterlabase.Deplus,depuis
Oracle10g, la mmoire partage peut tre gre automatiquement, et depuis Oracle11g, la totalit de la mmoire
(SGAetPGA)peutltreaussi(voirlasectionLinstanceduchapitreLesbasesdelarchitectureOracle).
Plusieurs paramtres relatifs la gestion de la mmoire (PGA ou SGA) sont modifiables dynamiquement par
lintermdiairedelordreSQLALTER SYSTEM:

MEMORY_TARGET

SGA_TARGET

DB_CACHE_SIZEetventuellementlesdiffrentsparamtresDB_nK_CACHE_SIZE(nvalant2,4,8,16ou32)

SHARED_POOL_SIZE

LARGE_POOL_SIZE

JAVA_POOL_SIZE

STREAMS_POOL_SIZE

RESULT_CACHE_MAX_SIZE

PGA_AGGREGATE_TARGET

SeulelatailleduRedoLogBuffer(paramtreLOG_BUFFER)nepeutpastremodifiedynamiquement(maissavaleur
pardfautestgnralementsatisfaisante).
LataillemaximumdelammoiredelinstanceestdfinieparleparamtreMEMORY_MAX _TARGETetlataillemaximum
delaSGAparleparamtreSGA_MAX_SIZE.Cesdeuxparamtresnesontpasdynamiquesetsontcalculs,pardfaut,
audmarragedelinstance,silsnesontpasdfinisdanslefichierdeparamtres.
Noubliezpasquetouteslesvaleursdesparamtresdedimensionnementdelammoiresontarrondiesau
granulesuprieur(lexceptionduparamtreRESULT_ CACHE_MAX_SIZEdontlavaleurestdfinieparpasde
32Ko).
Lors de la modification dynamique dune structure mmoire, vous pouvez obtenir un message derreur si la valeur
demandeesttropgrandeoutroppetite(cf.sectionGestiondynamiquedelammoire).

2.Informationssurlammoire
LacommandeSQL*PlusSHOW SGAoulavueV$SGAdonnedesinformationssynthtiquessurlatailledelaSGA.Dans
lesdeuxcas,laquantitSGA_MAX_SIZEestvirtuellementaffectelaSGA.
SQL> SELECT name,value,display_value FROM v$parameter
2 WHERE name IN (sga_target,sga_max_size,
3
memory_target,memory_max_target);
NAME
VALUE
DISPLAY_VALUE
-------------------- -------------------- ---------------sga_max_size
524288000
500M
sga_target
0
0
memory_target
419430400
400M
memory_max_target
524288000
500M

ENI Editions - All rights reserved - Algeria Educ

- 1-

SQL> SELECT name,value FROM v$sga


2 UNION ALL
3 SELECT *** TOTAL ***,SUM(value) FROM v$sga;
NAME
VALUE
-------------------- ---------Fixed Size
2145984
Variable Size
356516160
Database Buffers
159383552
Redo Buffers
3891200
*** TOTAL ***
521936896
LavueV$SGAINFOdonnedesinformationsplusdtaillessurlaSGA,etsavrelusageplusintressantequelavue
V$SGA.
SQL> SELECT name,ROUND(bytes/(1024*1024),1)
2 FROM v$sgainfo;
NAME
SIZE_MB
-------------------------------- ---------Fixed SGA Size
2
Redo Buffers
3.7
Buffer Cache Size
152
Shared Pool Size
72
Large Pool Size
4
Java Pool Size
4
Streams Pool Size
0
Shared IO Pool Size
0
Granule Size
4
Maximum SGA Size
497.8
Startup overhead in Shared Pool
44
Free SGA Memory Available
260

size_mb,resizeable
RES
--No
No
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No

Cette vue donne notamment la taille actuelle relle des diffrentes composantes de la SGA, ainsi que la taille du
granule (ligne Granule Size). Toutes les tailles sont en octets. La colonne RESIZEABLE indique si la taille de la
structurecorrespondantepeuttremodifiedynamiquement.
LaligneFree SGA Memory AvailabledonneladiffrenceentrelataillemaximumdelaSGA(SGA_MAX_SIZE)etlataille
actuelledelaSGA,etdonclaquantitdemmoiresupplmentairequipeuttreallouelaSGAencasdebesoin
(soit automatiquement, soit manuellement selon la configuration). Il faut noter que, dans le cas o la gestion
automatiquedelammoiredelinstanceestactive,cettemmoire"libre"inclutlaquantitdemmoireallouela
PGAetnestdoncpasrellementdisponibleentotalitpourlaSGA.
LammeinformationestdisponibledanslavueV$SGA_DYNAMIC_FREE_MEMORYquidonnelaquantitdemmoireSGA
disponiblepouruneoprationderedimensionnementdynamique(seuleetuniquecolonneCURRENT_SIZE).
Desinformationspluscompltessurlesstructuresdynamiquesdelammoire(SGAetPGA)sontdisponiblesdansla
vueV$MEMORY_DYNAMIC_COMPONENTS.Lesprincipalescolonnessontlessuivantes :
COMPONENT
Nomdelastructure.
CURRENT_SIZE
Tailleactuelledelastructure.
MIN_SIZE
Tailleminimumdelastructuredepuisledmarragedelinstance.
MAX_SIZE
Taillemaximumdelastructuredepuisledmarragedelinstance.
USER_SPECIFIED_SIZE
Valeuraffecteauparamtre.
LAST_OPER_TYPE
- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Informationsurladernireoprationralisesurlastructure(GROW,SHRINK,etc.).
LAST_OPER_MODE
Modedeladernireopration(MANUAL,IMMEDIATE,etc.).
LAST_OPER_TIME
Date/heuredeladernireopration.
GRANULE_SIZE
Tailledugranule.
Touteslestaillessontenoctets.
Exemple:
SQL> SELECT component,current_size/(1024*1024) current_mb
2 FROM v$memory_dynamic_components;
COMPONENT
CURRENT_MB
------------------------------ ---------shared pool
72
large pool
4
java pool
4
streams pool
0
SGA Target
240
DEFAULT buffer cache
152
KEEP buffer cache
0
RECYCLE buffer cache
0
DEFAULT 2K buffer cache
0
DEFAULT 4K buffer cache
0
DEFAULT 8K buffer cache
0
DEFAULT 16K buffer cache
0
DEFAULT 32K buffer cache
0
Shared IO Pool
0
PGA Target
160
ASM Buffer Cache
0
Parlintermdiairedecettevue,nouspouvonsvoirlaquantitdemmoireallouelaSGA(ligneSGA Target)etla
PGA(lignePGA Target),ainsiquelarpartitiondelaSGAentrecesdiffrentescomposantes.Surcetexemple,nous
voyons quil y a 8 Mo (2407244152), soit 2 granules, rservs pour les structures non dynamiques de la SGA
(RedoLogBufferetSGAfixe).
En complment, vous pouvez interroger la vue V$MEMORY_RESIZE_OPS pour avoir lhistorique des 800 dernires
oprationsderedimensionnementdelammoireetV$MEMORY_ CURRENT_RESIZE_OPSpouravoirdesinformationssur
unventuelredimensionnementencours.
Les vues V$MEMORY_* sont apparues en version 11 et tiennent compte de la PGA. Il existe des vues quivalentes,
apparues en version 10, mais limites la SGA : V$SGA_
DYNAMIC_COMPONENTS, V$SGA_RESIZE_OPS et
V$SGA_CURRENT_RESIZE_OPS.

3.Modifierlammoiredynamiquement
a.Aveclagestionautomatiquedelammoirepartage
Lorsque la gestion automatique de la mmoire partage est active (paramtre SGA_TARGET diffrent de zro), la
tailledelaSGApeuttremodifiedynamiquementenmodifiantlavaleurduparamtreSGA_TARGET.
La valeur de ce paramtre peut tre augmente jusqu la valeur du paramtre SGA_MAX_SIZE. Elle peut tre
diminue jusqu une valeur minimale dtermine par Oracle en tenant de diffrents lments, dont la taille que
vousavezventuellementaffecteauxcomposantesnonprisesenchargeparlagestionautomatique(paramtres
DB_nK_CACHE_SIZE par exemple) mais aussi de la taille minimale que vous avez pu dfinir pour les composantes
gresautomatiquement.

ENI Editions - All rights reserved - Algeria Educ

- 3-

LorsqueleparamtreSGA_TARGETestmodifi,seuleslescomposantesgresautomatiquementsontmodifies,et
la rpartition entre les diffrentes composantes est automatiquement dtermine par Oracle les composantes
gresmanuellementrestentinchanges.Encasdediminution,Oraclenedescendrapasendessousdelavaleur
minimalequevousavezpudfinirpouruneouplusieurscomposantes.
Sivouslesouhaitez,vouspouvezaussimodifierlavaleurdesparamtresgrsmanuellementet/oulavaleurdes
paramtresgrsautomatiquement(danscederniercasvousdfinissezalorsunminimumpourleparamtre).
Lecomportementestlesuivant :

Sivousdiminuezlavaleurdunparamtregrmanuellement,vousaugmentezimplicitementlaquantitde
mmoire disponible pour la gestion automatique la mmoire supplmentaire va tre automatiquement
rattribueauxparamtresgrsautomatiquement(Oracledcidedelarpartition).
Sivousaugmentezlavaleurdunparamtregrmanuellement,vousdiminuezimplicitementlaquantitde
mmoire disponible pour la gestion automatique cette quantit de mmoire va tre automatiquement
enleveauxparamtresgrsautomatiquement(Oracledcidedelarpartition).
Si vous diminuez la valeur dun paramtre gr automatiquement, vous ne diminuez en fait que la valeur
minimaledeceparamtre,maispassavaleuractuelle.Encasdebesoin,Oraclepourradiminuerlavaleur
actuelleduparamtrepourattribuerdelammoireuneautrestructure.Sivousmettezlavaleur0,vous
nimposezplusdeminimum.
Sivousaugmentezlavaleurdunparamtregrautomatiquement,vousaugmentezlavaleurminimalede
ceparamtre,maispassavaleuractuellesi,celleciestactuellementsuprieureaunouveauminimum.Par
contre,silenouveauminimumestsuprieurlavaleuractuelle,lavaleurestimmdiatementaugmente,
etOraclediminueencontrepartielesautresparamtresautomatiques(Oracledcidedelarpartition).

Exemple :
SQL> -- contenu du script memoire.sql
SQL> HOST more memoire.sql
COL component FOR A30
SELECT component,
current_size/1024/1024 current_size,
user_specified_size/1024/1024 user_specified_size
FROM
v$memory_dynamic_components
WHERE current_size 0
UNION ALL
SELECT *** LIBRE SGA ***,current_size/1024/1024,null
FROM
v$sga_dynamic_free_memory
/
SQL> -- situation de dpart
SQL> SELECT name,display_value FROM v$parameter
2 WHERE name IN (sga_target,sga_max_size);
NAME
DISPLAY_VALUE
--------------------- ----------------sga_max_size
300M
sga_target
252M
SQL> @memoire
COMPONENT
CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ------------------shared pool
72
0
large pool
4
0
java pool
4
0
SGA Target
252
252
DEFAULT buffer cache
164
0
PGA Target
64
64
*** LIBRE SGA ***
48
SQL> -- augmentation de SGA_TARGET 300M
SQL> ALTER SYSTEM SET SGA_TARGET = 300M;
Systme modifi.
SQL> @memoire
COMPONENT
CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ------------------shared pool
72
0

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

large pool
java pool
SGA Target
DEFAULT buffer cache
PGA Target
*** LIBRE SGA ***

4
4
300
212
64
0

0
0
300
0
64

SQL> -- affectation dune valeur DB_16K_CACHE_SIZE


SQL> -- et dun minimum SHARED_POOL_SIZE
SQL> ALTER SYSTEM SET
2
DB_16K_CACHE_SIZE = 32M
3
SHARED_POOL_SIZE = 96M ;
Systme modifi.
SQL> @memoire
COMPONENT
CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ------------------shared pool
96
0
large pool
4
0
java pool
4
0
SGA Target
300
300
DEFAULT buffer cache
156
0
DEFAULT 16K buffer cache
32
32
PGA Target
64
64
*** LIBRE SGA ***
0
SQL> -- diminution de SGA_TARGET
SQL> ALTER SYSTEM SET SGA_TARGET = 168M;
Systme modifi.
SQL> @memoire
COMPONENT
CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ------------------shared pool
96
96
large pool
4
0
java pool
4
0
SGA Target
168
168
DEFAULT buffer cache
24
0
DEFAULT 16K buffer cache
32
32
PGA Target
64
64
*** LIBRE SGA ***
132
Surcetexemple,nousvoyonsleschosessuivantes :

Lors de laugmentation de SGA_TARGET 300 Mo, la totalit de la mmoire supplmentaire est alloue au
BufferCache,etilnyaplusdemmoirelibrepourlaSGA.
Lors de laffectationdune valeur au paramtreDB_16K_CACHE_SIZE (gr manuellement) et dune valeur
SHARED_POOL_SIZE(minimumpuisqueleparamtreestautomatique),uncachepourlesblocsde16Koest
allou la valeur demande et la Shared Pool est augmente, car la valeur actuelle tait infrieure au
nouveauminimum.LeBufferCacheestdiminuenconsquence(plusdemmoirelibrepourlaSGA).
Lors de la diminution de SGA_TARGET 168 Mo, le Buffer Cache est diminu. Les autres paramtres ne
peuvent pas tre diminus : DB_16K_CACHE_SIZE est gr manuellement et les autres sont leur valeur
minimale.

b.Aveclagestionautomatiquedelammoire
Lorsque la gestion automatique de la mmoire est active (paramtre MEMORY_TARGET), la taille de la mmoire
alloue linstance (SGA et PGA) peut tre modifie dynamiquement en modifiant la valeur du paramtre
MEMORY_TARGET.
Lavaleurdeceparamtrepeuttreaugmentejusqulavaleurduparamtre MEMORY_ MAX_TARGET.Ilpeuttre
diminujusquunevaleurminimaledtermineparOracleentenantcomptedediffrentslments(commepour
lagestionautomatiquedelammoirepartage).
LorsqueleparamtreMEMORY_TARGETestmodifi,Oracledtermineunenouvellerpartitiondelammoireentrela
PGA (PGA_AGGREGATE_TARGET) et la SGA (SGA_TARGET), puis une nouvelle rpartition de la SGA entre ces diffrentes

ENI Editions - All rights reserved - Algeria Educ

- 5-

composantes,selonlesmmesrglesquepourlagestionautomatiquedelammoirepartage.
DupointdevuedelaSGA,lagestionautomatiquedelammoirenestquuneextensiondelagestionautomatique
de la mmoire partage. Toutes les rgles exposes prcdemment sur la modification des paramtres grs
manuellementetdesparamtresgrsautomatiquementdemeurentvalable(voirletitreprcdent).
En complment, si vous le souhaitez, vous pouvez aussi modifier la valeur des paramtres SGA_TARGET et
PGA_AGGREGATE_TARGET. Dans ce cas, SGA_TARGET et PGA_ AGGREGATE_TARGET imposent simplement un minimum
respectivementpourlaSGAetpourlaPGA.
Lecomportementestlesuivant :

Sivousaugmentezlavaleurde SGA_TARGETou PGA_AGGREGATE_TARGET,vousaugmentezlavaleurminimale


de ces paramtres, mais pas leur valeur actuelle si, celleci est actuellement suprieure au nouveau
minimum.Parcontre,silenouveauminimumestsuprieurlavaleuractuelle,lavaleurestimmdiatement
augmente, et Oracle diminue en contrepartie les autres paramtres automatiques (Oracle dcide de la
rpartition).
SivousdiminuezlavaleurdeSGA_TARGETouPGA_AGGREGATE_TARGET,vousnediminuezenfaitquelavaleur
minimale de ces paramtres, mais pas leur valeur actuelle. En cas de besoin, Oracle pourra diminuer la
valeuractuelleduparamtrepourattribuerdelammoireuneautrestructure.Sivousmettezlavaleur
0,vousnimposezplusdeminimum.

Parailleurs,noubliezpasqueleparamtrestatiqueSGA_MAX_SIZE,silestdfini,imposeunetaillemaximumpourla
SGA.
Exemple :
SQL> -- contenu du script memoire.sql
SQL> HOST more memoire.sql
COL component FOR A30
SELECT component,
current_size/1024/1024 current_size,
user_specified_size/1024/1024 user_specified_size
FROM
v$memory_dynamic_components
WHERE current_size 0
UNION ALL
SELECT *** LIBRE SGA ***,current_size/1024/1024,null
FROM
v$sga_dynamic_free_memory
/
SQL> -- situation de dpart
SQL> SELECT name,display_value FROM v$parameter
2 WHERE name IN (memory_target,memory_max_target);
NAME
DISPLAY_VALUE
--------------------- ----------------memory_target
400M
memory_max_target
500M
SQL> @memoire
COMPONENT
CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ------------------shared pool
72
0
large pool
4
0
java pool
4
0
SGA Target
240
0
DEFAULT buffer cache
152
0
PGA Target
160
0
*** LIBRE SGA ***
260
SQL> -- augmentation de MEMORY_TARGET 500M
SQL> ALTER SYSTEM SET MEMORY_TARGET = 500M;
Systme modifi.
SQL> @memoire
COMPONENT
CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ------------------shared pool
72
0
large pool
4
0
java pool
4
0
SGA Target
240
0
DEFAULT buffer cache
152
0
- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

PGA Target
260
0
*** LIBRE SGA ***
260
SQL> -- affectation dune valeur DB_16K_CACHE_SIZE
SQL> ALTER SYSTEM SET DB_16K_CACHE_SIZE = 32M;
Systme modifi.
SQL> @memoire
COMPONENT
CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ------------------shared pool
72
0
large pool
4
0
java pool
4
0
SGA Target
240
0
DEFAULT buffer cache
120
0
DEFAULT 16K buffer cache
32
32
PGA Target
260
0
*** LIBRE SGA ***
260
SQL> -- affectation dune valeur SGA_TARGET
SQL> ALTER SYSTEM SET SGA_TARGET = 300M;
Systme modifi.
SQL> @memoire
COMPONENT
CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ------------------shared pool
72
0
large pool
4
0
java pool
4
0
SGA Target
300
300
DEFAULT buffer cache
180
0
DEFAULT 16K buffer cache
32
32
PGA Target
200
0
*** LIBRE SGA ***
200
SQL> -- diminution de MEMORY_TARGET
SQL> ALTER SYSTEM SET MEMORY_TARGET = 352M;
Systme modifi.
SQL> @memoire
COMPONENT
CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ------------------shared pool
72
0
large pool
4
0
java pool
4
0
SGA Target
300
300
DEFAULT buffer cache
180
0
DEFAULT 16K buffer cache
32
32
PGA Target
52
0
*** LIBRE SGA ***
200
Surcetexemple,nousvoyonsleschosessuivantes :

LorsdelaugmentationdeMEMORY_TARGET500Mo,latotalitdelammoiresupplmentaireestalloue
laPGA.
LorsdelaffectationdunevaleurauparamtreDB_16K_CACHE_SIZE(grmanuellement),uncachepourles
blocsde16KoestalloulavaleurdemandeetleBufferCacheestdiminuenconsquence(commepour
lagestionautomatiquedelammoirepartage).
Lors de laffectation dune valeur (minimum) SGA_TARGET, la SGA est augmente immdiatement car la
valeur actuelle tait infrieure au nouveau minimum la quantit de mmoire supplmentaire est
intgralementalloueauBufferCache.
Lorsdeladiminutionde MEMORY_TARGET352Mo,laPGAestdiminue.LaSGAnepeutpastrediminue
carelleestlavaleurminimaleimposeparSGA_TARGET.

c.Sanslagestionautomatique

ENI Editions - All rights reserved - Algeria Educ

- 7-

Sivousnutilisezpaslagestionautomatiquedelammoirenilagestionautomatiquedelammoirepartage,les
modifications apportes aux paramtres sont immdiatement prises en compte, toujours dans la limite de
SGA_MAX_SIZEetMEMORY_MAX_TARGET(silestdfini).

d.Conclusionetconseil
Oracle recommande dutiliser la gestion automatique de la mmoire qui simplifie beaucoup le travail de
ladministrateur : il suffit juste de dfinir le paramtre MEMORY_TARGET (et ventuellement le paramtre
MEMORY_MAX_TARGET).
Sivousutilisezlagestionautomatiquedelammoire,ousimplementdelammoirepartage,ilfaut,parcontre,
viter dimposer trop de contraintes Oracle en donnant des valeurs minimums aux paramtres grs
automatiquement.
En interne, les paramtres __* (__db_cache_size par exemple) sont utiliss par les fonctionnalits de gestion
automatique. Ils donnent la quantit de mmoire actuellement alloue chaque structure gre
automatiquement le paramtre normal (non prfix par les deux caractres souligns) donne la valeur
minimale du paramtre, telle que vous avez pu la dfinir (0 sinon). La valeur de ces paramtres internes est
enregistredanslefichierdeparamtresserveur(silestutilis) encasderedmarrage,laconfigurationmmoire,
quitaitutiliseaumomentdelarrt(apriorioptimale),serartablie.

4.UtiliserleDatabaseControl
a.Accslapagedegestiondelammoire
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienFonctionsdeconseilsur
la mmoire (cadre Configuration de base de donnes) pour accder la page de gestion des paramtres de
mmoire.
Lecontenudelapagedpenddumodedegestiondelammoire.
PouraffecterunevaleurminimumunparamtredelaSGAgrautomatiquement,oupouraffecterune
valeur un paramtre de la SGA gr manuellement, vous devez passer par la page Paramtres
dinitialisation(cf.lasectionGestiondesparamtresdinitialisation).

b.Aveclagestionautomatiquedelammoire
Lorsquelagestionautomatiquedelammoireestactive,leDatabaseControlmontrelhistoriquedelarpartition
delammoireentrelaSGAetlaPGA.

- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Dansladeuximepartiedelcran,longletSGAaffichelarpartitiondelaSGAentrelesdiffrentescomposantes
(aveclhistoriquedelarpartition)etlongletPGA,quelquesinformationssurlaPGA:

ENI Editions - All rights reserved - Algeria Educ

- 9-


Danslapremirepartiedelafentre,lazoneTailletotaledemmoirepermetdemodifierlatailledelammoire
(paramtre MEMORY_TARGET)etlazone Taille maximale de mmoire, la taille maximum de la mmoire (paramtre
MEMORY_MAX_TARGET).

VouspouvezcocherlacaseAppliquerlesmodificationsuniquementaufichierSPFILE(toutenbasdelcran)si
voussouhaitezquelesmodificationsnaffectentquelefichierdeparamtresserveur(SCOPE=SPFILE).Pardfaut,les
modifications affectent linstance actuelle et le fichier de paramtres serveur (SCOPE=BOTH) le Database Control
vous proposera en consquence de redmarrer si vous modifiez la taille maximum de la mmoire (paramtre
statique). Cliquez sur le bouton Dsactiver si vous souhaitez dsactiver la gestion automatique de la mmoire.
Danslanouvelleconfiguration,lagestionautomatiquedelammoirepartageestactive.

c.Aveclagestionautomatiquedelammoirepartage
Lorsque la gestion automatique de la mmoire partage est active, le Database Control permet de rgler
sparmentlatailledelaSGAetlatailledelaPGA.

- 10 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Dans longlet SGA, le Database Control affiche la rpartition de la SGA entre les diffrentes composantes (avec
lhistorique de la rpartition). La zoneTaille totale de mmoire SGA (Mo) permet de modifier la taille de la SGA
(paramtreSGA_TARGET)etlazoneTaillemaximaledemmoireSGA(MB),lataillemaximumdelaSGA(paramtre
SGA_MAX_SIZE).

DanslongletPGA,leDatabaseControlaffichequelquesinformationssurlaPGA.LazoneCibledagrgationdela
mmoirePGApermetdemodifierlatailledelaPGA(paramtrePGA_AGGREGATE_TARGET).

ENI Editions - All rights reserved - Algeria Educ

- 11 -

LacaseAppliquerlesmodificationsuniquementaufichierSPFILEalemmerlequaveclagestionautomatique
delammoire.LeDatabaseControlvousproposeranotammentderedmarrersivousmodifiezlataillemaximum
delaSGA(paramtrestatique).
Enhautdelcran,vouspouvezcliquersurleboutonActiverpouractiverlagestionautomatiquedelammoire.Le
DatabaseControlvousinvitealorsrglerlatailledelammoire(paramtreMEMORY_TARGET)etlataillemaximum
delammoire(paramtreMEMORY_MAX_TARGET) :

linverse,danslongletSGA,vouspouvezcliquersurleboutonDsactiverpourdsactiverlagestionautomatique
delammoirepartage.LeDatabaseControlvousinvitealorsrglerlatailledesdiffrentscomposantsdelaSGA
quisontgrsautomatiquement :

d.Sanslagestionautomatique
Lorsquelagestionautomatiquedelammoirepartageestdsactive,longletSGAseprsenteainsi :

- 12 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


LaDatabaseControlaffichelatailledesstructuresdelaSGAquisontgresautomatiquement,ainsiquelataille
maximumdelaSGA,etpermetdelesmodifier(voircidessuspourlefonctionnement).
Cliquez sur le bouton Activer de longlet SGA si vous souhaitez activer la gestion automatique de la mmoire
partage.LeDatabaseControlvousinvitealorsrglerlatailledelaSGA(SGA_TARGET) :

Comme dans le point prcdent, le bouton Activer situ tout en haut de lcran permet dactiver la gestion
automatiquedelammoire.

5.Problmescourantsetsolutions
ORA-00845: MEMORY_TARGET non pris en charge sur ce systme
Explication
Lagestionautomatiquedelammoirepartagenepeutpastreactive.
Cause(s)
Laplateformenestpassupporteou,surplateformeLinux,/dev/shmnestpasdimensionncorrectement.
Action(s)
Si vous tes sur une plateforme Linux, redimensionnez /dev/shm ou diminuez la valeur de MEMORY_TARGET (voir la
ENI Editions - All rights reserved - Algeria Educ

- 13 -

documentation"AdministratorsReferenceforLinuxandUNIXBasedOperatingSystems").
Lorsque vous modifiez la valeur dun paramtre de mmoire avec une valeur errone (trop grande ou trop petite)
vous obtenez une erreur ORA-02097 (cf. section Gestion des paramtres dans ce chapitre), suivie dune deuxime
erreurquiprciselanatureduproblme.
Lesprincipauxcassontlessuivants :

MEMORY_TARGETtropgrand

ORA-00837: la valeur de MEMORY_TARGET est suprieure celle de MEMORY_MAX_TARGET

MEMORY_TARGETtroppetit

ORA-00838: la valeur de MEMORY_TARGET est trop petite ; elle doit tre de nnn Mo au minimum
ORA-00846: impossible de rduire MEMORY_TARGET a la valeur indique

SGA_TARGETtropgrand

ORA-00823: la valeur de sga_target est suprieure a celle de sga_max_size

SGA_TARGETtroppetit

ORA-00827: impossible de rduire sga_target a la valeur indique

PGA_AGGREGATE_TARGETtropgrandparrapportMEMORY_TARGET

ORA-00840: la valeur de PGA_AGGREGATE_TARGET ne peut pas tre change pour la valeur indique

PGA_AGGREGATE_TARGEThorslimites

ORA-00093: pga_aggregate_target doit tre compris entre 10M et 4096G-1

DB_CACHE_SIZE(ouDB_nk_CACHE_SIZE)tropgrandparrapportlammoiredisponiblepourlaSGA

ORA-00384: mmoire insuffisante pour faire voluer le cache

*_POOL_SIZEtropgrandparrapportlammoiredisponiblepourlaSGA

ORA-04033: mmoire insuffisante pour augmenter la taille du pool

*_POOL_SIZEtroppetit

ORA-04034: impossible de rduire le pool a la taille indique.

- 14 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Gestiondesfichiersdecontrle
1.Rappelsurlefichierdecontrle
Lefichierdecontrlecontientdesinformationsdecontrlesurlabasededonnes :

lenomdelabasededonnes

ladate/heuredecrationdelabasededonnes

lemplacementdesautresfichiersdelabasededonnes(fichiersdedonnesetfichiersdejournalisation)

lenumrodesquenceactueldesfichiersdejournalisation

desinformationssurlespointsdereprise(checkpoint),etc.

Le fichier de contrle est automatiquement mis jour par Oracle lors de chaque modification de la structure de la
basededonnes(ajoutoudplacementdunfichierparexemple).Latailledufichierdecontrleestdterminepar
Oracle.
Lorsquuneinstanceestlancepourouvrirunebasededonnes,lefichierdecontrleestlepremierfichierouvert.Il
permetensuite,linstancedelocaliseretdouvrirlesautresfichiersdelabasededonnes.Silefichierdecontrle
ne peut pas tre trouv (ou est endommag), la base de donnes ne peut pas tre monte, mme si les autres
fichiers de la base de donnes sont prsents (linstance reste dans le statut NOMOUNT). Diffrents scnarios de
restauration sont alors disponibles en fonction de la situation (prsence ou non dune sauvegarde du fichier de
contrle,notamment)pourredmarrerlabasededonnes,maiscesontdesscnariosrelativementcomplexes.
Pour des raisons de scurit, il est donc conseill de multiplexer le fichier de contrle, cestdire de disposer de
plusieurs copies gres en miroir (multiplexes) par Oracle. Techniquement, il est possible de crer une base de
donnesavecunseulfichierdecontrlemaisilestvivementconseilldutiliserplusieurscopies,mmesileserveur
necomprendquundisque(celametlabridunesuppressionaccidentelle).
Plusieursfichiersdecontrlepeuventtrespcifislorsdelacrationdelabase(chapitre Crationdunenouvelle
basededonnes)ouultrieurement(voirciaprs).

2.Trouverdesinformationssurlesfichiersdecontrle
LavueV$CONTROLFILEdonnelalistedesfichiersdecontrle :
SQL> SELECT * FROM v$controlfile;
STATUS NAME
------- ------------------------------F:\ORADATA\HERMES\CONTROL01.CTL
G:\ORADATA\HERMES\CONTROL02.CTL

IS_ BLOCK_SIZE FILE_SIZE_BLKS


--- ---------- -------------NO
16384
618
NO
16384
618

LacolonneSTATUSestnormalementtoujoursvide.LacolonneIS_RECOVERY_ DEST_FILEindiquesilefichierdecontrle
est stock dans la zone de rcupration rapide (telle que dfinie par le paramtre DB_RECOVERY_FILE_DEST). Le
produitFILE_SIZE_ BLKS x BLOCK_SIZEdonnelatailledesfichiersdecontrlesenoctets.
VouspouvezaussiinterrogerlavueV$CONTROLFILE_RECORD_SECTIONpourobtenirdesinformationssurlecontenudes
diffrentessectionsdufichierdecontrle :
SQL> SELECT type,records_total,records_used
2 FROM v$controlfile_record_section;
TYPE
RECORDS_TOTAL RECORDS_USED
---------------------------- ------------- -----------DATABASE
1
1
CKPT PROGRESS
4
0
REDO THREAD
1
1
REDO LOG
16
3
DATAFILE
128
6
FILENAME
2370
13
TABLESPACE
128
7
ENI Editions - All rights reserved - Algeria Educ

- 1-

...
Cette vue indique notamment le nombre maximum denregistrements possibles dans les diffrentes sections et le
nombredenregistrementsactuellementutiliss.Dansnotreexemple,ilya6enregistrementsdefichiersdedonnes
utiliss,surles128possibles.CertaineslimitesproviennentdesvaleursattribuesauxoptionsMAX*delordreSQL
CREATE DATABASE(MAXDATAFILESparexemple).
CertainescolonnesdelavueV$DATABASEdonnentaussidesinformationssurlesfichiersdecontrle :
CONTROLFILE_CREATED
Datedecrationdufichierdecontrle.
CONTROLFILE_SEQUENCE#
Numrodesquencedufichierdecontrle,incrmentlorsdesmisesjourdufichierdecontrle.
CONTROLFILE_CHANGE#
DerniernumroSCN(SystemChangeNumber)enregistrdanslefichierdecontrle.
CONTROLFILE_TIME
Date/heurededernierenregistrementdanslefichierdecontrle.
CHECKPOINT_CHANGE#
NumroSCNdudernierpointdereprise.
CURRENT_SCN
NumroSCNcourant.

3.Multiplexerlefichierdecontrle
Commeindiquprcdemment,ilestconseilldefairefonctionnerlabasededonnesavecaumoins,deuxfichiers
decontrle,sipossiblesurdesdisquesdiffrents(danslidal,3ou4surdesdisquesdiffrents).
Le multiplexage des fichiers de contrle peut tre mis en uvre lors de la cration de la base de donnes, en
spcifiant la liste des fichiers de contrle souhaits dans le paramtreCONTROL_FILES, avant dexcuter lordreSQL
CREATE DATABASE(voirlechapitreCrationdunenouvellebasededonnes).
Lemultiplexagepeutaussitremisen uvre(ourenforc)ultrieurement.Pourcela,ilfautarrterproprementla
basededonnes,dupliquerunfichierdecontrleexistantverslenouvelemplacement,mentionnerlenouveaufichier
decontrledansleparamtreCONTROL_FILES(paramtrestatique)etredmarrerlabasededonnes.Sivousutilisez
unfichierdeparamtresserveur(conseill),vousdevezmodifierleparamtreCONTROL_ FILESavantdarrterlabase
dedonnes.
Lemodeopratoireestalorslesuivant :

spcifierlemplacementdunouveaufichierdecontrledanslefichierdeparamtresserveur :
SQL> ALTER SYSTEM SET CONTROL_FILES = f:\oradata\hermes\control01.ctl,
2
g:\oradata\hermes\control02.ctl,
3
e:\oradata\hermes\control03.ctl
4 SCOPE = SPFILE;

arrterlabaseproprement(pasABORT!) :
SQL> SHUTDOWN IMMEDIATE

dupliquerunfichierdecontrleexistantverslenouvelemplacement :
SQL> HOST copy f:\oradata\hermes\control01.ctl >
e:\oradata\hermes\control03.ctl

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

redmarrerlabasededonnes :
SQL> STARTUP

Vrifier :
SQL> SELECT name FROM v$controlfile;
NAME
----------------------------------------------F:\ORADATA\HERMES\CONTROL01.CTL
G:\ORADATA\HERMES\CONTROL02.CTL
E:\ORADATA\HERMES\CONTROL03.CTL

Une technique similaire peut tre utilise pour dplacer un fichier de contrle dun emplacement un autre ou
supprimerunfichierdecontrle.
La duplication du fichier de contrle doit se faire sur un fichier de contrle cohrent. Il ne faut donc pas
dupliquer le fichier de contrle alors que la base de donnes est ouverte ou aprs un SHUTDOWN ABORT (le
fichierdecontrlenapastfermproprement).Silacopiedufichierdecontrlenestpasjugecohrentepar
Oracle,uneerreurseproduiraauredmarrage.
Encomplment,nousverronsauchapitreSauvegardeetrcuprationquandetcommentsauvegarderlefichierde
contrle,etcommentrcuprerunebasededonnesencasdepertedunfichierdecontrle.

4.UtiliserleDatabaseControl
Dans le Database Control>, cliquez sur le lien Serveur sur la page daccueil puis, sur le lien Fichiers de contrle
(cadreStockage)pouraccderlapagedinformationsurlesfichiersdecontrle :

Les trois onglets donnent des informations sur les fichiers de contrle, en provenance des vues V$CONTROLFILE,
V$DATABASEetV$CONTROLFILE_RECORD_SECTION.LeDatabaseControlneproposepasdemoyensimplepourmultiplexer
lesfichiersdecontrle.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Gestiondesfichiersdejournalisation
1.Rappelsurlesfichiersdejournalisation
Lesfichiersdejournalisation(redolog)enregistrenttouteslesmodificationsapporteslabasededonnes.Ilssont
organiss en groupes crits de manire circulaire les informations sauvegardes sont donc, par dfaut,
priodiquementcrases.
Les fichiers de journalisation sont utiliss pour la restauration de linstance aprs un arrt anormal et pour la
restauration de mdia si un fichier de donnes est perdu ou endommag dans ce cas, ils sont appliqus une
sauvegardedefichierdedonnes,pourrejouertouteslesmodificationssurvenuesentrelasauvegardeetlincident
ayantendommaglefichier.
Les fichiers de journalisation sont organiss en groupes (au minimum 2) composs dun ou de plusieurs membres
(minimum 1) ils sont crs lors de la dfinition de la base (chapitre Cration dune nouvelle base de donnes).
lintrieur dun groupe, les membres sont crits simultanment en miroir par linstance Oracle (processus LGWR) et
contiennent la mme information. Tous les membres dun groupe ont la mme taille dfinie lors de la cration du
groupe un fichier de journalisation contient donc une quantit maximale dinformations. De mme, le nombre de
groupeestdtermin ilnaugmentepasdynamiquement.
Lorsquungroupeestplein(cestdirelorsquelesmembressontpleins),linstanceOraclepasseaugroupesuivant
et ainsi de suite jusquau dernier lorsque le dernier groupe est plein, linstance Oracle repasse au premier. Le
passagedungroupeunautreestappelbasculement(switch).

Lorsque linstance Oracle revient dans le premier groupe, elle crase les informations qui y sont stockes ces
informationsnesontdoncplusdisponiblesencasdebesoin,parexemplepourunerestaurationdemdia.Afinde
garantir cette possibilit deffectuer des restaurations compltes, il faut activer le mcanisme darchivage (chapitre
Sauvegarde et rcupration) qui permet darchiver les fichiers de journalisation (en loccurrence un membre du
groupe)lorsquilssontpleins,avantquelinstancenelesrutilise.
Siungroupepossdeplusieursmembresetquundesmembressoitindisponible,labasededonnespeutcontinuer
fonctionner.
Les fichiers de journalisation sont trs importants pour la scurit de la base de donnes. Il est donc conseill
dutiliserauminimumdeuxoutroismembrespargroupe(multiplexage),sipossiblesurdesdisquesdiffrents.

2.Trouverdesinformationssurlesfichiersdejournalisation
Plusieursvuesdudictionnairepermettentdobtenirdesinformationssurlesfichiersdejournalisation :

V$LOG : informationssurlesgroupes

V$LOGFILE : informationssurlesmembres

V$LOG_HISTORY : informationssurlhistoriquedesfichiersdejournalisation.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs.
V$LOG
GROUP#
Numrodugroupe.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

SEQUENCE#
Numrodesquencedugroupe(sincrmentechaquebasculement).
BYTES
Tailleenoctets.
MEMBERS
Nombredemembres.
ARCHIVED
Groupearchiv(YESouNO).
STATUS
Statutdugroupe :

UNUSED : groupejamaiscrit(sansdoutenouveau)

CURRENT : groupecourant(groupeencoursdcriture)

ACTIVE : groupeencorencessaireencasderestaurationdinstance(pointdereprisenontermin)

INACTIVE : groupeinutilepourunerestaurationdinstance(pointdereprisetermin).

FIRST_CHANGE#
PluspetitnumroSCNcritdanslegroupe.
FIRST_TIME
DateetheuredupluspetitnumroSCN.
V$LOGFILE
GROUP#
Numrodugroupe.
STATUS
Statutdumembre :

INVALID : fichierinaccessible

STALE : fichierincomplet(statutdesnouveauxmembres)

DELETED : fichiersupprim,plusutilis

vide : fichierutilis.

MEMBER
Nomcompletdufichiermembre
IS_RECOVERY_DEST_FILE
Indique(YESouNO)silemembreeststockdanslazonedercuprationrapide(tellequedfinieparleparamtre
- 2-

ENI Editions - All rights reserved - Algeria Educ

DB_RECOVERY_ FILE_DEST).
V$LOG_HISTORY
SEQUENCE#
Numrodesquencedugroupe.
FIRST_CHANGE#
PluspetitnumroSCNcritdanslegroupe.
NEXT_CHANGE#
PlusgrandnumroSCNcritdanslegroupe.
FIRST_TIME
DateetheuredupluspetitnumroSCNcritdanslegroupe.
Exemple :
SQL> SELECT group#,sequence#,bytes/(1024*1024) size_mo,members,status
2 FROM v$log;
GROUP# SEQUENCE#
SIZE_MO
MEMBERS STATUS
------ ---------- ---------- ---------- ---------------1
16
50
2 INACTIVE
2
17
50
2 CURRENT
3
18
50
2 INACTIVE
SQL> SELECT group#,status,member,is_recovery_dest_file
2 FROM v$logfile
3 ORDER BY group#;
GROUP# STATUS MEMBER
IS_RECOVERY_DEST_FILE
------ ------- ------------------------------ --------------------1
F:\ORADATA\HERMES\REDO01A.LOG NO
1
G:\ORADATA\HERMES\REDO01B.LOG NO
2
F:\ORADATA\HERMES\REDO02A.LOG NO
2
G:\ORADATA\HERMES\REDO02B.LOG NO
3
F:\ORADATA\HERMES\REDO03A.LOG NO
3
G:\ORADATA\HERMES\REDO03B.LOG NO
SQL> SELECT sequence#,TO_CHAR(first_time,DD/MM HH24:MI) first_time
2 FROM v$log_history;
SEQUENCE# FIRST_TIME
--------- -----------1 16/07 14:53
2 16/07 14:55
3 16/07 14:56
15 16/07 15:17
16 16/07 15:19
17 16/07 15:25

3.Dimensionnerlesfichiersdejournalisation
Dterminerlenombredegroupesetlatailledesgroupesestunsujetcomplexepourlequelilnexistepasdeformule
decalcul.Parcontre,ilestpossible,aposteriori,dauditerlefonctionnementdesfichiersdejournalisationafindevoir
silenombredegroupesetlatailledesgroupessontsatisfaisants encasdeproblme,ilestrelativementsimple
dapporterdescorrectionsenajoutantunnouveaugroupeouenaugmentantlatailledesgroupes(cetteactionest
unpeupluscomplexe).
Lobjectifestsimple :

openmirrors.com

Utiliser des fichiers de journalisation de taille suffisante pour viter des basculements trop frquents,
pnalisantspourlesperformances.LarecommandationdOracle est davoirunbasculementtoutesles20

ENI Editions - All rights reserved - Algeria Educ

- 3-

30minutesenviron.
Utiliserunnombresuffisantdegroupespourpermettreauxpointsderepriseetlarchivagedeseterminer
avantquelinstancenereviennesurunfichierdejournalisation.Silepointderepriseoularchivagenesont
pastermins,leprocessusLGWRattend,cequiesttrsmauvaispourlesperformances.

Avoirdesbasculementspeufrquents(plusde4heuresparexemple),etdoncdespointsdereprisepeufrquents,
combinsuneforteactivitdemisejour(possibleavecdesfichiersdejournalisationvolumineux),estbnfique
pourlesperformancesmaiscelarisque,encasdarrtanormaldelinstance,daugmenterladuredelarcupration
delinstanceetdonc,ladureduredmarrage.LarecommandationdOracleestdetrouverunboncompromisentre
laperformanceenfonctionnementnormaletlaperformanceduredmarrage,encasdarrtanormaldelinstance.
Le fichier dalerte de linstance (voir la section Diagnostiquer les problmes du chapitre Les outils dadministration)
peut tre utilis comme premier outil daudit simple de lactivit des fichiers de journalisation. Les informations
surveillersontlessuivantes :
Basculementdefichierdejournalisation :

Wed Jul 16 15:25:04 2008


Thread 1 advanced to log sequence 17
Current log# 2 seq# 17 mem# 0: F:\ORADATA\HERMES\REDO02A.LOG
Current log# 2 seq# 17 mem# 1: G:\ORADATA\HERMES\REDO02B.LOG
Attentelorsdunbasculementdefichierdejournalisation :

Pointdereprisenontermin
Wed Jul 16 15:17:28 2008
Thread 1 cannot allocate new log, sequence 15
Checkpoint not complete

Archivagenontermin
Wed Jul 16 15:19:02 2008
Thread 1 cannot allocate new log, sequence 16
All online logs needed archiving

LavueV$LOG_HISTORYpeutaussitreutilisepouranalyserlavitessedebasculementdesfichiersdejournalisation.
Siladurequisparelesmessagesdecetypeestsystmatiquementcourte,lesfichiersdejournalisationsontmal
dimensionns.Sicettesituationdebasculementsrapprochs(oudebasculementstemporairementbloqus)estrare
(une fois par jour par exemple), le dimensionnement est satisfaisant (la situation est peut tre lie un batch qui
gnreunpicdelactivittransactionnelle).
Encasdebasculementtroprapide(largementinfrieur20/30minutes),ilfautaugmenterlatailledesgroupes.
En cas dattentes frquentes lors dun basculement, il faut ajouter un groupe (le processus LGWR mettra plus de
temps faire le tour des groupes, ce qui laissera plus de temps au point de reprise ou larchivage pour se
terminer).
Lesoprationsdajoutdungroupeoudaugmentationdelatailledesgroupessontprsentesdanslasuitedece
chapitre.

4.Administrerlesfichiersdejournalisation
a.Vuedensemble
Diffrentesoprationsdadministrationpeuventtreeffectuessurlesfichiersdejournalisation :

- 4-

Ajouter un nouveau membre dans un groupepermetdamliorerlascuritdesfichiersdejournalisation


(multiplexage).
Ajouter un nouveau groupe permet damliorer la disponibilit des fichiers de journalisation pour le
processusLGWR,enaugmentantladureduncyclecompletderotation.

ENI Editions - All rights reserved - Algeria Educ

Dplacerunmembrepermetdamliorerlarpartitiondesentres/sortiesparexemple.
Supprimerungroupepeuttreutilisdansuneoprationdaugmentationdelatailledesgroupes(ajout
dunnouveaugroupeplusgrospuissuppressiondunancien).
Supprimerunmembredungroupesilestendommagparexemple.
Forcerlebasculementdugroupecourantausuivantpeuttreutilisdansloprationdaugmentationde
taille.

Ilnexistepasdecommandepourmodifierlatailledesgroupes latechniqueconsisteajouterdesgroupesayant
lataillesouhaiteetsupprimerlesanciensgroupes.Supprimerungroupeneserapaspossiblesicestlegroupe
courant lacommandepermettantdeforcerunbasculementpeutalorstreutilisepourviterdattendre.Sinon,
supprimerungroupeouforcerlebasculementdugroupecourantausuivantsontdesoprationsrarementutilises
enellesmmes.

b.Ajouterunnouveaumembreungroupe(multiplexage)
Nousavonsvuquelemultiplexagedesfichiersdejournalisationpouvaittremisen uvrelorsdelacrationdela
base de donnes (voir la section Cration de la base de donnes la main du chapitre Cration dune nouvelle
base de donnes). Il suffit de spcifier plusieurs membres pour chaque groupe list dans la clause LOGFILE de
lordreSQLCREATE DATABASE.
Lemultiplexagedesfichiersdejournalisationpeutaussitremisen uvre(ourenforc)ultrieurement,laidede
lordreSQLALTER DATABASE.
Syntaxesimplifie :
ALTER DATABASE
ADD LOGFILE MEMBER nom_fichier [,...] TO GROUP numro;
Exemple :
ALTER DATABASE
ADD LOGFILE MEMBER e:\oradata\HERMES\redo01c.log TO GROUP 1;
La taille du fichier na pas besoin dtre spcifie le nouveau fichier a forcment la mme taille que les autres
membresdugroupe.NotezaussiquelenouveaumembreauraunstatutINVALIDdansV$LOGFILE cestnormalet
lestatutchangeralorsquelefichierserautilis.
Mme sil est techniquement possible davoir des groupes qui nont pas le mme nombre de membres, cest
normalement une situation temporaire. Bien protger tous les groupes sauf un, est prilleux la loi de Murphy
indiquequesiunincidentdoitseproduire,ilauralieusurlegroupemalprotg.

c.Ajouterunnouveaugroupe
AjouterunnouveaugroupepeuttreralislaidedelordreSQLALTER DATABASE.
Syntaxe :
ALTER DATABASE
ADD LOGFILE [GROUP numro] spcification_fichier_redo [,...] ;
- spcification_fichier_redo
(nom_fichier [,...]) [ SIZE valeur [K|M|G] ] [REUSE]
Avec :
numro
Numrodugroupe.Siloptionestabsente,Oraclenumrotelesgroupes1,2...(cequiestbien).
nom_fichier
Chemindaccscompletunfichiermembredugroupe,normalementdansunrpertoirededonnes(oradata)pour
respecterlestandardOFA.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

SIZE
Tailledechaquemembredugroupeenoctets(pasdesymbole),Ko(symboleK),Mo(symboleM)ouGo(symboleG).
LataillepeuttreomiseuniquementsiloptionREUSEestutiliseetquelefichierexistedj.
REUSE
Siloptionestprsenteetquelefichierexistedj,Oraclelerutiliseet lcrase. Si loptionestabsente,dansla
mmesituation,unmessagederreursafficheetlacrationdelabasededonneseststoppe.Dupointdevuede
la scurit, il est prfrable de ne pas utiliser cette option afin dviter dcraser par mgarde un fichier de
journalisationutilisparuneautrebasededonnes.
Exemple :
ALTER DATABASE
ADD LOGFILE
GROUP 4 (e:\oradata\hermes\redo04a.log,
g:\oradata\hermes\redo04b.log) SIZE 50M;
Sauf opration daugmentationdelatailledesgroupes,lenouveaugroupeprsentenormalementlammetaille
quelesautres avoirdesgroupesdetaillesdiffrentesneprsenteaucunintrt.

d.Dplacerunmembre
Lemodeopratoirepourdplacerunfichierdejournalisationestlesuivant :

arrterlabasededonnes(proprement,pasABORT) :
SQL> SHUTDOWN IMMEDIATE

dplacerle(s)fichier(s)dejournalisationverslenouvelemplacement :
SQL> HOST move e:\oradata\hermes\redo04a.log >
f:\oradata\hermes\redo04a.log

monterlabasededonnes :
SQL> STARTUP MOUNT

utiliserlordreSQLALTER DATABASE RENAME FILEpourindiquerOraclelenouvelemplacement :


SQL> ALTER DATABASE
2 RENAME FILE e:\oradata\hermes\redo04a.log
3 TO f:\oradata\hermes\redo04a.log;

ouvrirlabasededonnes :
SQL> ALTER DATABASE OPEN;

LasyntaxedelordreSQLALTER DATABASE RENAME FILEestlasuivante :


ALTER DATABASE
RENAME FILE ancien_nom_complet [,...]
TO nouveau_nom_complet [,...];
Exemple :
ALTER DATABASE
RENAME FILE e:\oradata\hermes\redo04a.log
TO f:\oradata\hermes\redo04a.log;
NotezbienquelordreSQLALTER DATABASE RENAME FILEnerenommepas,ninedplacelefichierphysique cette
opration doit tre effectue par une commande du systme dexploitation. Lordre SQL ALTER DATABASE RENAME
- 6-

ENI Editions - All rights reserved - Algeria Educ

FILE sert juste indiquer Oracle le nouvel emplacement ou le nouveau nom dun fichier (Oracle met jour en
consquence le fichier de contrle).Lancien nom complet doit correspondre un fichier appartenant la base de
donnes, mais il peut ne plus exister physiquement par contre, Oracle vrifie que le fichier existe bien avec le
nouveaunomet/oudanslenouvelemplacement(etquelefichierestvalide).

e.Supprimerungroupe
SupprimerungroupepeuttreralislaidedelordreSQLALTER DATABASE.
Syntaxe :
ALTER DATABASE
DROP LOGFILE GROUP numro ;
Exemple :
ALTER DATABASE
DROP LOGFILE GROUP 4;
Labasededonnesdoitavoiraumoins3groupesdefichiersdejournalisationpourpouvoirensupprimerun(ildoit
resteraumoins2groupes).
SeulungroupeaustatutINACTIVEpeuttresupprim.Legroupecourant(celuidanslequelleprocessusLGWRest
en train dcrire) ne peut pas tre supprim il en est de mme si le groupe a le statut ACTIVE (groupe encore
ncessaireencasderestaurationdinstance).EnmodeARCHIVELOG,ungroupenonencorearchivnepeutpastre
supprim.
LesfichiersconcernsnesontpasphysiquementsupprimsparOracle ilfautlessupprimermanuellement,laide
dunecommandedusystmedexploitation.

f.Supprimerunmembredungroupe
SupprimerunmembredungroupepeuttreralislaidedelordreSQLALTER DATABASE.
Syntaxe :
ALTER DATABASE
DROP LOGFILE MEMBER nom_fichier [,...]
Exemple :
ALTER DATABASE
DROP LOGFILE MEMBER g:\oradata\hermes\redo01b.log;
Legroupeconcerndoitavoiraumoins2membrespourpouvoirensupprimerun(ildoittoujoursaumoinsexister
unmembre valide par groupe) si le groupe a deux membres dont un invalide, vous ne pourrez pas supprimer le
membrevalide.Poursupprimertouslesmembresdungroupe,ilfautenfaitsupprimerlegroupe(pointprcdent).
Letableausuivantindiquesiunmembrepeuttresupprimenfonctiondustatutdugroupe :

Statusdugroupe

Membresupprimable?

CURRENT

Non

ACTIVE

Non

INACTIVE

Oui

EnmodeARCHIVELOG,unmembredungroupenonencorearchivnepeutpastresupprim.Lesfichiersconcerns
nesontpasphysiquementsupprimsparOracle ilfautlessupprimermanuellement,laidedunecommandedu
systmedexploitation.

g.Forcerlebasculementdugroupecourantausuivant
ForcerlebasculementdugroupecourantausuivantpeuttreralislaidedelordreSQLALTER SYSTEM.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

Syntaxe :
ALTER SYSTEM SWITCH LOGFILE;
Lebasculementmanuelprovoquelesmmesvnementsquunbasculementautomatique :

pointdereprise

archivage(silarchivageestactiv).

5.Contrlerlafrquencedespointsdereprise
Pardfaut,lespointsdereprisesedclenchentlorsdunbasculementdefichierdejournalisation.
Lorsquelesfichiersdejournalisationsontgrosetquelesbasculementssontpeufrquents,celapeutconduiredes
redmarragesunpeulongsencasdarrtanormaldelinstance(beaucoupdemodificationsapporterauxfichiers
dedonnespourlesremettreentat).Danscegenredesituation,ilpeuttreintressantdecontrlerlafrquence
des points de reprise et de faire en sorte davoir des points de reprise intermdiaires, entre les basculements de
fichiersdejournalisation.
LamthoderecommandeconsisteutiliserleparamtreFAST_START_MTTR_TARGET quiindiquelenombremaximum
de secondes souhait pour le redmarrage de linstance, aprs un arrt anormal. Une fois que ce paramtre est
positionn,linstanceajusteautomatiquementlafrquencedespointsderepriseafindenepasavoirtropdactivit
rejouerdanslesfichiersdedonnes,encasdarrtanormaldelinstance.
Des points de reprise trop frquents peuvent dgrader les performances de lactivit courante il faut
trouverlejustequilibre
Lavue V$INSTANCE_RECOVERYpeuttreutilisepoursuperviserletempsestimderestaurationdelinstance.Cette
vuecontientnotammentlescolonnessuivantes :
TARGET_MTTR
Objectif rel de dure de rcupration maximum, recalcul par Oracle, en fonction du contexte tient compte de la
valeurduparamtreFAST_START_MTTR_TARGETmaisaussi,dautresfacteurs.
ESTIMATED_MTTR
Duredercuprationestimeactuellementcomptetenudelactivitdelinstance.
OPTIMAL_LOGFILE_SIZE
Taille optimale des fichiers de journalisation (en Mo) permettant datteindrelobjectif (valeur actuelle du paramtre
FAST_START_ MTTR_TARGET) uniquement avec les points de reprises lis aux basculements des fichiers de
journalisation.
Si le paramtre FAST_START_MTTR_TARGET est rgl une valeur trop basse, la dure effective de recouvrement est
dtermine au mieux de ce que le systme est capable de faire, compte tenu du contexte. Si le paramtre
FAST_START_MTTR_TARGETestrglunevaleurleve,telleque,mmedanslepiredescas,lerecouvrementserait
plus court, la dure effective de recouvrement est estime par rapport au scnario le pire : tous les blocs sont
modifis dans le Buffer Cache, pour des transactions valides, et aucun na encore t crit sur disque, dans les
fichiersdedonnes.
Exemple :
SQL> SELECT value FROM v$parameter
2 WHERE name = fast_start_mttr_target;
VALUE
-------------------60
SQL> SELECT target_mttr,estimated_mttr,optimal_logfile_size
2 FROM v$instance_recovery;
TARGET_MTTR ESTIMATED_MTTR OPTIMAL_LOGFILE_SIZE
----------- -------------- --------------------

- 8-

ENI Editions - All rights reserved - Algeria Educ

30

18

99

Si le paramtre FAST_START_MTTR_TARGET nest pas dfini, la colonne TARGET_MTTR est gale 0 et la colonne
OPTIMAL_LOGFILE_SIZE estvide parcontre,lacolonneESTIMATED_MTTR estrenseigne.

6.UtiliserleDatabaseControl
Dans le Database Control, cliquez sur le lienServeursurlapagedaccueil puis, sur le lienGroupes de fichiers de
journalisation(cadreStockage)pouraccderlapagedegestiondesfichiersdejournalisation :

partirdecettepage,vouspouvezeffectuerdiversesactionssurlesgroupesdefichiersdejournalisation :

crerunnouveaugroupe(boutonCreroumenuCrercomme)

supprimerungroupe(boutonSupprimer)

forcerlebasculementdugroupecourantausuivant(menuChangerdefichierjournal)

forcerunpointdereprise(menuForcerlapplicationdunpointdereprise).

EncliquantsurleliendunumrodegroupeouencliquantsurlesboutonsModifierouVisualiser,vousarrivezsurla
pagedegestiondesmembresdugroupe :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-


Cettepagepermetdajouter, supprimer, ou modifier un membre. Notez que le Database Control neffectueaucune
action sur les fichiers physiques (suppression, dplacement, renommage) ces oprations doivent tre effectues
manuellementauniveaudusystmedexploitation.

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Vuedensembleetdirectives
1.Vuedensemble
Un tablespace est une unit logique de stockage compose dun ou plusieurs fichiers physiques (fichiers de
donnes).
Dans le Database Control, le tablespace est appel "espace disque logique" dans cet ouvrage, nous
utiliseronsleterme"tablespace".
La majorit des oprations dadministration relatives au stockage seffectue au niveau du tablespace, et non au
niveaudesfichiersdedonnes.
lintrieurduntablespace,lestockageestorganisensegments,compossduneouplusieursextensions(extent).
Cesextensionspeuventtregres"parledictionnaire"ou"localement".Danslepremiercas(tablespace<grpar
ledictionnaire),lesinformationssurlesextensionslibresetallouessontstockesdansdestablesdudictionnaire
dedonnes danslesecondcas(tablespacegrlocalement),lesinformationssurlesextensionslibresetalloues
sontstockesdanslenttedesfichiersdedonnesdutablespace.
Enversion10,OracleaintroduitlanotiondetablespaceBIGFILE : untablespaceBIGFILEestuntablespacecompos
dun seul fichier de donnes qui peut tre particulirement volumineux (jusqu 2^32 blocs Oracle soit plus de 4
milliards de blocs). A contrario, un tablespace traditionnel, dornavant appel tablespaceSMALLFILE, peut contenir
plusieursfichiersdedonnes(jusqu1 022fichiers),maisdetaillepluslimite("seulement"2^22blocsOracle,soit
toutdemmeplusde4millionsdeblocs).
LorsquuntablespaceSMALLFILEcontientplusieursfichiersdedonnes,lesfichierssontgnralementsitussurdes
disquesdiffrentsavecdeuxobjectifspossibles :

allouerdelespacesupplmentaireuntablespacedontlefichierdedonnesinitialnepeutplusstendre

rpartirlestockagedutablespacesurplusieursdisques(stripingauniveaudOracle).

UnebasededonnespossdetoujoursauminimumdeuxtablespacesnommsSYSTEMetSYSAUX(tablespaceSYStem
AUXiliaire, apparu en version 10). Le tablespace SYSTEM contient le dictionnaire de donnes. Le tablespace SYSAUX
contient les donnes de certains composants Oracle. Avant la version 10, ces donnes taient stockes dans
plusieurstablespaces lutilisationduntablespaceuniquepermetdoncrduirelenombredetablespacesutilisspar
une base de donnes. Normalement, les tablespaces SYSTEM et SYSAUX ne doivent pas contenir de donnes
utilisateur.Encomplment,unebasededonnescontientsouvent(vivementconseill)deuxtablespacesparticuliers,
utiliss en interne par Oracle : le tablespace dannulation (chapitre Gestion des informations dannulation) et le
tablespace temporaire. Ces tablespaces "techniques" ne peuvent pas contenir de donnes utilisateur. Les
tablespaces autres que le tablespace dannulation et le tablespace temporaire sont appels "tablespaces
permanents".UntablespacepeuttreONLINE(accessible)ouOFFLINE.RendreuntablespaceOFFLINEestunmoyende
rendre certaines donnes de lapplication temporairement inaccessibles, ou si la base de donnes abrite plusieurs
applications,derendreuneapplicationinaccessiblesanstoucheruneautre.

LetablespaceSYSTEMdoittoujourstreONLINE.
UntablespacepeuttreREAD WRITE(enlecture/criture)ouREAD ONLY(enlectureseule).RendreuntablespaceREAD
ONLYestunmoyensimpledegarantirquelesdonnesquilcontientneserontjamaismodifies.

2.Directives
Lesprincipalesdirectivessurlorganisationdestablespacessontlessuivantes :

openmirrors.com

nepasmettrededonnesutilisateurdanslestablespacesSYSTEMetSYSAUX
enplusdestablespacesSYSTEMetSYSAUX,crerauminimum untablespacepourlessegmentsdannulation
(tablespace dannulation) un tablespace pour les segments temporaires (tablespace temporaire) un
tablespacepourlestables untablespacepourlesindex.
sipossible,rpartirlesfichiersdedonnesdecestablespacessurdesdisquesdiffrents.
ENI Editions - All rights reserved - Algeria Educ

- 1-

Letablespaceestlunitdebasedenombreusestchesdadministration.Larglefondamentaleestdoncdutiliser
plusieurs tablespaces pour sparer au maximum les diffrents types dlments et garantir une plus grande
souplessedanslesoprationsdadministration.Deplus,sileserveurpossdeplusieursdisques,ilserapossiblede
rpartir les fichiers de donnes des tablespaces sur les diffrents disques pour viter les contentions sur les
entres/sorties.
Des variantes sont possibles concernant lorganisation des tablespaces. Si la base de donnes abrite plusieurs
applications,crezdestablespacesdetablesetdindexdiffrentspourchaqueapplication.
Letablespace SYSAUXpeuttreutilispourvosbesoinsdadministration(crationdetablesparticulires) dansce
cas,utilisezunschmaspar.
Utiliserplusieurstablespacespermet :

desparerlesdonnesdelapplicationdesdonnesdudictionnaireOracle

desparerlesdonnesdeplusieursapplicationsstockesdanslammebasededonnes

desparerlestockagedesdiffrentstypesdobjets

derpartirlesentres/sortiessurplusieursdisques

deraliserdessauvegardes/restaurationspartielles

decontrlerladisponibilitdesdonnes.

Pour les bases de donnes volumineuses et les serveurs comprenant plusieurs disques, vous pouvez utiliser deux
tablespaces(ouplus)pourlestablesetdeuxtablespaces(ouplus)pourlesindexetrpartirlesfichiersdedonnes
destablespacessurlesdiffrentsdisques.
Dansunetelleconfiguration,lidalestdavoiraussilestablespacesSYSTEM,SYSAUX,annulationettemporairesurdes
disquesdiffrents,etdeddierdautresdisquesauxfichiersdejournalisation.LeserveurOracleidaldoitpossder
au minimum une dizaine de disques. Dans la pratique, nous disposons bien souvent de moyens limits, et nous
essayons,danscecas,derpartiraumieuxlesentres/sortiessurlesdiffrentsdisques.
LesrecommandationsdOraclevisvisdustockagedesfichiersdelabasededonnestiennentenunsigle : SAME
(Strip And Mirror Everything). En clair, Oracle recommande dutiliser une technologie de type RAID0+1 sur chaque
axe : "Strip"(RAID0)pourlesperformanceset"Mirror"(RAID1)pourlascurit.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Tablespacepermanent
1.Crationduntablespacepermanent
LordreSQLCREATE TABLESPACEpermetdecreruntablespacepermanent.
Syntaxesimplifie
CREATE [ BIGFILE | SMALLFILE ] TABLESPACE nom
DATAFILE spcification_fichier [,...]
[ clause_gestion_extension ]
[ clause_gestion_segment ]
[ MINIMUM EXTENT valeur [K|M] ]
[ DEFAULT [ clause_compression ] [ clause_stockage ] ]
[ BLOCKSIZE valeur [K] ]
[ LOGGING | NOLOGGING ]
[ FORCE LOGGING ]
[ FLASHBACK { ON | OFF } ]
[ ONLINE | OFFLINE ] ;
- spcification_fichier
nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE]
[ clause_auto_extension ]
- clause_auto_extension
AUTOEXTEND OFF
| AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ]
[ MAXSIZE UNLIMITED | valeur [K|M|G|T] ]
- clause_gestion_extent
EXTENT MANAGEMENT DICTIONARY
| EXTENT MANAGEMENT LOCAL
{ AUTOALLOCATE | UNIFORM [ SIZE valeur [K|M|G|T] ] }
- clause_gestion_segment
SEGMENT SPACE MANAGEMENT { MANUAL | AUTO }
- clause_stockage
STORAGE ( [ INITIAL valeur [K|M] ]
[ NEXT valeur [K|M] ]
[ MINEXTENTS valeur ]
[ MAXEXTENTS { valeur | UNLIMITED } ]
[ PCTINCREASE valeur ] )
- clause_compression
COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ]
| NOCOMPRESS
Exemple :
Tablespacepourlestables,avecunegestionlocaleuniformedesextensions :
CREATE TABLESPACE data
DATAFILE e:\oradata\hermes\data01.dbf SIZE 500M
AUTOEXTEND ON NEXT 100M MAXSIZE 800M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M
SEGMENT SPACE MANAGEMENT AUTO;
Tablespacepourlesindex,avecunegestionlocaleautomatiquedesextensions :
CREATE TABLESPACE indx
DATAFILE e:\oradata\hermes\indx01.dbf SIZE 500M
AUTOEXTEND ON NEXT 100M MAXSIZE 800M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
Touteslesoprationsrelativesauxtablespacesetauxfichiersdedonnessontenregistresdanslefichier
dalertedelinstance.
LesoptionsdelordreSQLCREATE TABLESPACEsont :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

BIGFILE|SMALLFILE
CetteclauseindiquesiletablespaceestuntablespaceBIGFILEouSMALLFILE.Sicetteclauseestomise,Oracleutilise
letypepardfautdfiniauniveaudelabasededonnes(voirlasectionRemarquessurlestablespacesBIGFILE).
nom
Nomdutablespace.
DATAFILEspcification_fichier
Cette clause permet de prciser lemplacement, le nom et la taille dun (ou ventuellement plusieurs) fichier de
donnespourletablespace.UnseulfichierdedonnespeuttrespcifisiletablespaceestdetypeBIGFILE.
Lasyntaxeestlasuivantepourlaspcificationdunfichierdedonnes :
nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE]
[ clause_auto_extend ]
nom_fichier
Chemindaccscompletaufichierdedonnes,normalementdansunrpertoirededonnes(oradata)pourrespecter
lestandardOFA.
SIZE
Tailleinitialedufichier.LataillepeuttreomiseuniquementsiloptionREUSEestutiliseetquelefichierexistedj.
REUSE
Si loption est prsente et que le fichier existe dj, Oracle le rutilise et lcrase. Si loption est absente, dans la
mme situation, un message derreur saffiche et la cration du tablespace est stoppe. Du point de vue de la
scurit, il est prfrable de ne pas slectionner cette option afin dviter dcraser par mgarde un fichier de
donnesutilisparuneautrebasededonnes.
- clause_auto_extend
AUTOEXTEND OFF
| AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ]
[ MAXSIZE UNLIMITED | valeur [K|M|G|T] ]
AUTOEXTEND
Indiquesilefichierdedonnespeut(ON)ounon(OFF)grossirunefoisquetoutlespaceinitialementallouestutilis.
NEXT
Espaceminimumallouaufichierlorsdelextension.
MAXSIZE
Taillemaximaledufichier,ventuellementnonlimite(UNLIMITED).
Touteslestaillespeuventtreexprimesenoctets(pasdesymbole),Ko(symboleK),Mo(symboleM),Go(symboleG)
ouTo(symboleT).LestaillesenTonesontautorisesquepourlestablespacesBIGFILE.
Si le fichier de donnes nest pas autoextensible, un message derreur se produira si un segment stock dans le
tablespaceconcernnapassuffisammentdespacelorsdesacrationinitialeoudesonextension.Rendrelefichier
dedonnesautoextensiblepermetdesaffranchirdecegenredeproblme,jusqulataillelimiteautorisepourle
fichier.Silefichierestautoextensible,latailleminimumdextensionestspcifieparloptionNEXT.Lataillerellede
chaqueextensionseragaleNEXTsilatailledemandeestinfrieureNEXTetgalelatailledemandedansle
cascontraire.
ExempleavecunNEXTde500K :

- 2-

tailledemande=200Ko : 500Koallousaufichier

ENI Editions - All rights reserved - Algeria Educ

tailledemande=750Ko : 750Koallousaufichier.

AttentionloptionUNLIMITED.Ledisquedurnestpas"illimit".Danslapratique,ilestprfrabledavoirun
messagederreurdOracleindiquantquilaatteintlalimitespcifiepluttquedobtenirunmessagederreur
dOraclerpercutantunmessagederreurdusystmeindiquantqueledisqueestplein.

EXTENTMANAGEMENT...
Cetteclausepermetdedfinirlemodedegestiondesextensionslintrieurdutablespace(parledictionnaireou
localement).Lorganisationdustockagedansuntablespaceestprsenteplusloin.
SEGMENTSPACEMANAGEMENT{MANUAL|AUTO}
Cetteclausepermetdedfinirlemodedegestiondelespacelibredessegmentsstocksdansletablespace(voirle
chapitreGestiondestablesetdesindex).Cetteclausenestvalidequepouruntablespacegrlocalement.
MINIMUMEXTENTvaleur[K|M]
Cetteclausepermetdedfinirlatailleminimaledesextensionsdansletablespace.Touteslesextensionsalloues
dansletablespaceaurontunetaillemultipledelatailleminimale.Cetteclausenestvalidequepouruntablespace
grparledictionnaire(unpeuplusloindanscechapitreOrganisationdustockagelintrieurduntablespace).
DEFAULT[COMPRESS|NOCOMPRESS]clause_stockage
Cette clause permet de dfinir une clause de stockage par dfaut pour les segments qui seront crs dans le
tablespace sans clause de stockage. La partie clause_stockage (STORAGE...) nest valide que pour un tablespace
grparledictionnaire lapartieclause_compressionestvalidequelquesoitlemodedegestiondutablespace.
Lorganisation du stockage dans un tablespace est prsente au point Organisation du stockage lintrieur dun
tablespace.LestockagedessegmentsestdtaillauchapitreGestiondestablesetdesindex.
BLOCKSIZEvaleur[K]
Cetteclausedfinitlatailledeblocutiliseparletablespace.Lesvaleursautorisessont2 Ko,4Ko,8 Ko,16Koet
32Ko(certainesplatesformessontplusrestrictives).Lavaleurpardfautestlatailledeblocstandarddfinieparle
paramtreDB_BLOCK_SIZE.Pourutiliserunetailledeblocnonstandardpouruntablespace,vousdevezconfigurerun
poolpourcettetailledeblocdansleBufferCache,grceundesparamtresDB_nK_ CACHE_SIZEnvalant2,4,8,16ou
32).Sicenestpaslecas,vousobtiendrezlerreursuivante
ORA-29339: la taille de bloc de tablespace nnnn ne correspond pas
aux tailles de blocs configures
LOGGING|NOLOGGING
Cetteclausedfinitlemodedejournalisationpardfautdessegmentsquiserontstocksdansletablespaceetpour
lesquelsaucunmodedejournalisationnauratdfini.NOLOGGINGsupprimelajournalisationdecertainesoprations
(insertionparchargementdirect,crationdetablepartirdunerequte,crationoureconstructiondindex).LOGGING
est loption par dfaut. LoptionNOLOGGING est ignore si le tablespace ou la base de donnes sont dans le mode
FORCE LOGGING.
FORCELOGGING
CetteclauseplaceletablespacedanslemodeFORCE LOGGING,cequipermetdegarantirquetouteslesmodifications
seront enregistres dans les fichiers de journalisation, mme si lopration concerne est effectue dans le mode
NOLOGGING.
FLASHBACK{ON|OFF}
Cette clause indique si le tablespace participe ou non aux oprations de FLASHBACK DATABASE (voir le chapitre
Sauvegardeetrcupration).
ONLINE|OFFLINE
CetteclauseindiquesiletablespaceestcrONLINE(dfaut)ouOFFLINE.
Depuislaversion11,untablespacepeuttrechiffr(clauseENCRYPTION).Cettefonctionnalit,quincessite
loption Advanced Security, nest pas prsente dans cet ouvrage. Pour plus dinformations, consultez la

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

documentation"OracleDatabaseAdvancedSecurityAdministratorsGuide".

2.RemarquessurlestablespacesBIGFILE
LestablespacesBIGFILEsimplifientladministrationenoffrantunetransparencedufichierdedonnes.Commenous
le verrons par la suite, certaines oprations peuvent tre ralises directement sur le tablespace BIGFILE (par un
ordreSQLALTER TABLESPACE)etnonsurlesfichiersdedonnes,commecestlecaspouruntablespaceSMALLFILE.
LestablespacesBIGFILEsontforcmentgrslocalement(EXTENT MANAGEMENT LOCAL)avecunegestionautomatique
delespacedanslessegments(SEGMENT SPACE MANAGEMENTAUTO).
ExempledetablespaceBIGFILE
CREATE BIGFILE TABLESPACE je_suis_gros
DATAFILE e:\oradata\hermes\je_suis_gros.dbf SIZE 10G;
LestablespacesBIGFILEsontpluttdestinstreutilissavecungestionnairedevolumeslogiquesquisupportele
stripingouleRAID.Sicenestpaslecas,ilestpossiblederencontrerdesproblmesdeperformanceaveclexcution
enparallledesrequtesoulaparalllisationdessauvegardesRMAN.
UntypepardfautSMALLFILEouBIGFILEpeuttredfiniauniveaudelabasededonnes,soitlorsdelacrationde
labasededonnes(clauseSET DEFAULT TABLESPACE de lordreSQLCREATE DATABASE voirlasectionCrationdela
basededonneslamainduchapitreCrationdunenouvellebasededonnes),soitultrieurementgrcelordre
SQLALTER DATABASE.
Syntaxe :
ALTER DATABASE SET DEFAULT { SMALLFILE | BIGFILE } TABLESPACE ;
LetypepardfautactuelpeuttreconsultdanslavueDATABASE_PROPERTIESpourlapropritDEFAULT_TBS_TYPE :
SQL> SELECT property_value FROM database_properties
2 WHERE property_name = DEFAULT_TBS_TYPE;
PROPERTY_VALUE--------------------------------------------------SMALLFILE

3.Tablespacepermanentpardfaut
Lorsquun utilisateur cre un segment sans prciser de tablespace (voir la section Organisation du stockage
lintrieurduntablespace),Oraclestockelesegmentdansletablespacepardfautdelutilisateur.
CetablespacepardfautestdfinigrcelaclauseDEFAULT TABLESPACEdesordresSQLCREATE USERetALTER USER
(voirlechapitreGestiondesutilisateursetdeleursdroits).Sicetteclauseestomise,cestletablespaceSYSTEMqui
estaffectcommetablespacepardfautlutilisateur.Danslapratique,cecomportementpardfautneposepasde
problmecarlesutilisateursnonDBAnont pas (normalement cestlecaspardfaut)dequotassurletablespace
SYSTEM,etnepeuventycrerdesegments(voirlechapitreGestiondesutilisateursetdeleursdroits).
Depuis la version 10, dans le but de simplifier la gestion des utilisateurs, il est possible de dfinir un tablespace
permanentpardfaut.Cetablespaceestaffectpardfautauxutilisateurslorsdeleurcration,lorsquelaclause
DEFAULT TABLESPACE de lordre SQL CREATE USER est omise. Cette technique nempche pas dutiliser dautres
tablespacespermanentsaffectsspcifiquementdesutilisateurspourdesbesoinsparticuliers.
Le tablespace permanent par dfaut peut tre dfini lors de la cration de la base de donnes, grce la clause
DEFAULT TABLESPACEdelordreSQLCREATE DATABASE.
Syntaxe
[ DEFAULT TABLESPACE nom
[ DATAFILE spcification_fichier [,...] ]
[ clause_extent_management ] ]
Exemple :
DEFAULT TABLESPACE deftbs
DATAFILE e:\oradata\hermes\deftbs01.dbf SIZE 10M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M

- 4-

ENI Editions - All rights reserved - Algeria Educ

EXTENT MANAGEMENT LOCAL AUTOALLOCATE


NotezqueletablespaceainsidfiniestobligatoirementdetypeSMALLFILE.
Pourcreretdfiniruntablespacepermanentpardfautaprslacrationdelabasededonnes,vousdevez :
creruntablespacepermanent,grcelordreSQLCREATE TABLESPACEprsentprcdemment

ledfinircommetablespacepermanentpardfaut,grcelaclauseDEFAULT TABLESPACEdelordreSQLALTER
DATABASE.

Syntaxe
ALTER DATABASE DEFAULT TABLESPACE nom ;
nomdoitdsigneruntablespacepermanentquiexistedj.
LorsquecetordreSQLestexcut,touslesutilisateursquilancientablespacepermanentpardfauttaitaffect
sevoientautomatiquementattribuerlenouveau.
Pourretrouverlenomdutablespacepermanentpardfaut,vouspouvezinterrogerlavueDATABASE_PROPERTIESpour
lapropritDEFAULT_PERMANENT_TABLESPACE :
SQL> SELECT property_value FROM database_properties
2 WHERE property_name = DEFAULT_PERMANENT_TABLESPACE ;
PROPERTY_VALUE
-----------------------------DEFTBS

4.Modificationduntablespacepermanent
a.Vuedensemble
Aprscration,ilestpossibledemodifieruntablespace,notammentpour :

lerenommer

luiallouerdelespacesupplmentaire

dplacerle(s)fichier(s)dedonnes

lepasserOFFLINE / ONLINE

lepasserREAD ONLY / READ WRITE

modifiercesautrescaractristiques(LOGGING / NOLOGGING, FORCE LOGGING, FLASHBACK ON / OFF,etc.).

CesoprationsseffectuentselonlescasaveclordreSQLALTER TABLESPACEouALTER DATABASE.


Ilestpossibledallouerdelespacesupplmentaireunebasededonnes :

enajoutantunnouveautablespace(avecunouplusieursfichiersdedonnes)

enajoutantunfichierdedonnesuntablespaceexistant

enaugmentantlatailledunfichierdedonnesduntablespace.

La syntaxe complte de lordre SQL ALTER TABLESPACE est "excessivement longue" nous nallons donc pas la
prsenterdanssonintgralitmaisindiquerlasyntaxeutiliserpourdiffrentesoprations.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

b.Renommeruntablespace
RenommeruntablespaceseffectueaveclordreSQLALTER TABLESPACE.Cettepossibilitestapparueenversion10.
Syntaxe
ALTER TABLESPACE ancien_nom RENAME TO nouveau_nom;
Exemple :
ALTER TABLESPACE deftbs RENAME TO tbsdef;
LestablespacesSYSTEMetSYSAUX,ainsiquelestablespacesOFFLINE,nepeuventpastrerenomms.
Notez que dans le cas du tablespaceOFFLINE, le message derreur indique en fait, que le fichier de donnes est
"hors ligne" (OFFLINE), ce qui empche Oracle de modifier lentte du fichier de donnes pour y enregistrer le
nouveaunomdutablespace.Unproblmesimilairepourraitseposeravecuntablespaceenlectureseule,maisce
nest pas le cas Oracle ne cherche pas modifier lenttedufichierdedonnesetenregistrejustelenouveau
nomdanslefichierdecontrle(lentteseramodifilorsqueletablespacerepasseraenlecture/criture).

c.Ajouterunfichierdedonnesuntablespace
AjouterunfichierdedonnesuntablespaceseffectueaveclordreSQLALTER TABLESPACE.
Syntaxe
ALTER TABLESPACE nomADD DATAFILE spcification_fichier [,...];
Exemple :
ALTER TABLESPACE data
ADD DATAFILE f:\oradata\hermes\data02.dbf SIZE 100M
AUTOEXTEND ON NEXT 100M MAXSIZE 500M;
Ajouter un fichier de donnes un tablespace est un premier moyen pour lui allouer de lespace
supplmentaire gnralement,cettemthodeestutilisepourallouerunnouveaufichierdedonnessurunautre
disque que le disque actuellement utilis par le tablespace (sinon, autant modifier la taille du fichier de donnes
existant voirciaprs).CetteoprationestinterditepouruntablespaceBIGFILE.
Laspcificationdufichierdedonnes(spcification_fichier)estlammequelorsdelacrationdutablespace
(sectionCrationduntablespacepermanent).

d.Modifierlatailledunfichierdedonnes
ModifierlatailledunfichierdedonnesseffectueaveclordreSQLALTER DATABASE,oulordreSQLALTER TABLESPACE
danslecasduntablespaceBIGFILE.
Syntaxe
ALTER DATABASE
DATAFILE nom_complet | numro_fichier [,...] RESIZE valeur [K|M|G|T];
ALTER TABLESPACE nom_tablespace_bigfile RESIZE valeur [K|M|G|T];
Exemple :

Touttypedetablespace
ALTER DATABASE
DATAFILE f:\oradata\hermes\data02.dbf RESIZE 200M;

TablespaceBIGFILEuniquement
ALTER TABLESPACE je_suis_gros RESIZE 1T;

LaclauseRESIZEdonnelanouvelletaillesouhaite(lahausseoulabaisse)pourlefichierdedonnes.

- 6-

ENI Editions - All rights reserved - Algeria Educ

Modifierlatailledunfichierdedonnespermet :

danslecasdunediminution,dercuprerdelespaceinutilisallouautablespace

danslecasduneaugmentation,dallouerdelespacesupplmentaireuntablespace.

Danslecasdunediminution,latailledufichierdedonnesnepeutpasdescendreendessousdelapositiondela
dernire extension occupe par un segment dans le tablespace (visible dans la vue DBA_EXTENTS). En cas de
tentativedecettesorte,unmessagederreurestaffichetlatailledufichierestinchange :
ORA-03297: le fichier contient des donnes utilises au-del
de la valeur RESIZE requise

e.Modifierlextensionautomatiquedunfichierdedonnes
ModifierlextensionautomatiquedunfichierdedonnesseffectueaveclordreSQLALTER DATABASE,oulordreSQL
ALTER TABLESPACEdanslecasduntablespaceBIGFILE.
Syntaxe
ALTER DATABASE
DATAFILE nom_complet | numro_fichier[,...] clause_auto_extension;
ALTER TABLESPACE nom_tablespace_bigfile clause_auto_extension;
Laspcificationdelaclausedextensionautomatique(clause_auto_extension)estlammequelorsdelacration
dutablespace(sectionCrationduntablespacepermanent).
Exemple :

DsactivationdelaclauseAUTOEXTEND
ALTER DATABASE
DATAFILE e:\oradata\hermes\data01.dbf AUTOEXTEND OFF;

Activation(oumodification)delaclauseAUTOEXTEND
ALTER DATABASE
DATAFILE e:\oradata\hermes\data01.dbf
AUTOEXTEND ON NEXT 200M MAXSIZE 800M;

ExempleavecuntablespaceBIGFILE
ALTER TABLESPACE je_suis_gros
AUTOEXTEND ON NEXT 1G MAXSIZE 100G;

Activerlextensionautomatiquedunfichierdedonnespermetcedernierdegrossirautomatiquementencasde
besoin despace supplmentaire pour un segment (nouveau ou dj prsent) dans le tablespace cest un bon
moyen pour viter les problmes et ne pas avoir augmenter soimme la taille dun fichier de donnes (voir
prcdemment).Dsactiverlextensionautomatiquedunfichierdedonnespeuttreenvisag(etmmeconseill)
silnyaplusdespacedisponiblesurundisque.

f.PasseruntablespaceOFFLINE/ONLINE
PasseruntablespaceOFFLINE / ONLINEseffectueaveclordreSQLALTER TABLESPACE.
Syntaxe
ALTER TABLESPACE nom ONLINE | OFFLINE;
Exemple :

openmirrors.com

Dsactivation

ENI Editions - All rights reserved - Algeria Educ

- 7-

ALTER TABLESPACE data OFFLINE;

Activation
ALTER TABLESPACE data ONLINE;

Dsactiver un tablespace peut tre ncessaire pour effectuer certaines oprations dadministration sur le
tablespace (par exemple, dplacer un de ces fichiers de donnes) ou tout simplement pour rendre certaines
donnestemporairementinaccessibles.
Le tablespace SYSTEM ne peut pas tre mis OFFLINE un message derreur saffiche en cas de tentative. Le
tablespaceSYSAUXpeuttrepassOFFLINEmaiscertainesfonctionnalitsrisquentdeneplusfonctionner.
Le statut dun tablespace (OFFLINE / ONLINE)estconservlorsdelarrt au prochain dmarrage de la base de
donnes,letablespaceseradansltatoiltaitlorsdelarrt.
IlexistedesoptionssurleOFFLINEquidoiventtreutilisessiletablespacedsactiverestendommag(voirle
chapitreSauvegardeetrcupration).

g.Renommeroudplacerunfichierdedonnes
RenommeroudplacerunfichierdedonnesseffectueaveclordreSQLALTER TABLE- SPACEouALTER DATABASE.
Dans le cas de lutilisation de lordre SQL ALTER TABLESPACE, la base de donnes doit tre ouverte mais le
tablespace concern doit tre OFFLINE. Dans le cas de lutilisation de lordre SQL ALTER DATABASE, le tablespace
concerndoittreOFFLINEoulabasededonnesentatMOUNT.LutilisationdelordreSQLALTER DATABASE,base
monte,estncessairepourdplacerunfichierdedonnesdutablespaceSYSTEMpuisquecederniernepeutpas
tremisOFFLINE.
CesdeuxordresSQLnemanipulentpasphysiquementlefichier.Ilssecontententdemettrejourlefichier
decontrle.Lefichierdedonnesdoittrerenomm/copi/dplaclaidedunecommandedusystme
dexploitation,avantdexcuterlordreSQL.
Syntaxe
- ALTER TABLESPACE
ALTER TABLESPACE nom
RENAME DATAFILE ancien_nom_complet
TO nouveau_nom_complet;
- ALTER DATABASE
ALTER DATABASE
RENAME FILE ancien_nom_complet
TO nouveau_nom_complet;
"Renommer"unfichierdedonnesestsurtoututilispourdplacerlefichier.Cettepossibilitestintressantesile
tablespace est plein et quil ne reste plus despace disponible sur le disque sur lequel il est actuellement
situ danscecas,ilestenvisageablededplacerlefichierdedonnesdutablespaceversundisqueoilrestede
lespacedisponiblepuisdefairegrossirlefichier(oulautorisergrossir).
Lemodeopratoire,lorsdelutilisationdelordreSQLALTER TABLESPACE,estlesuivant :

SeconnecterentantqueDBA :
SQL> CONNECT system/xxxx

PasserletablespaceOFFLINE :
SQL> ALTER TABLESPACE data OFFLINE;

Parunecommandedusystmedexploitation,renommer,copieroudplacerlefichier :
SQL> HOST move e:\oradata\hermes\data01.dbf >
f:\oradata\hermes\data01.dbf

- 8-

ExcuterlordreSQLALTER TABLESPACE :

ENI Editions - All rights reserved - Algeria Educ

SQL> ALTER TABLESPACE data


2 RENAME DATAFILE e:\oradata\hermes\data01.dbf
3 TO f:\oradata\HErmes\data01.dbf;

RepasserletablespaceONLINE :
SQL> ALTER TABLESPACE data ONLINE;

Lemodeopratoire,lorsdelutilisationdelordreSQLALTER DATABASE,estlesuivant :

SeconnecterAS SYSDBA :
SQL> CONNECT / AS SYSDBA

PasserlabasededonnesentatMOUNT :
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT

Parunecommandedusystmedexploitation,renommer,copieroudplacerlefichier :
SQL> HOST move e:\oradata\hermes\system01.dbf >
f:\oradata\hermes\system01.dbf

ExcuterlordreSQLALTER DATABASE :
SQL> ALTER DATABASE
2 RENAME FILE e:\oradata\hermes\system01.dbf
3 TO f:\oradata\hermes\system01.dbf;

Ouvrirlabasededonnes :
SQL> ALTER DATABASE OPEN;

h.Supprimerunfichierdedonnes
SupprimerunfichierdedonnesduntablespaceseffectueaveclordreSQLALTER TABLESPACE.
Syntaxe
ALTER TABLESPACE nom DROP DATAFILE nom_complet | numro_fichier;
Exemple
ALTER TABLESPACE data DROP DATAFILE E:\ORADATA\HERMES\DATA02.DBF;
LefichierdedonnesestphysiquementsupprimparOracle.Lesrestrictionssuivantessappliquent :

Lefichierdedonnesdoittrevide(nedoitconteniraucuneextension)

Lefichierdedonnesnepeutpastrelepremierfichiercrpourletablespace

Lefichierdedonnesnedoitpasapparteniruntablespaceenlectureseule

Lefichierdedonnesdoittreenligne(ONLINE)

LefichiernedoitpasappartenirautablespaceSYSTEM.

i.Autresoprations

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

LordreSQLALTER TABLESPACEpeuttreutilispourmodifierlescaractristiquesdutablespace :
- READ ONLY / READ WRITE
ALTER TABLESPACE nom { READ ONLY | READ WRITE } ;
- LOGGING / NOLOGGING
ALTER TABLESPACE nom LOGGING | NOLOGGING ;
- FORCE LOGGING
ALTER TABLESPACE nom [NO] FORCE LOGGING ;
- FLASHBACK ON / OFF
ALTER TABLESPACE nom FLASHBACK ON | OFF ;

5.Suppressionduntablespacepermanent
LordreSQLDROP TABLESPACEpermetdesupprimeruntablespacepermanent.
Syntaxe
DROP TABLESPACE nom [ INCLUDING CONTENTS [ AND DATAFILES ]
[ CASCADE CONSTRAINTS ] ];
Exemple :
DROP TABLESPACE data INCLUDING CONTENTS AND DATAFILES ;
Cest un ordre DDL (Data Definition Language) : il ny a pas de ROLLBACK. La seule solution est de repartir dune
sauvegarde lefichierphysique,mmesilnestpassupprim,nestpasrcuprable.
Letablespace SYSTEMetletablespacepermanentpardfautnepeuventpastresupprims.Ilestrecommandde
passerletablespaceOFFLINEavantdelesupprimer.
LesoptionsdelordreSQLDROP TABLESPACEsont :
INCLUDINGCONTENTS
Cetteclauseestncessairesiletablespacenestpasvide,pourforcerlasuppressionpralabledessegmentsquiy
sontstocks.Siletablespacenestpasvideetqueloptionnestpasutilise,lerreurORA-01549estretourne :
ORA-01549: le tablespace nest pas vide ; utiliser loption INCLUDING
CONTENTS
ANDDATAFILES
Cetteoptiondelaclauseprcdentepermetenplus,desupprimerlesfichiersphysiquesdutablespace.Unmessage
estcritdanslefichierdalertedelinstancepourchaquefichierphysiquesupprimparOracle.

Sinon,ilsnesontpassupprims.

CASCADECONSTRAINTS
Cette clause permet en plus, de supprimer les contraintes dintgrit rfrentielle dfinies sur des tables hors du
tablespaceetquirfrencentdestableslintrieurdutablespace.Sidetellescontraintesexistentetqueloption
nestpasutilise,lerreurORA-02449estretourne :
ORA-02449: cls uniques/primaires de la table rfrences
par des cls trangres<$I[]ORA-02449>

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Organisationdustockagelintrieurduntablespace
1.Principes
Lorganisationdustockagelintrieurduntablespacepeuttrersumeparleschmaciaprs.

lintrieurduntablespace,lestockageestorganisensegmentscontenantuneouplusieursextensions(extents),
uneextensiontantunensembledeblocsOraclecontigus.
Lorsquunsegmentestcrdansuntablespace,Oracleluialloueune(ouplusieurs)extension(s)dansundesfichiers
de donnes du tablespace. Lorsque lespace initialement allou est plein (suite linsertion de donnes par
exemple),Oraclealloueunenouvelleextensionausegment,etainsidesuite.Touteslesextensionsallouesun
segment sont dans le tablespace de cration du segment, mais pas forcment cte cte, ni forcment dans le
mme fichier de donnes (si le tablespace est compos de plusieurs fichiers de donnes). Lorsquun segment est
supprim, les extensions quil occupe sont libres et rendues disponibles pour dautres segments. Des
crations/suppressionsfrquentesdesegmentsdansuntablespacepeuventdoncconduireunefragmentationde
lespacedisponibledanscetablespace.
Pourmmoire,ilexistequatretypesprincipauxdesegments :

lessegmentsdetable : espaceoccupparlestables

lessegmentsdindex : espaceoccupparlesindex

lessegmentsdannulation : espacetemporaireutilispourstockerlesinformationspermettantdannulerune
transaction
lessegmentstemporaires : espacetemporaireutilisnotammentlorsduntri.

Lapremireextensiondunsegmentcontientauminiumdeuxblocs,lepremiertantrservlenttedusegment
(ne contient pas de donnes utiles mais la carte des extensions alloues au segment). Il en est de mme pour
chaquefichierdedonnesdutablespace lepremierblocestunblocdentte(nousverronsbienttquelenttedu
fichierpeutcontenirdavantagedeblocs).
NousverronsauchapitreGestiondestablesetdesindexquilestpossible,souscertainesconditions,delibrerdes
extensionssanssupprimerlesegment.
Untablespacepeuttre"grparledictionnaire"ou"grlocalement".
Dans un tablespace "gr par le dictionnaire", les informations relatives la gestion de lespace (extensions
libres/alloues)sontenregistresdansledictionnairededonnes.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Dansuntablespace"grlocalement",lesinformationsrelativeslagestiondelespace(extensionslibres/alloues)
sont enregistres dans une bitmap, dans lentte de chaque fichier de donnes du tablespace. Chaque bit de la
bitmapcorresponduneextensionetvaut0ou1selonquelextensionestlibreoualloue.
Les tablespaces grs localement sont apparus dans Oracle8i. Depuis Oracle9i, les tablespaces sont, par dfaut,
grslocalement(saufletablespaceSYSTEMquiest,pardfaut,grparledictionnaire voirplusloin).
Oraclerecommandefortementdutiliserdestablespacesgrslocalement.Cestleseultypedetablespace
quiseratudidanscetouvrage.Ilestfortprobablequelestablespacesgrsparledictionnairenesoient
plussupportsparOracledansuneprochaineversion.
Oracleproposedeuxvariantespourlestablespacesgrslocalement :

Unegestiondite"automatique" : latailledesextensionsestdtermineautomatiquementparOracle.
Une gestion dite "uniforme" : la taille des extensions est uniforme, gale une valeur dfinie lors de la
crationdutablespace.

Par dfaut, un tablespace permanent gr localement est en gestion automatique des extensions la gestion
uniformedoittrespcifie.
Un tablespace temporaire gr localement est obligatoirement en gestion uniforme des extensions (dtaill
ultrieurement).

2.Spcifierlestockagedunsegment
LesclausesTABLESPACEetSTORAGEpeuventtreutilisesdanslesordresdecrationdessegmentspourspcifierle
stockagedusegment.
SyntaxedelaclauseTABLESPACE
TABLESPACE nom_tablespace
SyntaxedelaclauseSTORAGE
STORAGE ( [
[
[
[
[

INITIAL valeur [K|M] ]


NEXT valeur [K|M] ]
MINEXTENTS valeur ]
MAXEXTENTS { valeur | UNLIMITED } ]
PCTINCREASE valeur ] )

Exemplepourunetable :
CREATE TABLE categorie
(
identifiant NUMBER(6),
intitule
VARCHAR2(20)
)
TABLESPACE data
STORAGE (INITIAL 500K) ;
LesoptionsdelaclauseSTORAGEsont :
INITIAL
Tailledelapremireextensionalloue.
NEXT
Tailledeladeuximeextensionalloue.
MINEXTENTS
Nombreinitialdextension(s)alloue(s).

- 2-

ENI Editions - All rights reserved - Algeria Educ

MAXEXTENTS
Nombremaximaldextensionsallouables.
PCTINCREASE
Pourcentage daugmentation (0 100) de la taille des extensions, partir de la troisime, par rapport la
prcdente.
LamaniredontlaclauseSTORAGEestutiliseparOracledpenddumodedegestiondesextensionslintrieurdu
tablespace.
LaclauseSTORAGEavraimentbeaucoupdimportancepourlestockagedessegmentsdansuntablespacegrparle
dictionnaire,puisquellepermetdespcifierprcismentlestockagedusegment.Siuneclause MINIMUM EXTENTest
dfinieauniveaudutablespace,latailledesextensionsestventuellementajustepourdevenirunmultipledecette
tailleminimum.EncasdabsencedeclauseSTORAGE,lesegmenthritedelaclauseDEFAULT STORAGEventuellement
dfinie au niveau du tablespace. Si cette dernire est ellemme absente, Oracle utilise des valeurs par dfaut
(INITIAL=5blocsOracle,NEXT=5blocsOracle,PCTINCREASE=50).Danslecasduntablespacegrlocalement,la
clauseSTORAGEabeaucoupmoinsdimportancecar,deparsadfinition,letablespaceimposedescontraintessurla
tailledesextensions(taillechoisieparOracleoutailleuniforme).Danslapratique,seuleloptionINITIALarellement
delimportancepuisquelleindiqueOraclelatailleinitialesouhaitepourlesegment.

3.Spcifierlemodedegestionduntablespace
La clause EXTENT MANAGEMENT de lordre SQL CREATE TABLESPACE permet de spcifier le mode de gestion dun
tablespace.
Syntaxe :
EXTENT MANAGEMENT
DICTIONARY
| LOCAL [ AUTOALLOCATE | UNIFORM [ SIZE valeur [K|M] ] ]
Exemple :

Tablespacegrlocalementavecdesextensionsuniformes
CREATE TABLESPACE tbs_local_uniform
DATAFILE e:\oradata\hermes\tbs_local_uniform.dbf SIZE 10M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

TablespacegrlocalementavecdesextensionsgresparOracle
CREATE TABLESPACE tbs_local_auto
DATAFILE d:\oradata\hermes\tbs_local_auto.dbf SIZE 10M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

LesoptionsdelaclauseEXTENT MANAGEMENTsont :
DICTIONARY
Indiquequeletablespaceestgrparledictionnaire.DesclausesDEFAULT STORAGEetMINIMUM EXTENTpeuventtre
indiquesencomplment.
LOCAL
Indiquequeletablespaceestgrlocalement.LesclausesDEFAULT STORAGEetMINIMUM EXTENTsontinterdites.
AUTOALLOCATE
IndiquequelesextensionssontautomatiquementgresparOracle.
UNIFORM

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

IndiquequelesextensionsontunetailleuniformedfinieparlaclauseSIZE.SilaclauseSIZEnestpasspcifie,la
taillepardfautest1Mo.
SIZE
Spcifie la taille des extensions pour les tablespaces LOCAL UNIFORM. La taille peut tre donne en octets (pas de
symbole),enKo(symboleK)ouenMo(symboleM).
Par dfaut (clause EXTENT MANAGEMENT absente), un tablespace permanent est gr localement avec une gestion
automatiquedesextensions(AUTOALLOCATE).
Comme nous le verrons ultrieurement, un tablespace temporaire gr localement est obligatoirement en gestion
uniformedesextensions(UNIFORM).
Lorsquun tablespace permanent est gr localement, la gestion automatique de lespace libre lintrieur des
segments est, par dfaut, active (clause SEGMENT SPACE MANAGEMENT AUTO implicite dans lordre SQL CREATE
TABLESPACE) noustudieronscemodedegestionplusendtaildanslechapitreGestiondestablesetdesindex.
Compte tenu de ce mode de gestion, les extensions doivent contenir au minimum cinq blocs dans le cas dun
tablespacegrlocalementavecunegestionuniformedesextensions,ilfautentenircomptedanslaspcificationde
laclauseSIZE,souspeinedobtenirlerreursuivante :
ORA-03249: UNIFORM SIZE pour le tablespace gr par un espace de
segment AUTO doit avoir au moins 5 blocs
Lentte de chaque fichier de donnes dun tablespace gr localement utilise au minimum trois blocs (contre un
pouruntablespacegrparledictionnaire).Latailledufichierdedonnesdoitdonctreauminimumgaletrois
blocspluslatailleduneextension(valeurexpliciteoupardfautdelaclauseSIZEpouruntablespaceUNIFORM,64Ko
pouruntablespaceAUTOALLOCATE).Silatailleinitialedufichierdedonnesestsuprieure64 Kopluslatailledune
extension,unenttede64Koestenfaitallouaufichier,cequipermetdestockerunebitmapplusgrandeetdonc
degrerdentredejeu,unplusgrandnombredextensions.
Le package DBMS_SPACE_ADMIN <propose diffrentes procdures qui permettent de diagnostiquer et rparer les
tablespacesgrslocalement(encasdendommagementdelabitmapparexemple),oudeffectuerunemigrationde
tablespace gr par le dictionnaire en tablespace gr localement (et rciproquement). Dans ce dernier cas, le
rsultat obtenu est meilleur en crant un nouveau tablespace gr localement et en transfrant les segments de
lancientablespacedanslenouveau parcontre,loprationestpluslongue.

4.Gestiondesextensionslintrieurduntablespacegrlocalement
Dans le cas dune gestion automatique des extensions, Oracle utilise un petit nombre de tailles dextension
diffrentes (64 Ko, 1 Mo, 8 Mo, 64 Mo) et tente dallouer ct cte des extensions de mme taille, en nombre
suffisantpouroccuperdelespacepotentiellementutilisablepouruneextensiondetaillesuprieure(16extensions
de 64 Ko = une extension potentielle de 1 Mo). Cette technique permet de limiter les risques de fragmentation de
lespace disponible : si un segment contenant de nombreuses extensions est supprim, lespace libr peut tre
rutilisdediffrentesmanires.Latailledextensioninitialementchoisiepourunsegmentdpenddelatailleinitiale
dusegment :

64Kopourunsegmentdemoinsde1Mo

1Mopourunsegmentdemoinsde64Mo

8Mopourunsegmentdemoinsde1024Mo,etc.

LalgorithmeutilisparOraclepourcalculerlatailledesextensionsdansuntablespacegrlocalement,avec
une gestion automatique des extensions, nest pas document. Les valeurs indiques ici sont des valeurs
constatespourlacrationdunetabledansuntablespacevide.
DanslecasdunegestionuniformedesextensionstouteslesextensionsontlammetailledfinieparloptionSIZE
delaclauseEXTENT MANAGEMENT(1Mopardfaut).
Latailleinitialedusegmentestcalculelaidedesvaleurs INITIAL,NEXT,MINEXTENTS etPCTINCREASEdelaclause
STORAGE :

- 4-

siMINEXTENTS = 1alorsINITIAL(cestlecasleplusfrquent)

ENI Editions - All rights reserved - Algeria Educ

siMINEXTENTS = 2alorsINITIAL+NEXT

siMINEXTENTS = 3alorsINITIAL+NEXT+NEXT*(1+PCTINCREASE/100),etc.

LavaleurcalculedevientlanouvellevaleurINITIAL,tellequenregistredansledictionnairededonnes.
Oracle alloue alors une ou plusieurs extensions (sans tenir compte du MINEXTENTS initial), de taille uniforme (cas
UNIFORM)oudetailledtermineeninterne(casAUTOALLOCATE),pourobtenirunetailleinitialegaleousuprieure
lataillecalculeprcdemment.
titre dexemple, supposons que la table suivante soit cre dans un tablespace gr localement avec des
extensionsuniformesde128Ko :
CREATE TABLE adherent (...)
TABLESPACE tbs_local_uniform
STORAGE (INITIAL 400K NEXT 100K PCTINCREASE 0 MINEXTENTS 2);
Oraclealloue(400+100)/128=3,5arrondilentiersuprieur=4extensionsde128 Kopourlatable.
Si la mme table est cre dans un tablespace gr localement, avec une gestion automatique des extensions,
Oracle alloue (400+100)/64 = 7,8 arrondi lentier suprieur = 8 extensions de 64 Ko pour la table (une taille
dextensionde64KoestchoisieparOraclecarlatailleinitialedusegmentestinfrieure1Mo).
Lesinformationsenregistresdansledictionnairededonnes(vueDBA_TABLESetconsoeurs)sontlessuivantes :

LesvaleursMINEXTENTSetMAXEXTENTSsontignoresetforcesrespectivement1(mmesiplusieursextensions
onttallouesausegment)etUNLIMITED.
LavaleurcalculepourlatailleinitialedevientlanouvellevaleurINITIAL(mmesilespacerellementallouest
suprieur,comptetenudelarrondisurlenombredextensions).
PouruntablespaceAUTOALLOCATE,lesvaleursNEXTetPCTINCREASEsontignoresetmisesNULL(cestOraclequi
dcide).
Pour un tablespaceUNIFORM,NEXTestmisgallatailledesextensionsdutablespace(optionSIZEdelaclause
UNIFORMdutablespace)etPCTINCREASEestmisgal0(touteslesextensionsontlammetaille).

Conclusion : les options NEXT, PCTINCREASE, MINEXTENTS et MAXEXTENTS ne sont pas dune grande utilit pour un
tablespacegrlocalement.
Lorsque lespace initialement allou au segment est plein, des extensions supplmentaires sont alloues au
segment.
SilesegmenteststockdansuntablespaceUNIFORM,touteslesextensionscomplmentairesallouesausegment
ontlammetaille.
Si le segment est stock dans un tablespace AUTOALLOCATE, cest Oracle qui dtermine la taille des nouvelles
extensionsallouesausegment,selonunalgorithmenondocument,Visiblement,lefonctionnementestlesuivant
lorsquune taille initiale de 64 Ko a t utilise : tant que le segment a moins de 16 extensions, Oracle alloue des
extensions de 64 Ko, puis il passe des extensions de 1 Mo, jusqu 64 Mo, puis des extensions de 8 Mo. Par
ailleurs, Oracle tente dallouer conscutivement des extensions de mme taille, jusqu obtenir un nombre
dextensionsconscutivesoccupantunespacegallatailledextensionsuprieure.
Exemple :
SQL> -- cration dun tablespace gr localement avec
SQL> -- une gestion automatique des extensions
SQL> CREATE TABLESPACE test
2 DATAFILE e:\oradata\hermes\test01.dbf SIZE 10M
3 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
Tablespace cr.
SQL> -- cration de trois tables : deux "petites" et une "grosse"
SQL> CREATE TABLE table200k(c NUMBER)
2 TABLESPACE test
3 STORAGE(INITIAL 200K);
Table cre.
SQL> CREATE TABLE tablexk(c NUMBER)

openmirrors.com

sans clause STORAGE

ENI Editions - All rights reserved - Algeria Educ

- 5-

2 TABLESPACE test;
Table cre.
SQL> CREATE TABLE table2M(c NUMBER)
2 TABLESPACE test
3 STORAGE(INITIAL 2M);
Table cre.
SQL> -- supervision du stockage dans le tablespace
SQL> @info_stockage_tablespace
BLOCK_ID EXTENT_ID SEGMENT_NAME
BLOCKS TAILLE_KO
---------- ---------- --------------- ---------- ---------9
0 TABLE200K
8
64
17
1 TABLE200K
8
64
25
2 TABLE200K
8
64
33
3 TABLE200K
8
64
41
0 TABLEXK
8
64
49
*** LIBRE ***
88
704
137
0 TABLE2M
128
1024
265
1 TABLE2M
128
1024
393
*** LIBRE ***
888
7104
Cetexempleillustrelespointssuivants:

Oracleachoisidesextensionsde64Kopourles"petites"tablesetdesextensionsde1 Mopourla"grosse"
table.
Oraclealaissdelespacelibreentrelespetitestablesetlagrossetable : 704Ko,soit11extensionsde64
Ko. Cet espace est plutt rserv des extensions de 64 Ko, ce qui lui permet davoir un total de 16
extensions de 64 Ko conscutives (soit potentiellement une extension de 1 Mo en cas de libration de ces
extensions).

5.CasdestablespacesSYSTEMetSYSAUX
Depuis Oracle9i release 2 (version 9.2), le tablespaceSYSTEM peut tre gr localement, et dans ce cas, forcment
avecunegestionautomatiquedesextensions(EXTENT MANAGEMENT LOCAL AUTOALLOCATE)etunegestionmanuellede
lespacedanslessegments(SEGMENT SPACE MANAGEMENT MANUAL).Pardfaut,ilestgrparledictionnaire.Crerun
tablespaceSYSTEMgrlocalementalesconsquences(positives)suivantes :

Touslestablespacesdoiventtregrslocalement(conseillparOracle)

Untablespacetemporairepardfautdoittrecrdslacrationdelabase(conseillparOracle)

Si la gestion automatique des segments dannulation est active (conseill par Oracle), un tablespace
dannulationdoittrecrdslacrationdelabasededonnes(conseillparOracle).

Danslordre SQLCREATE DATABASE, la clauseEXTENT MANAGEMENT LOCALpermetdespcifierqueletablespaceSYSTEM


estgrlocalement :
CREATE DATABASE hermes
...
DATAFILE e:\oradata\hermes\system01.dbf SIZE 200M
AUTOEXTEND ON NEXT 10M
EXTENT MANAGEMENT LOCAL
...
Le tablespace SYSAUX est obligatoirement gr localement avec une gestion automatique des extensions (EXTENT
MANAGEMENT LOCAL AUTOALLOCATE) et une gestion automatique de lespace dans les segments (SEGMENT SPACE
MANAGEMENT AUTO) ilnyarienspcifierlorsdelacrationdelabasededonnes.
Encasdemiseniveaudunebasededonnes,letablespaceSYSAUXestcrparunordreSQLCREATE TABLESPACE.
Lasyntaxesuivantedoittreutilise :
CREATE TABLESPACE sysaux

- 6-

ENI Editions - All rights reserved - Algeria Educ

DATAFILE spcification_fichier
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

Tablespacetemporaire
1.Rledutablespacetemporaire
Lorsquunerequtencessiteuntri(clauseORDER BYparexemple),Oracletentedefaireletrienmmoire,dansla
PGAduprocessusserveurquiexcutelarequte.
Siletrinetientpasenmmoire,Oracleledcoupeenmorceauxettriechaquemorceauindividuellementenstockant
desrsultatsintermdiairessurdisquedansdessegmentstemporaires.
Un segment temporaire peut tre cr dans nimporte quel tablespace mais ce nest pas souhaitable pour les
performances.
Oraclerecommandedoncdecreruntablespaceddi,detypeTEMPORARY,pourstockerlessegmentstemporaires,
etdeprfrenceuntablespacetemporairegrlocalement.Ilestpossibledecreruntablespacetemporairegr
parledictionnairemaislesperformancessontalorslimitesetcechoixestdprciparOracle cestpourquoinous
nelvoqueronspasdavantage.
Lesrequtesquipeuventdemanderuntrisontlessuivantes :

SELECT ... ORDER BY

SELECT ... GROUP BY

SELECT DISTINCT ...

requtesensemblistes(UNION, INTERSECT, MINUS)

CREATE INDEX

calculdesstatistiques

jointurespartrifusion(sortmergejoin).

Utiliser un tablespace permanent comme tablespace temporaire est possible (cest ce qui passe par dfaut avec le
tablespace SYSTEM) mais ce nest pas conseill, notamment du point de vue des performances. En effet, dans un
tablespace permanent, les segments temporaires sont allous et librs chaque tri cest mauvais pour les
performances et cela risque de fragmenter lespace disponible du tablespace. Dans le cas de lutilisation dun
tablespacetemporaire,unseulsegmentdetriestcr,parlepremiertri,etrutilisparlestrissuivants.
Lesegmenttemporairepeuttrepartagparplusieurstris(maispaslesextensions)etilestlibruniquementlors
delarrtdelinstance decettemanire,ilyamoinsdallocationdynamiquedextensions,etlesperformancessen
trouventoptimises.
Untablespacepermanentgrlocalementnepeutpastreutiliscommetablespacetemporaire cenest
paslecasduntablespacepermanentgrparledictionnaire.
Les tablespaces temporaires sont aussi utiliss pour le stockage des tables temporaires cres par lordre SQL
CREATE GLOBAL TEMPORARY TABLE.

2.Groupedetablespacestemporaires
Avantlaversion10,unerequtenepouvaitutiliserquunseultablespacetemporaire,cequiposaitdesproblmesde
performancesilarequtesexcutaitenparallle.Danscecas,plusieursprocessusserveurtraitaientlarequteen
parallle et chaque processus pouvait solliciter un accs au tablespace temporaire, ce qui posait parfois des
problmesdecontentionsauniveaudesentres/sorties.
Depuis la version 10, il est possible de dfinir des groupes de tablespaces temporaires. Dans le cas de lexcution
dunerequteenparallle,lesdiffrentstablespacestemporairesdugroupepourronttreutilissparlesdiffrents
processusserveurquitraitentlarequte.Celaneprsenterellementunintrtdupointdevuedesperformances
quesilesfichiersdedonnesdesdiffrentstablespacestemporairessontstockssurdesdisquesdiffrents.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Le nom dungroupedetablespacestemporairespeuttreutilispartoutounnomdetablespacetemporaireest
employ. Lespace de nommage des groupes de tablespaces temporaires est dailleurs celui des tablespaces un
groupedetablespacetemporairesnepeutpasporterlemmenomquuntablespace.
Ungroupedetablespacestemporairesnestpasexplicitementcrousupprim.Ilestimplicitementcrlorsquun
premier tablespace temporaire est affect au groupe et implicitement supprim, lorsque le dernier tablespace
temporaireestretirdugroupe.

3.Crationduntablespacetemporairegrlocalement
LordreSQLCREATE TEMPORARY TABLESPACEpermetdecreruntablespacetemporairegrlocalement.
Syntaxe
CREATE [ BIGFILE | SMALLFILE ] TEMPORARY TABLESPACE nom
TEMPFILE spcification_fichier [,...]
[ EXTENT MANAGEMENT LOCAL ] [ UNIFORM [ SIZE valeur [K|M] ] ]
[ TABLESPACE GROUP nom_groupe ] ;
- spcification_fichier
nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE]
[ clause_auto_extend ]
- clause_auto_extend
AUTOEXTEND { OFF | ON [ NEXT valeur [K|M|G|T] ]
[ MAXSIZE { UNLIMITED | valeur [K|M|G|T] } ] }
Exemple :
CREATE TEMPORARY TABLESPACE tempo
TEMPFILE e:\oradata\hermes\tempo01.dbf
SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1G ;
LesoptionsdelordreSQLCREATE TEMPORARY TABLESPACEontlammesignificationquelesoptionsdemmenomde
lordreSQLCREATE TABLESPACE(voirlasectionTablespacepermanent).
Vouspouveznanmoinsnoterlespointssuivants :

UntablespacetemporairegrlocalementpeuttreuntablespaceBIGFILE danscecas,unseulfichierde
donnespeuttrespcifi.
LesfichiersdedonnesduntablespacetemporairegrlocalementsontspcifisparlemotclTEMPFILEet
nonDATAFILE.
Untablespacetemporairegrlocalementprsenteforcmentunegestionuniformedesesextensions.Les
clausesEXTENT MANAGEMENT LOCALetUNIFORMsontdoncoptionnelles.Pardfaut,latailledesextensionsest
de 1 Mo elle est satisfaisante dans une grande majorit des cas. La clause SIZE peut tre utilise pour
spcifieruneautretaille danscecas,lemotclUNIFORMdoittrementionn.
Un tablespace temporaire gr localement utilise obligatoirement la taille de bloc standard il nest pas
possibledemployeruneautretailledebloc.
UntablespacetemporairegrlocalementestobligatoirementONLINE.
Les clausesLOGGING, NOLOGGING,FORCE LOGGINGet FLASHBACK sont interdites pour un tablespace temporaire
grlocalement.

LaclauseTABLESPACE GROUPpermetdaffecterletablespacetemporaireungroupe silegroupenexistepas,ilest


implicitementcr.Pardfaut,letablespacetemporairenappartientaucungroupe.

4.Tablespacetemporairepardfaut
Un tablespace temporaire nest rellement utilis que lorsquil est "affect" aux utilisateurs, grce la clause
TEMPORARY TABLESPACEdesordresSQLCREATE USERetALTER USER(voirlechapitreGestiondesutilisateursetdeleurs
droits). Si cette clause est omise, cest le tablespace SYSTEM qui est affect comme tablespace temporaire
- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

lutilisateur,cequiestmauvaispourlesperformances.
Pourrsoudreceproblmeetfaciliterlagestiondesutilisateurs,ilestpossiblededfiniruntablespacetemporaire
par dfaut, ds la cration de la base de donnes, ou ultrieurement. Cette technique nempche pas dutiliser
dautrestablespacestemporairesaffectsspcifiquementdesutilisateurspourdesbesoinsparticuliers.
Un tablespace SYSTEM gr localement ne peut pas tre utilis comme tablespace temporaire par dfaut, do la
ncessit,danscecas,decreretdfiniruntablespacetemporairepardfautdslacrationdelabase.
Si le tablespaceSYSTEM est gr par le dictionnaire, et sil est utilis comme tablespace temporaire par dfaut, un
messageestcritdanslefichierdalertedelinstance.
Pour crer et dfinir un tablespace temporaire par dfaut lors de la cration de la base de donnes, vous devez
utiliserlaclauseDEFAULT TEMPORARY TABLESPACEdelordreSQLCREATE DATABASE.
Syntaxe
[ BIGFILE | SMALLFILE ] DEFAULT TEMPORARY TABLESPACE nom
TEMPFILE spcification_fichier [,...]
[ EXTENT MANAGEMENT LOCAL ] [ UNIFORM [ SIZE valeur [K|M] ] ]
Exemple :
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE e:\oradata\hermes\temp01.dbf SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 1024M

CetteclausedoittreprsentesiletablespaceSYSTEMestgrlocalement.
La syntaxe est la mme que celle de lordre SQL CREATE TEMPORARY TABLESPACE. Un tablespace temporaire gr
localement est cr selon la spcification et dfini comme tablespace temporaire par dfaut. Notez bien que le
tablespacetemporairepardfautainsicrestforcmentgrlocalement(cequiestconseillparOracle).
Letablespacetemporaireainsicrestprisencomptedslacrationdelabasededonnes,etdoncaffectcomme
tablespacetemporaireauxutilisateurscrsdurantcetteopration(notammentSYSetSYSTEM).
Pourcreretdfiniruntablespacetemporairepardfautaprslacrationdelabasededonnes,vousdevez :

creruntablespacetemporaire,grcelordreSQLCREATE TEMPORARY TABLESPACEprsentprcdemment


le dfinir comme tablespace temporaire par dfaut, grce la clause DEFAULT TEMPORARY TABLESPACE de
lordreSQLALTER DATABASE.

Syntaxe
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE nom ;
nomdoitdsigneruntablespacetemporaireouungroupedetablespacestemporairesquiexistedj.
LorsquecetordreSQLestexcut,touslesutilisateursquiavaientlancientablespacetemporairepardfautcomme
tablespacetemporairesevoientautomatiquementattribuerlenouveau.
Pourretrouverlenomdutablespacetemporairepardfaut,vouspouvezinterrogerlavueDATABASE_PROPERTIESpour
lapropritDEFAULT_TEMP_TABLESPACE :
SQL> SELECT property_value FROM database_properties
2 WHERE property_name = DEFAULT_TEMP_TABLESPACE ;
PROPERTY_VALUE
-----------------------------TEMP

5.Administrationdestablespacestemporairesgrlocalement
Ladministration dun tablespace temporaire gr localement seffectue avec les ordres SQL prsents pour les
tablespacespermanents,avecquelquesrestrictions :ALTER TABLESPACE,ALTER DATABASEpourlagestiondesfichiers
dedonnesetDROP TABLESPACE.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Les fichiers de donnes dun tablespace temporaire gr localement sont particuliers Oracle les appelle dailleurs
"fichiersdedonnestemporaires".Lesdiffrencesavecunfichierdedonnesordinairesontlessuivantes :

IlssonttoujoursenmodeNOLOGGING

Ilsnepeuventpastredsactivs

Ilsnepeuventpastrepasssenlectureseule.

Les fichiers de donnes temporaires des tablespace temporaires grs localement tant en mode NOLOGGING, les
modifications ne sont pas enregistres dans les fichiers de journalisation (intressant pour les performances). Par
contre,encasdeperteoudendommagementdundecesfichiers,larcupration(RECOVER) nestpaspossible.Ce
nest pas trs grave puisquun tablespace temporaire ne contient pas de donnes permanentes en cas de
problme,ilsuffitdesupprimerletablespace,oplussimplementlefichierdedonnes,puisdelerecrer.
LesfichiersdedonnestemporairessontadministrsaveclesordresSQLALTER TABLESPACEet ALTER DATABASE,en
remplaantlemotclDATAFILEparlemotclTEMPFILE.
Lesoprationssuivantessontautorises :

Ajoutdunfichierdedonnestemporaireuntablespacetemporairegrlocalement
ALTER TABLESPACE nom_tablespace
ADD TEMPFILE spcification_fichier ;

Modificationdelatailledunfichierdedonnestemporaire

Touttypedetablespace
ALTER DATABASE TEMPFILE nom_complet [,...]
RESIZE valeur [K|M|G|T] ;

TablespaceBIGFILEuniquement
ALTER TABLESPACE nom_tablespace_bigfile
RESIZE valeur [K|M|G|T];

ModificationdelaclauseAUTOEXTENDdunfichierdedonnestemporaire

Touttypedetablespace
ALTER DATABASE TEMPFILE nom_complet [,...] clause_auto_extension;

TablespaceBIGFILEuniquement
ALTER TABLESPACE nom_tablespace_bigfile clause_auto_extension;

Parcontre,untablespacetemporairegrlocalementnepeutpastrepassOFFLINE.
Demme,unfichierdedonnestemporairenepeutpastrerenommparlordreSQLALTER TABLESPACE ... RENAME
DATAFILE(puisquilnepeutpastrepassOFFLINE).Parcontre,renommerunfichierdedonnestemporaireavecun
ALTER DATABASE RENAME FILE est possible (base monte). Pour renommer un fichier de donnes temporaire base
ouverte,etdoncaussipourledplacer,ilfautlesupprimeretlercrer.
Exemple :
-- supprimer le fichier de donnes temporaire
SQL> ALTER DATABASE<$IALTER DATABASE;TEMPFILE DROP>
2
TEMPFILE e:\oradata\hermes\temp01.dbf DROP
3
INCLUDING DATAFILES;
Base de donnes modifie.
-- le recrer
SQL> ALTER TABLESPACE temp ADD

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

2
TEMPFILE f:\oradata\hermes\temp01.dbf SIZE 100M
3
AUTOEXTEND ON NEXT 10M MAXSIZE 1G;
Tablespace modifi.
NotezlutilisationdeloptionINCLUDING DATAFILESquipermetdesupprimerphysiquementlefichier.
UnfichierdedonnestemporairepeutaussitresupprimparunordreSQLALTER TABLESPACE ... DROP TEMPFILE.
Parailleurs,depuislaversion11,ilestpossibledertrciruntablespacetemporairegrlocalement.
Syntaxe
ALTER TABLESPACE nom SHRINK SPACE [ KEEP taille [K|M|G] ] ;
ALTER TABLESPACE nom SHRINK TEMPFILE nom_complet | numro_fichier
[ KEEP taille [K|M|G] ] ;
Cette commande est intressante pour librer lespace utilis, par exemple, par un tri volumineux qui vient de se
terminer.Lapremiresyntaxepermetdertrcirtouslesfichiersdedonnestemporairesdutablespacealorsquela
deuxime syntaxe travaille sur un fichier spcifique. La clause KEEP dfinit une taille minimum conserver pour le
tablespaceoulefichier sicetteclauseestabsente,Oracletentedelibrerlemaximumdespace.SilaclauseKEEP
esttropbasse,uneerreurestretourne :
ORA-03214: La taille de fichier indique est infrieure au minimum requis
Curieusement,cetteerreurestaussiretournesilaclauseKEEPestabsenteetquOracletentedertrcirlefichier
unetailleinfrieureauminimumrequis.
Enfin, le tablespace temporaire par dfaut ne peut pas tre supprim. Il en est de mme pour tout tablespace
temporaire appartenant un groupe de tablespaces temporaires utilis comme tablespace temporaire par dfaut.
Pourplaceruntablespacetemporairedansungroupedetablespacestemporaires,lechangerdegroupeouleretirer
dungroupe,vouspouvezutiliserlaclauseTABLESPACE GROUPdelordreSQLALTER TABLESPACE.
Syntaxe :
ALTER TABLESPACE nom_tablespace TABLESPACE GROUP nom_groupe | ;
Vous pouvez utiliser une chane vide pour naffecter le tablespace aucun groupe. Lors de laffectation dun
tablespace temporaire un groupe, le groupe est implicitement cr sil nexiste pas. Lorsquun tablespace
temporaire est retir dun groupe, le groupe est implicitement supprim sil ne contient plus de tablespace
temporaire.
Vousnepouvezpasretirerlederniertablespacetemporairedungroupesicegroupeestutiliscommetablespace
temporairepardfaut.

ENI Editions - All rights reserved - Algeria Educ

- 5-

Conclusions
1.Avantagesdestablespacesgrslocalement
Lestablespacesgrslocalementprsententdenombreuxavantages :

moinsdeSQLrcursif,voiredegestionrcursivedelespace,lilamisejourdudictionnairededonnes
extensionsadjacenteslibresautomatiquementidentifies,cequiliminelesoprationsdefusion(coalesce)
desextensionsadjacenteslibres
limitation,voiredisparition,desproblmesdefragmentationdelespacedisponible.

Avecuntablespacegrparledictionnaire,lorsquelinstancealloueoulibreuneextension,elledoitlirepuismettre
jour le dictionnaire de donnes, par lintermdiairedordre SQL SELECT, INSERT, UPDATEou DELETE ces diffrents
ordres sont appels "SQL rcursif" et sont susceptibles dutiliser de lespace dannulation dans le segment
dannulation SYSTEM. Lors de la mise jour du dictionnaire, Oracle peut manquer de place dans la table du
dictionnaire ou dans le segment dannulation : il en rsulte une allocation rcursive despace, pnalisante pour les
performances.Cesproblmesdisparaissentengrandepartieaveclestablespacesgrslocalement.
Dansuntablespacegrparledictionnaire,lorsquuneextensionestlibre,Oracleneregardepasimmdiatement
si elle est adjacente une extension dj libre. Plus tard, en tche de fond ou en cas de recherche dunegrande
extension, le processus SMON fusionnera les extensions adjacentes libres du tablespace : cest lopration de
coalesce. Cette opration peut prendre beaucoup de temps sil y a un grand nombre dextensions libres dans le
tablespace.Dansuntablespacegrlocalement,cetteoprationnestpasncessairecarlesextensionsadjacentes
libressontautomatiquementidentifiesdanslabitmap(zrosquisesuivent).
Undesobjectifsdestablespacesgrslocalementestderationaliserlutilisationdelespacedanslestablespaceset
dviter le phnomne de fragmentation de lespace disponible. Cette fragmentation de lespace disponible peut
survenir suite une forte activit dallocation/librationdextensions : il peut y avoir beaucoup despace disponible
dans le tablespace mais sous la forme dune multitude de petites extensions non adjacentes. Le risque de
fragmentation disparat compltement dans un tablespace gr localement avec une gestion uniforme des
extensions : touteslesextensionsallouesdansletablespaceontforcmentlammetailleetuneextensionlibre
pourraobligatoirementtrerutilise.
Lorsque les extensions sont gres par Oracle, linstance utilise un algorithme qui vise rduire le risque de
fragmentation,dunepartenutilisantunpetitnombredetaillesdiffrentesdextensions,etdautrepartenallouant
conscutivementdesextensionsqui,regroupes,peuventconstitueruneextensiondetaillesuprieure.

2.Recommandations
Oraclerecommandedutiliserdestablespacesgrslocalement :

pourletablespaceSYSTEM
pour le tablespace temporaire, en le crant ds la cration de la base de donnes, pour avoir en plus un
tablespacetemporairepardfaut

pourlessegmentsdannulation(chapitreGestiondesinformationsdannulation)

pourlestablespacesdestablesetdesindex.

Quel mode de gestion choisir pour les extensions des tablespaces de tables et dindex ? Prfrez une gestion
automatiquedesextensions,sivousnavezpasunebonnevisiondesbesoinsenespaceetquevousnesouhaitiez
exercer aucun contrle sur lallocation des extensions. Choisissez une gestion uniforme des extensions si vous
souhaitezcontrlerlallocationdesextensionsetquevousayezunebonnevisiondevosbesoinsenespace.
Les tablespaces grs localement avec une gestion automatique des extensions sont intressants lorsque la
volumtrie des segments est compltement inconnue ils permettent une gestion plus saine de lespace que les
tablespaces grs par le dictionnaire. Si les besoins sont connus avec prcision, utiliser des tablespaces grs
localementavecunegestionuniformedesextensionsnestpasforcmentimmdiat,notammentpourdterminerla
bonnetailledextension danscecas,ilfautsansdouteemployerplusieurstablespacespoursparerlessegments
engrandescatgories.Exemple :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

les"petits"(parex.entre0et2Mo) : untablespaceavecdesextensionsde64 Ko

les"moyens"(parex.entre2Moet64Mo) : untablespaceavecdesextensionsde2 Mo

les"gros"(parex.audelde64Mo) : untablespaceavecdesextensionsde64 Mo(etsansdouteplusieurs


tablespaces).

Dans le chapitre Gestion des tables et des index, nous verrons comment estimer la taille des segments une
chancedonne.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Trouver des informations sur les tablespaces et les fichiers de


donnes
1.Tablespacesetfichiersdedonnes
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlestablespacesetlesfichiersde
donnes :

DBA_TABLESPACESouV$TABLESPACE : informationssurlestablespaces
DBA_DATA_FILES ou V$DATAFILE : informations sur les fichiers de donnes <(sauf ceux des tablespaces
temporairesgrslocalement)
DBA_TEMP_FILESouV$TEMPFILE : informationssurlesfichiersdedonnesdestablespacestemporairesgrs
localement
DBA_TABLESPACE_GROUPS : informationssurlesgroupesdetablespacestemporaires
DATABASE_PROPERTIES : proprits de la base de donnes, dont le tablespace temporaire par dfaut, le
tablespacepermanentpardfautetletypedetablespacepardfaut(BIGFILEouSMALLFILE).

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs.
DBA_TABLESPACES
TABLESPACE_NAME
Nomdutablespace.
CONTENTS
Typedutablespace(PERMANENTouTEMPORARYouUNDO).
EXTENT_MANAGEMENT
DICTIONARY : letablespaceestgrparledictionnaire. LOCAL : letablespaceestgrlocalement.
ALLOCATION_TYPE
USER : gestion des extensions par "lutilisateur" (tablespace gr par le dictionnaire). SYSTEM : gestionautomatique
des extensions (tablespace gr localement). UNIFORM : gestion uniforme des extensions (tablespace gr
localement).
STATUS
Statutdutablespace(ONLINE, OFFLINEouREAD ONLY).
BLOCK_SIZE
Tailledeblocdutablespace.
LOGGING
Modedejournalisationpardfaut(LOGGINGouNOLOGGING).
FORCE_LOGGING
IndiquesiletablespaceestenFORCE LOGGING(YESouNO).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

SEGMENT_SPACE_MANAGEMENT
Indiquesilespacelibredanslessegmentsestgrmanuellement(MANUAL)ouautomatiquement(AUTO).
BIGFILE
IndiquesiletablespaceestuntablespaceBIGFILE(YESouNO).
Exemple :
SQL> SELECT tablespace_name,contents,extent_management,
2
allocation_type,bigfile,block_size,status
3 FROM dba_tablespaces;
TABLESPACE_NAME CONTENTS EXTENT_MAN ALLOCATIO BIG BLOCK_SIZE
--------------- --------- ---------- --------- --- ---------SYSTEM
PERMANENT LOCAL
SYSTEM
NO
8192
UNDOTBS
UNDO
LOCAL
SYSTEM
NO
8192
SYSAUX
PERMANENT LOCAL
SYSTEM
NO
8192
TEMP
TEMPORARY LOCAL
UNIFORM
NO
8192
DEFTBS
PERMANENT LOCAL
SYSTEM
NO
8192
DATA
PERMANENT LOCAL
UNIFORM
NO
8192
INDX
PERMANENT LOCAL
SYSTEM
NO
8192
JE_SUIS_GROS
PERMANENT LOCAL
SYSTEM
YES
8192

STATUS
-----ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE

DBA_DATA_FILES etDBA_TEMP_FILES
FILE_NAME
Nomdufichierdedonnes(chemincomplet).
FILE_ID
Identifiantdufichierdedonnes.
TABLESPACE_NAME
Nomdutablespaceauquellefichierdedonnesappartient.
BYTES
Tailledufichierenoctets.
BLOCKS
TailledufichierenblocsOracle.
STATUS
Statutdufichier(INVALIDouAVAILABLE).
RELATIVE_FNO
Numrorelatifdufichierparrapportautablespace.
AUTOEXTENSIBLE
Indicateurdautoextensibilit(YESouNO).
MAXBYTES
Taillemaximumdufichierenoctets.
MAXBLOCKS

- 2-

ENI Editions - All rights reserved - Algeria Educ

TaillemaximumdufichierenblocsOracle.
INCREMENT_BY
TailledelincrmentdelautoextensionenblocsOracle.
USER_BYTES
Tailleutiledufichierenoctets(gnralementtailledufichiermoinslesblocsdentte).
USER_BLOCKS
TailleutiledufichierenblocsOracle(gnralementtailledufichiermoinslesblocsdentte).
Exemple :
SQL> SELECT tablespace_name,file_name,status,autoextensible,
2
blocks,user_blocks,maxblocks
3 FROM (
SELECT * FROM dba_data_files
4
UNION ALL SELECT * FROM dba_temp_files);
TABLESPACE_NAME FILE_NAME
STATUS
--------------- ---------------------------------------- --------BLOCKS USER_BLOCKS MAXBLOCKS
---------- ----------- ---------SYSTEM
F:\ORADATA\HERMES\SYSTEM01.DBF
AVAILABLE
29440
29432
4194302
UNDOTBS
E:\ORADATA\HERMES\UNDOTBS01.DBF
AVAILABLE
20480
20472
131072
SYSAUX
E:\ORADATA\HERMES\SYSAUX01.DBF
AVAILABLE
14080
14072
4194302
DEFTBS
E:\ORADATA\HERMES\DEFTBS01.DBF
AVAILABLE
6400
6392
64000
DATA
F:\ORADATA\HERMES\DATA01.DBF
AVAILABLE
64000
62720
102400
INDX
E:\ORADATA\HERMES\INDX01.DBF
AVAILABLE
64000
63992
102400
DATA
F:\ORADATA\HERMES\DATA02.DBF
AVAILABLE
25600
24320
64000
JE_SUIS_GROS
E:\ORADATA\HERMES\JE_SUIS_GROS.DBF
AVAILABLE
128
112
0
TEMP
F:\ORADATA\HERMES\TEMP01.DBF
AVAILABLE
12800
12672
131072

AUT
---

YES
YES
YES
YES
YES
YES
YES
NO
YES

V$TABLESPACE
TS#
Numrodutablespace.
NAME
Nomdutablespace.
BIGFILE
IndiquesiletablespaceestuntablespaceBIGFILE (YESouNO).
V$DATAFILEetV$TEMPFILE
TS#
Numrodutablespaceauquellefichierdedonneappartient.
FILE#
Identifiantdufichierdedonnes.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

NAME
Nomdufichierdedonnes(chemincomplet).
STATUS
Statutdufichierdedonnes(OFFLINE,ONLINE,SYSTEMouRECOVER).
ENABLED
Disponibilitdufichierdedonnes(DISABLED,READ ONLY,READ WRITE).
BYTES
Tailledufichierenoctets.
CREATE_BYTES
Tailledufichiersacrationenoctets.
BLOCKS
TailledufichierenblocsOracle.
BLOCK_SIZE
Tailledeblocdufichierdedonnes.
CREATION_TIME
Dateetheuredecrationdufichier.
CHECKPOINT_CHANGE#
NumroSCNdudernierpointdereprise(nexistepasdansV$TEMPFILE).
CHECKPOINT_TIME
Dateetheuredudernierpointdereprise(nexistepasdansV$TEMPFILE).
Exemple :
SQL> SELECT file#,name,status,enabled,checkpoint_change#
2 FROM v$datafile ;
FILE# NAME
STATUS ENABLED
CHECKPOINT
----- ----------------------------------- ------- ---------- ---------1 F:\ORADATA\HERMES\SYSTEM01.DBF
SYSTEM READ WRITE
421362
2 E:\ORADATA\HERMES\UNDOTBS01.DBF
ONLINE READ WRITE
421362
3 E:\ORADATA\HERMES\SYSAUX01.DBF
ONLINE READ WRITE
421362
4 E:\ORADATA\HERMES\DEFTBS01.DBF
ONLINE READ WRITE
421362
5 F:\ORADATA\HERMES\DATA01.DBF
ONLINE READ WRITE
421362
6 E:\ORADATA\HERMES\INDX01.DBF
ONLINE READ WRITE
421362
8 F:\ORADATA\HERMES\DATA02.DBF
ONLINE READ WRITE
421362
9 E:\ORADATA\HERMES\JE_SUIS_GROS.DBF ONLINE READ WRITE
421362
DBA_TABLESPACE_GROUPS
GROUP_NAME
Nomdugroupe.
TABLESPACE_NAME

- 4-

ENI Editions - All rights reserved - Algeria Educ

Nomdutablespace.
DATABASE_PROPERTIES
PROPERTY_NAME
Nomdelaproprit :
DEFAULT_TBS_TYPE : typedetablespacepardfaut(SMALLFILEouBIGFILE).
DEFAULT_TEMP_TABLESPACE : tablespacetemporairepardfaut(peuttreungroupedetablespacestemporaires).
DEFAULT_PERMANENT_TABLESPACE : tablespacepermanentpardfaut.
PROPERTY_VALUE
Nomdutablespace.
Exemple
SQL> SELECT property_name,property_value
2 FROM database_properties
3 WHERE property_name IN (DEFAULT_TEMP_TABLESPACE,
4
DEFAULT_PERMANENT_TABLESPACE,
5
DEFAULT_TBS_TYPE);
PROPERTY_NAME
PROPERTY_VALUE
------------------------------ ---------------DEFAULT_TEMP_TABLESPACE
TEMP
DEFAULT_PERMANENT_TABLESPACE
DEFTBS
DEFAULT_TBS_TYPE
SMALLFILE

2.Supervisiondustockagedanslestablespaces
Plusieurs vues du dictionnaire de donnes permettent dobtenir des informations sur le stockage lintrieur des
tablespaces :

DBA_FREE_SPACE : informationssurlespacedisponiblelintrieurduntablespace

DBA_SEGMENTS : informationssurlessegmentsallouslintrieurduntablespace

DBA_EXTENTS : informationssurlesextensionsalloueslintrieurduntablespace

V$SORT_SEGMENT : supervisiondustockagedessegmentstemporaires

V$SYSAUX_OCCUPANTS : informationssurlescomposantsquiutilisentdelespacedansletablespaceSYSAUX.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs.
DBA_SEGMENTS
OWNER
Nomdupropritairedusegment.
SEGMENT_NAME
Nomdusegment.
SEGMENT_TYPE
Typedusegment(TABLE, INDEX, ROLLBACK, TYPE2 UNDO,etc.).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

TABLESPACE_NAME
Nomdutablespacequicontientlesegment.
BYTES
Tailledusegmentenoctets.
BLOCKS
TailledusegmentenblocsOracle.
EXTENTS
Nombredextensionsallouesausegment.
INITIAL_EXTENT
Tailleinitialedusegment.
Exemple :
SQL> SELECT segment_name,segment_type,
2
initial_extent/1024 initial_ko,blocks,extents
3 FROM dba_segments WHERE tablespace_name=TEST;
SEGMENT_NAME
SEGMENT_TYPE
INITIAL_KO
BLOCKS
EXTENTS
--------------- ------------------ ---------- ---------- ---------TABLE2M
TABLE
2048
256
2
TABLE200K
TABLE
200
32
4
DBA_FREE_SPACE
TABLESPACE_NAME
Nomdutablespacequicontientlextensionlibre.
FILE_ID
Identifiantdufichierdedonnesquicontientlextensionlibre.
BLOCK_ID
Numrodupremierblocdelextensionlibre.
BYTES
Tailledelextensionlibreenoctets.
BLOCKS
TailledelextensionlibreenblocsOracle.

UntablespacequinapasdextensionlibrenapasdelignedansDBA_FREE_SPACE.

DBA_EXTENTS
OWNER
Nomdupropritairedusegmentauquellextensionappartient.
SEGMENT_NAME
Nomdusegmentauquellextensionappartient.
- 6-

ENI Editions - All rights reserved - Algeria Educ

SEGMENT_TYPE
Typedusegment(TABLE,INDEX,ROLLBACK, TYPE2 UNDO,etc.).
TABLESPACE_NAME
Nomdutablespacequicontientlextension.
EXTENT_ID
Numrodelextension(0pourlapremire).
FILE_ID
Identifiantdufichierdedonnesquicontientlextension.
BLOCK_ID
Numrodupremierblocdelextension.
BYTES
Tailledelextensionenoctets.
BLOCKS
TailledelextensionenblocsOracle.
Encomplment,plusieursvuespossdentunecolonneTABLESPACEindiquantlenomdutablespacedestockage,par
exempleDBA_INDEXESetDBA_TABLES.
Exemple :
SQL> SELECT block_id,extent_id,segment_name,
2
blocks,bytes/1024 taille_ko
3 FROM dba_extents WHERE tablespace_name=TEST
4 UNION
5 SELECT block_id,NULL,*** LIBRE ***,
6
blocks,bytes/1024 size_ko
7 FROM dba_free_space WHERE tablespace_name=TEST;
BLOCK_ID EXTENT_ID SEGMENT_NAME
BLOCKS TAILLE_KO
---------- ---------- --------------- ---------- ---------9
0 TABLE200K
8
64
17
1 TABLE200K
8
64
25
2 TABLE200K
8
64
33
3 TABLE200K
8
64
41
*** LIBRE ***
96
768
137
0 TABLE2M
128
1024
265
1 TABLE2M
128
1024
393
*** LIBRE ***
888
7104
V$SORT_SEGMENT
TABLESPACE_NAME
Nomdutablespace.
EXTENT_SIZE
Tailledesextensions.
TOTAL_EXTENTS

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

Nombretotaldextensionsdanslesegment.
TOTAL_BLOCKS
NombretotaldeblocsOracledanslesegment.
USED_EXTENTS
Nombredextensionsactuellementallouesdestrisactifs.
USED_BLOCKS
NombretotaldeblocsOracleactuellementallousdestrisactifs.
MAX_USED_SIZE
Nombremaximumdextensionsutilisespartouslestris(simultanment).
MAX_USED_BLOCKS
Nombremaximumdeblocsutilisspartouslestris(simultanment).
MAX_SORT_SIZE
Nombremaximumdextensionsutilisesparuntri(leplusgrostri).
MAX_SORT_BLOCKS
Nombremaximumdeblocsutilissparuntri(leplusgrostri).
Exemple :
SQL> SELECT tablespace_name,total_blocks,used_blocks,
2
max_used_blocks,max_sort_blocks
3 FROM
v$sort_segment;
TABLESPACE_NAME TOTAL_BLOCKS USED_BLOCKS MAX_USED_BLOCKS MAX_SORT_BLOCKS
--------------- ------------ ----------- --------------- --------------TEMP
256
0
256
64
Ilexisteaussiunevue,V$TEMPSEG_USAGE,quipeuttreutilepouridentifierlessessions(etlesrequtes)quiutilisent
actuellementdelespacetemporaire.
Exemple :
SQL> SELECT t.username,t.tablespace,t.segtype,t.extents,t.blocks,
2
s.sql_text
3 FROM v$tempseg_usage t,v$sql s
4 WHERE t.sql_id = s.sql_id;
USERNAME
TABLESPACE SEGTYPE
EXTENTS
BLOCKS
---------- ---------- --------- ---------- ---------SQL_TEXT
----------------------------------------------------OHEU
TEMP
SORT
2
256
SELECT * FROM t ORDER BY c1,c2,c3
V$SYSAUX_OCCUPANTS
OCCUPANT_NAME
Nomducomposant.
OCCUPANT_DESC
Descriptionducomposant.

- 8-

ENI Editions - All rights reserved - Algeria Educ

SCHEMA_NAME
Nomduschmadanslequellecomposanteststock.
MOVE_PROCEDURE
Nomdelaprocdurepermettantdedplacerlecomposantdansunautretablespace.
MOVE_PROCEDURE_DESC
Descriptiondelaprocdurededplacement.
SPACE_USAGE_KBYTES
Espaceactuellementutilisparlecomposant(enKo).
Exemple :
SQL> SELECT occupant_desc,space_usage_kbytes
2 FROM v$sysaux_occupants WHERE space_usage_kbytes <0>;
OCCUPANT_DESC
SPACE_USAGE_KBYTES
---------------------------------------------------- -----------------LogMiner
7744
Logical Standby
1024
Transaction Layer - SCN to TIME mapping
448
PL/SQL Identifier Collection
384
Oracle Streams
1024
Analytical Workspace Object Table
1408
OLAP API History Tables
1408
Server Manageability - Automatic Workload Repository
29184
Server Manageability - Advisor Framework
7744
Server Manageability - Optimizer Statistics History
4608
Server Manageability - Other Components
5952
Enterprise Manager Repository
127424
Enterprise Manager Monitoring User
1536
Oracle Transparent Session Migration User
256
SQL Management Base Schema
1728
Automated Maintenance Tasks
320
Unified Job Scheduler
384
Dansuneinstallationdebase,sansoptionsparticulires,deuxcomposantsutilisentunespaceimportant :

lerfrentieldesfonctionnalitsdegestionautomatiquedelabasededonnes(SM/AWR)

lerfrentielduDatabaseControl(EM).

SiuncomposantutilisebeaucoupdeplacedansletablespaceSYSAUX,ilestpossibledenvisagerdeledplacerdans
un autre tablespace. Cette opration seffectue gnralement laide dune procdure dun package dont les
rfrences sont donnes dans la colonne MOVE_PROCEDURE de la vue V$SYSAUX_OCCUPANTS. Certains composants ne
peuventpastredplacs(parexemplelescomposantsrelatifslagestionautomatiquedelabasededonnes).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

Conventionsdcriture
Cet ouvrage utilise les conventions dcriture suivantes pour les ordres SQL, les commandes SQL*Plus et les
commandesRMAN :
MOT EN MAJUSCULES
Motsclsdelacommande(CREATETABLE).Danslapratique,ilspeuventtresaisisindiffremmentenmajusculesou
enminuscules.
mot en minucules
Valeurssaisir,relativeslabasededonnesoulapplication(nomdetable,nomdecolonne,etc).Danslapratique,
elles peuvent tre saisies indiffremment en majuscules ou en minuscules, sauf si elles figurent entre apostrophes
(danscecas,ellessontsensibleslacasse).
[]
Clauseoptionnelle.
[,...]
Laclauseprcdentepeuttrerpteplusieursfois.
|
Indiqueunchoixentreplusieursoptions.
{}
Dlimiteunelistedoptions.
mot soulign
Valeurpardfaut.
Parailleurs,louvragefaittrssouventrfrencedesvariablesdenvironnementdusystmedexploitation.Dansce
cas,lesnotationsWindowsetUnix/Linuxsontutilises :

Windows :%VARIABLE%

Unix/Linux :$VARIABLE

Parfois,louvragefaitaussirfrencedeschemins,desnomsdefichiers,desnomsdemenusquipeuventcontenir
unechanedecaractrescorrespondantunevaleurspcifiquedevotreenvironnement,quevousavezpudfinirpar
exemplelorsduneinstallation.Danscecas,lachanesubstitueraveclavaleurcorrespondantvotreenvironnement
estmiseenitalique,etparfoismmeentrelessignes<et>silyaambigut.
Exemple :OracleServiceSID ouOracleService<SID>
Etpourterminer,lternellequestion :quefautilfairedestermestechniquesenanglais ?Lestraduireoupas ?Dans
les commandes, les termes techniques sont en anglais, do la ncessit de les connatre. Si vous utilisez les outils
graphiquesenfranais,vousconstaterezquebeaucoupdecestermesontttraduits,cequiestparfoisdroutant
(dautant que certaines traductions sont un peu "bizarres"). Dans cet ouvrage, jai donc tent de donner les
correspondancessystmatiquement,maisenessayantdenepastropalourdirmonpropos.

ENI Editions - All rights reserved - Algeria Educ

- 1-

UtiliserleDatabaseControl
1.Espacedisquelogique(tablespace)
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienEspacesdisquelogiques
(cadreStockage)pouraccderlapagedegestiondestablespaces :

partirdecettepage,vouspouvezeffectuerdiversesactionssurlestablespaces :

crerunnouveautablespace(boutonCreroumenuCrercomme)

supprimeruntablespace(boutonSupprimer)

modifieruntablespace(boutonModifier)

ajouterunfichierdedonnesuntablespace(menuAjouterunfichierdedonnes)

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

placer un tablespace en lecture seule (menu Mettre en lecture seule), en lecture criture (menu Rendre
accessibleencriture),lactiver(menuMettreenligne),ledsactiver(menuMettrehorsligne).

En cliquant sur le lien du nom de tablespace, ou en cliquant sur les boutons Crer, Modifier ou Visualiser, vous
arrivezsurlapagededfinitionduntablespace.

LongletGnralpermetdedfinirlenometlescaractristiquesgnralesdutablespace : modedegestion,type,
statut.
LongletStockagepermetdeprciserdesinformationsrelativesaustockage : gestionuniformeouautomatiquedes
extensions,modedegestiondelespacedanslessegments,tailledebloc.

DanslaterminologieduDatabaseControl,enfranais,un"ensembledeblocscontigus"estuneextension.
Longlet Seuils permet de dfinir des seuils dalerte sur le remplissage du tablespace<, cet onglet est prsent
uniquement lors de la consultation ou modification duntablespace.Pardfaut,leDatabaseControlutiliseunseuil
davertissement85 %etunseuilcritique97 %.LesalertessontvisiblesurlapagedaccueilduDatabaseControl.

2.Fichierdedonnes
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienFichiersdedonnes(cadre
Stockage)pouraccderlapagedegestiondesfichiersdedonnes :

- 2-

ENI Editions - All rights reserved - Algeria Educ


partirdecettepage,vouspouvezeffectuerdiversesactionssurlesfichiersdedonnes :

ajouterunfichierdedonnesuntablespace(menuCrercomme)

modifierlefichierdedonnes(boutonModifier)

supprimerlefichierdedonnes(boutonSupprimer).

En cliquant sur le lien du nom du fichier de donnes, ou en cliquant sur les boutons Modifierou Visualiser, vous
arrivezsurlapagededfinitiondunfichierdedonnes:

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-


Si vous modifiez le nom dun fichier de donnes, ou si vous le changez de rpertoire, le Database Control va
simplement raliser un ALTER DATABASE RENAME FILE il ne va effectuer aucune action sur le fichier physique.
Loprationchouerasilefichierdedonnesnapastaupralablerenommet/oudplac.

3.Groupedetablespacetemporaire
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienGroupesdespacesdisque
logiquestemporaires(cadreStockage)pouraccderlapagedegestiondesgroupesdetablespacestemporaires.

Pourcrerunnouveaugroupe,cliquezsurleboutonCrer vousarrivezsurlapagededfinitiondungroupe :

- 4-

ENI Editions - All rights reserved - Algeria Educ


Indiquez le nom du groupe puis cliquez sur le bouton Ajouter/Enlever pour ajouter un tablespace temporaire au
nouveaugroupe.
LeDatabaseControlexcuteratoutsimplementunordreSQLALTER TABLESPACE ... TABLESPACE GROUPquiaurapour
effet,decrerimplicitementlegroupesilnexistaitpas.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Problmescourantsetsolutions
Ce nest quun dbut. Nous verrons dautres problmes possibles, relatifs au stockage dans un tablespace
danslechapitreGestiondestablesetdesindex(stockagedestablesetdesindex).

ORA-01652: impossible dtendre le segment temporaire deN


dans le tablespace X
Explication
Lesegmenttemporairenarrivepasstendre(lorsduntriparexemple).
Cause(s)
Le segment temporaire narrive pas stendre car le tablespace dans lequel il est stock na pas suffisamment
despacedisponibleetnepeutluimmestendre.
Action(s)
Ilfautaugmenterlespacedisponibledansletablespace :
soitenluiallouantunnouveaufichierdedonnes(ALTER TABLESPACE... ADD TEMPFILE ...)
soitenaugmentantlatailledunfichierdedonnesdutablespace(ALTER DATABASE TEMPFILE ... RESIZE ...)
soitenautorisantunfichierdedonnesdutablespacestendreautomatiquement(ALTER DATABASE TEMPFILE ...
AUTOEXTEND ON ...).
En cas de besoin, la vue V$TEMPSEG_USAGE peut tre employe pour superviser en temps rels les oprations qui
utilisentdelespacetemporaire.
Ceproblmepeutseproduiresurtouterequtequisolliciteuntri.
ORA-01630: nbre max. densembles de blocs contigus (N) atteint
dans segment temp, tablespace X
Explication
Lesegmenttemporairenarrivepasstendre(lorsduntriparexemple).
Cause(s)
Le segment temporaire narrive pas stendre car il atteint son nombre maximum dextensions, dfini par le
MAXEXTENTSdelaclauseDEFAULT STORAGEdutablespacedanslequelileststock.Nepeutseproduirequelorsquele
tablespaceutilispourstockerlessegmentstemporairesestpermanent(SYSTEM,parexemple).
Action(s)
InterrogerlacolonneCONTENTSdelavueDBA_TABLESPACESpoursavoirsilexisteuntablespacetemporairedanslabase
dedonnes.Sioui,laffecterauxutilisateurs(chapitreGestiondesutilisateursetdeleursdroits)et/ouledfinircomme
tablespace temporaire par dfaut (ALTER DATABASE DEFAULT TEMPORARY TABLESPACE...). Si non, en crer un (CREATE
TEMPORARY TABLESPACE...)etlaffecterauxutilisateurs(cf.ChapitreGestiondesutilisateursetdeleurdroits)et/oule
dfinircommetablespacetemporairepardfaut.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Vuedensemble
1.Dfinitions
Lorsque des modifications de donnes sont en cours, Oracle gnre des informations dannulation qui seront
utilises, si ncessaire, pour annuler les modifications. Ces informations dannulationcontiennentessentiellementla
valeur prcdente des donnes qui sont modifies par la transaction ("image avant", "before image" en anglais) et
lidentificationdesblocsconcerns.
Lesinformationsdannulationsontstockesdansdessegmentsdannulation.
Ellessontprincipalementutilisespour :

lannulationdelatransaction(ROLLBACK)

lalecturecohrente

certainesfonctionnalitsdeflashback

larcuprationdelabasededonnes(RECOVER).

LesegmentdannulationestunestructureutiliseparOraclepourstockertemporairementlaversionprcdentedes
donnes en cours de modification dans une transaction. Si la transaction est valide (COMMIT),lespace occup sera
libr si la transaction est annule (ROLLBACK), la version prcdente des donnes sera remise la place de la
nouvelle.
LessegmentsdannulationsontparailleursutilissparOraclepourlemcanismedelecturecohrente.Lanotionde
lecturecohrentecorrespondaufaitquelesdonnesencoursdemodificationdansunetransactionnesontpasvues
des autres utilisateurs tant que la transaction nest pas valide les autres utilisateurs voient les donnes telles
quelles taient avant le dbut de la transaction, dans un tat cohrent visvis des transactions et des rgles de
gestion. Si un utilisateur interroge une table en cours de mise jour dans une autre transaction, Oracle utilisera la
valeurprcdentedesdonnes,stockedanslessegmentsdannulation,pourrpondrelarequte.
Les segments dannulation sont aussi utiliss par certaines fonctionnalits de flashback qui permettent de lire (et
rcuprer) les donnes telles quelles taient un instant donn dans le pass (voir chapitre Sauvegarde et
rcupration).
Enfin, les segments dannulation sont utiliss lors dune rcupration de la base de donnes pour annuler les
modifications non valides qui avaient dj t crites dans les fichiers de donnes (voir les principes au chapitre
Sauvegardeetrcupration).
Les besoins en informations dannulation varient normment, en fonction de la nature de la mise jour et de la
prsence ou non dindex (les valeurs prcdentes des entres dindex sont aussi stockes dans les informations
dannulation).
Cequilfautretenir :

Un INSERT est peu coteux en espace dannulation : cest normal, il ny a pas dimage avant, juste des
informationsdecontrle.
UnUPDATEouun DELETEestpluscoteuxenespacedannulationetdautantpluscoteuxquelimageavant
(lesvaleursprcdentesdescolonnesmisesjourpourunUPDATEetlalignecompltepourunDELETE)estde
tailleimportante.

2.Gestion
Avant Oracle9i, les segments dannulation devaient tre grs par le DBA. Pour dimensionner correctement les
segmentsdannulation(nombreettaille),leDBAdevaitpossderuneconnaissanceassezprcisedufonctionnement
de la base de donnes et des besoins de lapplication. Cette connaissance tait gnralement difficile matriser a
priori,etiltaitsouventncessairederedimensionnerlessegmentsdannulationencoursdexploitation.Unmauvais
dimensionnement pouvait tre lorigine derreurs (ORA-01552, ORA-01562, ORA-01555, etc.) ou de problmes de
performance.
Depuis Oracle9i, Oracle propose une gestion "automatique" des informations/segments dannulation, laide dun
tablespacedannulation(tablespacedetypeUNDO).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Pourdesraisonsdecompatibilitascendante,ilesttoujourspossibledutiliserunegestion"manuelle"dessegments
dannulation,maiscenestpasrecommandparOraclequiconseillevivementlemploidelagestionautomatique.
Seulelagestionautomatiqueestprsentedanscetouvrage.Cestlemodepardfautdepuislaversion11.
Dans la documentation Oracle, en anglais, cette fonctionnalit est appele Automatic Undo Management et souvent
dsigneparlesigleAUM laterminologieSystemManagedUndo(SMU)estaussiutilise.

3.Structure
Commetouslessegments,unsegmentdannulationeststockdansuntablespaceetest,composdextensions.
Ilestimportantdecomprendrequelessegmentsdannulationcorrespondentavanttoutunestructurephysique(un
segment) dont les blocs sont chargs en mmoire (dans le Database Buffer Cache) en fonction des besoins si
linstance a besoin despace dans le Database Buffer Cache, les blocs de segments dannulations sont susceptibles
dtrecritssurdisque.
Pour mmoire (chapitre Les bases de larchitecture Oracle), les modifications apportes aux blocs de segments
dannulationsdansleDatabaseBufferCachesontenregistresdanslesfichiersdejournalisation.Decettemanire,en
cas de restauration dinstance ou de restauration de mdia, Oracle est en mesure de reconstituer les segments
dannulation et dannuler les modifications dj crites dans les fichiers de donnes, pour des transactions non
validesaumomentdelincident.

4.LesegmentdannulationSYSTEM
Quel que soit le mode de gestion des informations dannulation, il existe toujours un segment dannulation nomm
SYSTEM,crlorsdelacrationdelabasededonnes,etstockdansletablespaceSYSTEM.
CesegmentdannulationestutilispourlestransactionssurlessegmentsstocksdansletablespaceSYSTEM.
Lexistencedecesegmentdannulationpermettoujourslabasededonnesdedmarrer,mmesilesstructures
adaptesaumodedegestionchoisi(tablespacedannulationdanslecasdelagestionautomatique)nexistentpas.
Cependant, les structures adaptes doivent tre cres pour permettre lexcution de transactions dans dautres
tablespaces que le tablespace SYSTEM. Si la base de donnes ne contient que le segment dannulationSYSTEM, une
erreur(ORA-01552)seproduiralorsdelapremiretransactiondansuntablespaceautrequeletablespaceSYSTEM.

5.Duredertentiondesinformationsdannulation
Lorsquunetransactionsetermine,lesinformationsdannulationlaconcernantnesontplusncessairespoureffectuer
uneannulationdelatransaction(ROLLBACK).Parcontre,cesinformationspeuventencoretreutilespourunelecture
cohrente.
Eneffet,unelecturecohrentelonguequiacommencavantoupendantunetransactionpeutencoreavoirbesoinde
limage avant, aprs la fin de la transaction. Si cette image avant ancienne nest plus disponible (lespace a t
rutilisparuneautretransaction),uneerreurORA-01555(la"fameuse"erreursnapshottooold)estretourne.
De mme, une oprationflashback peut avoir besoin dinformations dannulationanciennes.Pourcesdeuxraisons,il
estsouhaitabledeconserverlesinformationsdannulationaussilongtempsquepossibleaprslafindelatransaction.
Avec la gestion automatique de lannulation, il existe une dure de conservation (rtention) des informations
dannulation (undo retention period) cest la dure minimale pendant laquelle Oracle tente de conserver les
informations dannulation des transactions valides, avant de rutiliser lespace. Les informations dannulation des
transactionsvalidessontditesexpires(expired)siellessontplusanciennesquelapriodedeconservationactuelle,
etlespacequellesoccupentpeuttrerutilispardenouvellestransactions.linverse,lesinformationsdannulation
des transactions valides sont dites non expires (unexpired) si elles sont plus rcentes que la priode de
conservationactuelle,etOracletentedeprserverlespacequellesoccupentpoursatisfaireleslecturescohrentes
etlesoprationsflashback.
En version 9, la dure de conservation des informations dannulation tait dfinie par le paramtre
UNDO_RETENTION.Depuis la version 10, la dure de conservation des informations dannulation est rgle
automatiquementparOracle.Deuxcasseprsentent :

- 2-

Si le tablespace dannulation est autoextensible, Oracle rgle la dure de conservation une valeur
lgrementsuprieureladuredelarequtelapluslongue.Danscecas,sileparamtreUNDO_RETENTION
estdfini,ilimposeunevaleurminimumOracle.
Siletablespacedannulationestdetaillefixe,Oraclergleladuredeconservationlaplusgrandevaleur

ENI Editions - All rights reserved - Algeria Educ

possible, compte tenu de la taille du tablespace et de lactivit de la base de donnes. Dans ce cas, si le
paramtreUNDO_RETENTIONestdfini,ilestignor(saufsiletablespacedannulationestdfiniaveclagarantie
dertentionvoircidessous).Ilfautnoterquepourlecalcul,Oracleutiliseleseuildalerteduremplissagedu
tablespace dannulation (85% par dfaut) et non 100% de la taille du tablespace. Modifier la taille du
tablespacedannulationousonseuildalerteadonc,unimpactdirectsurladuredeconservation.
Danslepremiercas,lerreursnapshottoooldnedoitnormalementjamaisseproduirelorsdunelecturecohrente.Par
contre, une erreur est toujours possible lors dune oprationflashback dans ce cas, il faut augmenter la valeur du
paramtreUNDO_RETENTIONpourconserverpluslongtempslesinformationsdannulation.Sincessaire,Oracleagrandit
automatiquementletablespacedannulationpourhonorerladuredeconservation.Siunetaillemaximumestdfinie
pour le tablespace et que cette taille maximum soit atteinte, Oracle est susceptible de ne plus pouvoir satisfaire la
duredeconservation,etlerreursnapshottoooldpeutsurvenir.
Dansledeuximecas,lerreursnapshottoooldpeutseproduiresiletablespacedannulationesttroppetitetdoncla
duredeconservationtropfaible.Demme,cetteduredeconservationpeuttreinsuffisantepourlesoprations
flashback.
Dans les deux configurations, en cas de manque despace dans le tablespace dannulation (taille fixe trop faible ou
taillemaximumatteinte),laprioritestdonnepardfautauxtransactions Oracleestalorssusceptiblederutiliser
lespaceoccuppardesinformationsdannulationnonexpires,cequipeutprovoquerlapparitionderreurssnapshot
tooold.
Pour rsoudre ce problme, depuis la version 10, il est possible dactiver une "garantie de rtention" au niveau du
tablespacedannulation.Danscecas,ilestgarantiquuneinformationdannulationneserapascrasetantquelle
nest pas expire (sa dure de conservation nest pas coule). Si Oracle manque de place dans le tablespace
dannulation,ilferachouerlesordresdemisesjourpourgarantirladuredertention.Laprioritestenquelque
sortedonneauxlectures.

6.Fonctionnementdunsegmentdannulation
Lorsquunetransactiondmarre,unsegmentdannulationluiestautomatiquementattribuparOracle.Lessegments
dannulation sont utiliss de manire concurrente par lensemble des transactions de la base de donnes. Lorsque
une transaction commence utiliser un segment dannulation, elle inscrit son identifiant dans lentte du segment
puisutiliselesblocsdontelleabesoindanslerestedusegment.partirdumomentounetransactionestinscrite
dansunsegmentdannulation,ellenepeutpasenchangernienutiliserundeuxime.Danslamesuredupossible,
Oracle sarrange pour avoir un nombre suffisants de segments dannulation afin dy rpartir les transactions (dans
lidaluneseuletransactionparsegmentdannulation).Siaucunsegmentdannulationnestlibre(pasdetransaction
active),Oracletenteradactiverunsegmentdannulationinactifoucreraunnouveausegmentdannulationsilnyen
apas.Uneextensiondunsegmentdannulationpeutavoirtroistats :

active : lextensioncontientdesinformationsdannulationdaumoinsunetransactionactive.

nonexpire : lextensionnestplusactivemaisellecontientdesinformationsdannulationnonexpires.

expire : lextensionnestplusactiveetellecontientdesinformationsdannulationexpires.

Siunsegmentdannulationestplein,etquunetransactionaencorebesoindespacedanscesegment,Oracletentera
dalloueruneextensionausegmentenrespectantlordresuivant :

Utilisationduneextensionexpiredusegmentdannulation.

Allocationduneextensionlibre(alloueaucunsegment)dutablespacedannulation.

Acquisition(transfert)duneextensionexpiredunautresegmentdannulation.

Extension dun fichier de donnes du tablespace dannulation (si possible) puis allocation dune extension
libre.
Utilisationduneextensionnonexpiredusegmentdannulation,siletablespacedannulationnestpasdfini
aveclagarantiedertention.
Acquisition (transfert) dune extension non expire dun autre segment dannulation, si le tablespace
dannulationnestpasdfiniaveclagarantiedertention.

Siaucuneextensionnepeuttrealloueausegment,uneerreur(ORA-30036)estgnre.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Ilfautnoterquaveclagestionautomatiquedelannulation,uneextensionexpire(voirenonexpire)dunsegment
dannulation peut tre transfre un autre segment dannulation qui a besoin despace supplmentaire. Ce
mcanismenexistepasaveclagestionmanuelle.Ilpermetderetarderlemomentoletablespacedannulationest
agrandioulemomentouneerreurestgnre.Lesextensionsnonexpiressontrutilisesleplustardpossible
poursatisfaireladuredeconservation.
Un segment dannulation qui a grossi pourra rtrcir quand lactivit transactionnelle diminuera. Pour rtrcir, le
segmentdannulationlibredesextensionsexpiresencommenantparlesplusanciennes.

- 4-

ENI Editions - All rights reserved - Algeria Educ

Miseenuvredelagestionautomatique
1.Principe
Pourmettreen uvrelagestionautomatiquedesinformationsdannulation,ilfaut :

positionner le paramtre UNDO_MANAGEMENT AUTO, et ventuellement affecter des valeurs aux paramtres
UNDO_TABLESPACEetUNDO_RETENTION
creraumoinsuntablespacedannulation,lorsdeladfinitiondelabasededonnes,ouultrieurement.

2.Lesparamtresdinitialisation
UNDO_MANAGEMENT
Ce paramtre indique le mode de gestion souhait pour les informations dannulation. Les valeurs possibles sont
AUTO(valeurpardfaut)ouMANUAL.Ceparamtreeststatique ilfautredmarrerlabasededonnespourchanger
lemodedegestiondesinformationsdannulation.
UNDO_TABLESPACE
Ce paramtre spcifie le nom du tablespace dannulation utiliser lors du dmarrage de linstance. Le nom de
nimportequeltablespacedannulationpeuttreindiqu.Pardfaut,ceparamtreestvideetlepremiertablespace
dannulation trouv dans la base de donnes est utilis (voir plus loin) le paramtre UNDO_TABLESPACE est alors
renseignparOracle.Ceparamtreestdynamique.
Le paramtre UNDO_TABLESPACE est surtout intressant si la base de donnes dispose de plusieurs tablespaces
dannulation il permet dindiquer le nom du tablespace dannulation utiliser lors du dmarrage de linstance. Ce
paramtreestparticulirementutileenconfigurationRealApplicationClusterspourquechaqueinstancequiouvrela
basededonnesutiliseuntablespacespcifique.
Enconfigurationstandard,ilestpluttraredavoirplusieurstablespacesdannulationdanslabasededonnes,sauf
silabasededonnesadesbesoinsspcifiquesdesmomentsparticuliersdesonfonctionnement.Danscecas,le
paramtre peut tre utilis pour indiquer le tablespace dannulation utiliser au dmarrage de linstance.
Ultrieurement,enmodifiantdynamiquementlavaleurdeceparamtre(ALTER SYSTEM),ilserapossibledechanger
detablespacedannulationactifsansredmarrerlabasededonnes.
UNDO_RETENTION
Ce paramtre spcifie, en secondes, la dure de rtention des <informations dannulation dans les segments
dannulation.Lavaleurdoittrecompriseentre0et2^321(plusde49 000jours) lavaleurpardfautestde900
(soit15minutes).Ceparamtreestdynamique.
Commeindiquprcdemment,depuislaversion10,laduredertentiondesinformationsdannulationestrgle
automatiquement par Oracle. Si le tablespace dannulation est de taille fixe, ce paramtre est ignor (sauf si le
tablespacedannulationestdfiniaveclagarantiedertention) siletablespacedannulationestautoextensible,
ce paramtre spcifie une limite infrieure pour la dure de rtention des informations dannulation. La dure de
rtentionactuellementutilisepeuttreconsultedanslacolonneTUNED_ UNDORETENTIONdelavueV$UNDOSTAT.
Aveclerglageautomatiquedeladuredertention,dfinirceparamtreneprsenterellementunintrtquesi
voussouhaitezutiliserlesfonctionnalitsdeflashbackousiletablespacedannulationestdfiniaveclagarantiede
rtention.
Parexemple,sivoussouhaitezpouvoirinterrogerlesdonnestellesquellestaient24heuresplusttlaidedune
requteflashback,vousdevezpositionnerleparamtreUNDO_RETENTIONaumoins86400(secondes)etprvoirde
lespacedansletablespacedannulation.
En cas de ncessit, le paramtre UNDO_RETENTION peut tre modifi dynamiquement (pas besoin de redmarrer la
basededonnes).

3.Dmarragedelabasededonnesenmodeautomatique
Si le paramtreUNDO_TABLESPACE est dfini, le tablespace indiqu est utilis. Si le tablespace nexistepas(ounest

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

pascorrectouindisponible),ledmarragechoueaveclerreurORA-01092 :
ORA-01092: instance ORACLE interrompue. Dconnexion impose
Lacausedelerreurestindiquedanslefichierdesalertes :
ORA-30012<: tablespace dannulation xxx inexistant ou de type erron
Conclusion : si le paramtre UNDO_TABLESPACE est spcifi au dmarrage de linstance, il est important que le
tablespaceindiquexisteetsoitcorrect.
Si le paramtre UNDO_TABLESPACE nest pas dfini ou est vide, linstance utilise le premier tablespace dannulation
disponible et indique son nom dans le paramtre UNDO_ TABLESPACE. Si elle nen trouve aucun, linstance dmarre
quandmmeetouvrelabasededonnes,maisuniquementaveclesegmentdannulationSYSTEM.Danscecas,lors
delapremiretransactionportantsurunsegmentstockdansuntablespaceautrequeletablespaceSYSTEM,vous
obtiendrezlerreurORA-01552 :
ORA-01552: imposs util. segment dannul. systme pour le tablespace
non syst. DATA
Conclusion : engestionautomatique,noubliezpasdecreruntablespacedannulation.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Gestiondutablespacedannulation
1.Caractristiquesdutablespacedannulation
Le tablespace dannulation est obligatoirement gr localement, avec une gestion automatique des extensions
(EXTENT MANAGEMENT LOCAL AUTOALLOCATE).IlpeuttreSMALLFILEouBIGFILE,etutilisernimportequelletailledebloc
(pasuniquementlatailledeblocstandard).Parcontre,ilestforcmentREAD WRITE,LOGGINGetPERMANENT.
Il est impossible et interdit de crer dautres segments (table, index) dans un tablespace dannulation. Plusieurs
tablespaces dannulation (contenant leurs propres segments dannulation) peuvent tre crs dans la base de
donnes mais seulement un est actif (utilis), un instant donn par linstance. Il est possible de changer de
tablespacedannulationdynamiquement.Letablespacedannulationactifnepeutpastredsactiv(passOFFLINE)
ousupprim.

2.Fonctionnementdutablespacedannulation
Dansuntablespacedannulation,dessegmentsdannulationsontautomatiquementcrsetgrsparOracle(etpar
lui seul). Ils sont nomms sous la forme_SYSSMU*, et dimensionns (nombre et taille) automatiquement en fonction
desbesoins.
Enfonctiondesbesoins,lessegmentsdannulationstocksdansletablespacedannulationactuellementactifsont
automatiquement activs. Oracle cre automatiquement de nouveaux segments dannulation dans le tablespace
dannulation actif, sil le juge ncessaire. Les segments dannulation ainsi crs ne sont pas supprims si Oracle
estime ne plus en avoir besoin (baisse de lactivit transactionnelle), il les passe OFFLINE. Si linstance en a de
nouveaubesoinultrieurement,ellelesrepasseraONLINE.
Tenter de grer directement les segments dannulation (ajout, suppression, activation, dsactivation,
dimensionnement,etc.)estsanseffet.Oracleneretournepasderreurmaisnefaitrien.Detoutefaon,pourquoile
fairepuisquetoutestautomatique.
En version 9, Oracle retournait une erreur si une opration interdite tait tente. Il tait possible de faire
disparatre ces erreurs en mettant le paramtre UNDO_SUPPRESS_ ERRORS TRUE. Depuis la version 10, ce
paramtrenexisteplusettoutsepassecommesiltaitTRUE.

3.Crationduntablespacedannulation
Vous pouvez crer le tablespace dannulation lors de la cration de la base de donnes grce la clause UNDO
TABLESPACEdelordreSQLCREATE DATABASE.
Syntaxe
[ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom
[ DATAFILE spcification_fichier [,...] ]
Exemple :
SMALLFILE UNDO TABLESPACE undotbs
DATAFILE e:\oradata\hermes\undotbs01.dbf SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 1024M
SiunnomatindiqudansleparamtredinitialisationUNDO_TABLESPACE,utilisezlemmenomdanslaclauseUNDO
TABLESPACE. Autrement, la base sera bien cre avec le tablespace spcifi dans la clause UNDO TABLESPACE, mais
Oracleretournerauneerreurlouverturedelabase(voirlasectionMiseen uvredelagestionautomatique).
Si le paramtre dinitialisation UNDO_MANAGEMENT est positionn AUTO et que la clause UNDO TABLESPACE nest pas
prsente, Oracle cre un tablespace dannulation par dfaut, nomm SYS_UNDOTBS, avec un fichier de donnes de
10 Mo,positionnenAUTOEXTEND.
VouspouvezcrerletablespacedannulationaprsladfinitiondelabasededonnesgrcelordreSQLCREATE
UNDO TABLESPACE.
Syntaxe

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

CREATE [ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom


DATAFILE spcification_fichier_data [,...]
[ RETENTION GUARANTEE | NOGUARANTEE ]
[ BLOCKSIZE valeur [K] ] ;
Exemple(iciutilisationduntablespaceBIGFILE) :
CREATE BIGFILE UNDO TABLESPACE bigundotbs
DATAFILE e:\oradata\hermes\bigundotbs.dbf SIZE 10G
AUTOEXTEND ON NEXT 1G MAXSIZE 1024G
RETENTION GUARANTEE ;
Les options des deux syntaxes ont la mme signification que les options de mme nom de lordre SQL CREATE
TABLESPACE(voirlasectionTablespacepermanentduchapitreGestiondestablespacesetdesfichiersdedonnes).
Danslesdeuxcas,laclauseEXTENT MANAGEMENTnestpasutile.Ellepeuttreindique,maislaseulevaleurautorise
est EXTENT MANAGEMENT LOCAL AUTOALLOCATE : le tablespace dannulation est forcment gr localement, avec une
gestionautomatiquedesextensions.
LaclauseRETENTIONindiquesilartentionestgarantie(GUARANTEE)ounon(NOGUARANTEE) NOGUARANTEEestloption
pardfaut.UtilisezloptionGUARANTEEenconnaissancedecause : encasdeproblmedespace,Oracleferachouer
les mises jour pour garantir la dure de rtention des informations dannulation.Loption GUARANTEE est
gnralement utilise en conjonction avec les fonctionnalits de flashback elle permet de garantir la capacit
interroger les donnes telles quelles taient tout instant dans le pass, dans la limite du paramtre
UNDO_RETENTION.
Siladuredertentionestleveetquilyauneforteactivitdemisejoursurlabasededonnes,lessegments
dannulation vont grossir. Il est donc trs important de dimensionner en consquence le tablespace dannulation
et/ou de lui permettre de grossir en cas de besoin (clause AUTOEXTEND ON sur un des fichiers de donnes du
tablespace).

4.Changementdetablespacedannulationactif
Silabasedisposedeplusieurstablespacesdannulation,ilestpossibledechangerdetablespaceactifenmodifiant
lavaleurduparamtreUNDO_TABLESPACE(paramtredynamique).
Syntaxe
ALTER SYSTEM SET UNDO_TABLESPACE = nom [ clause_SCOPE ];
Silamodificationestimmdiate(SCOPE = MEMORYou BOTH),nomdoittrelenomdun tablespace dannulationvalide
(doit treONLINE notamment). Si la modification est diffre (SCOPE = SPFILE),aucunevrificationnest faite sur le
nomindiqu,maisuntablespacedannulationportantcenomdevraexisterlorsduprochainredmarrage(souspeine
derreurORA-01092,voirlasectionMiseen uvredelagestionautomatique).
Si nomestunechanevide(), le tablespace dannulation courant est dsactiv mais aucun nest activ la place.
Cette situation, normalement temporaire, peut tre utilise pour effectuer des oprations dadministration sur le
tablespacedannulation(voirplusloin).
Lorsdunchangementdetablespacedannulationactif,lessegmentsdannulationstocksdanslancientablespace
dannulation sont dsactivs (passs OFFLINE). Si un des segments dannulation est utilis par des transactions
actives,ilnestpasimmdiatementpassOFFLINEmaismisPENDING OFFLINE(vueV$ROLLSTAT) ilnestplusutilisable
pourdenouvellestransactionsetilpasseradfinitivementOFFLINElorsquilnecontiendraplusdetransactionactive.
Lessegmentsdannulationstocksdanslenouveautablespacedannulationsontactivs(passsONLINE).
Lancien tablespace reste ONLINE ce sont les segments dannulation quil contient qui sont OFFLINE. Il nest
simplementplusletablespaceactifpourlannulation(dfiniparleparamtreUNDO_TABLESPACE).Ilpeuttredsactiv
(passOFFLINE)sincessaire.
Un tablespace dannulation actif ou un tablespace dannulation qui a des segments dannulation PENDING
OFFLINEnepeuttrenisupprim,nidsactiv(passOFFLINE).

5.Modificationduntablespacedannulation
Le tablespace dannulation peut tre modifi avec les ordres SQL habituels ALTER TABLESPACE ou ALTER DATABASE

- 2-

ENI Editions - All rights reserved - Algeria Educ

(pourlagestiondesfichiersdedonnes).
Encomplment,vouspouvezmodifierlaclauseRETENTION :
ALTER TABLESPACE nom_tablespace RETENTION GUARANTEE | NOGUARANTEE ;
UntablespacedannulationactifouuntablespacedannulationquiadessegmentsdannulationPENDING OFFLINEne
peutpastredsactiv(passOFFLINE).
Un tablespace dannulation peut tre pass OFFLINE mme sil contient des informations dannulation qui
nontpasencoreexpires(visvisdelavaleurduparamtreUNDO_RETENTION),celammesiletablespace
dannulationatdfiniaveclaclauseRETENTION GUARANTEE.

6.Suppressionduntablespacedannulation
LasuppressionduntablespacedannulationseffectueaveclordreSQLhabituelDROP TABLESPACE.
La clause INCLUDING CONTENTS est implicite les segments dannulation stocks dans le tablespace sont
automatiquementsupprims.Parcontre,laclausedoittrementionneavecloptionAND DATAFILESpoursupprimer
lesfichiersdedonnesassocis.
UntablespacedannulationactifouuntablespacedannulationquiadessegmentsdannulationPENDING OFFLINEne
peutpastresupprim.
Untablespacedannulationpeuttresupprimmmesilcontientdesinformationsdannulationquinontpas
encore expires (visvis de la valeur du paramtre UNDO_RETENTION), cela mme si le tablespace
dannulationatdfiniaveclaclauseRETENTION GUARANTEE.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Trouverdesinformationssurlagestiondelannulation
1.Trouverdesinformationssurletablespacedannulation
Les vues prsentes au chapitre Gestion des tablespaces et des fichiers de donnes peuvent tre utilises pour
retrouverdesinformationssurlestablespacesdannulationetleursfichiersdedonnes :

DBA_TABLESPACESouV$TABLESPACE : informationssurlestablespaces

DBA_DATA_FILESouV$DATAFILE : informationssurlesfichiersdedonnes

DBA_FREE_SPACE : informationssurlespacedisponiblelintrieurduntablespace

DBA_SEGMENTS : informationssurlessegmentsallouslintrieurduntablespace

DBA_EXTENTS : informationssurlesextensionsalloueslintrieurduntablespace.

En complment, la vue DBA_UNDO_EXTENTS donne plus spcifiquement des informations sur les extensions alloues
danslestablespacesdannulation :
DBA_UNDO_EXTENTS
SEGMENT_NAME
Nomdusegmentdannulationauquellextensionappartient.
TABLESPACE_NAME
Nomdutablespacedannulationquicontientlextension.
EXTENT_ID
Numrodelextension(0pourlapremire).
FILE_ID
Identifiantdufichierdedonnesquicontientlextension.
BLOCK_ID
Numrodupremierblocdelextension.
BYTES
Tailledelextensionenoctets.
BLOCKS
TailledelextensionenblocsOracle.
STATUS
Statut des informations dannulation stockes dans lextension, visvis des transactions : ACTIVE, EXPIRED,
UNEXPIRED.
Exemple :
SQL> SELECT tablespace_name,segment_name,extent_id,blocks,status
2 FROM dba_undo_extents

ENI Editions - All rights reserved - Algeria Educ

- 1-

3 ORDER
TABLESPACE
---------UNDOTBS
UNDOTBS
UNDOTBS
UNDOTBS
...
UNDOTBS
UNDOTBS
UNDOTBS
UNDOTBS
...

BY tablespace_name,segment_name,extent_id;
SEGMENT_NAME
EXTENT_ID
BLOCKS
------------------------- ---------- ---------_SYSSMU10_1216212870$
0
8
_SYSSMU10_1216212870$
1
8
_SYSSMU10_1216212870$
2
128
_SYSSMU10_1216212870$
3
128

STATUS
--------UNEXPIRED
UNEXPIRED
UNEXPIRED
UNEXPIRED

_SYSSMU7_1216212870$
_SYSSMU7_1216212870$
_SYSSMU7_1216212870$
_SYSSMU8_1216212870$

EXPIRED
UNEXPIRED
ACTIVE
UNEXPIRED

0
1
2
0

8
8
128
8

2.Trouverdesinformationssurlessegmentsdannulation
Plusieursvuesdudictionnairepermettentdobtenirdesinformationssurlessegmentsdannulation :

DBA_ROLLBACK_SEGS : informationssurlessegmentsdannulation

V$ROLLNAME : listedessegmentsdannulationactuellementONLINEouPENDING OFFLINE

V$ROLLSTAT : statistiquessurlessegmentsdannulationactuellementONLINEouPENDING OFFLINE.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs.
DBA_ROLLBACK_SEGS
SEGMENT_NAME
Nomdusegmentdannulation.
TABLESPACE_NAME
Nomdutablespacequicontientlesegmentdannulation.
SEGMENT_ID
Numrodusegmentdannulation.
STATUS
Statutdusegmentdannulation.
V$ROLLNAME
USN
Numrodusegmentdannulation.
NAME
Nomdusegmentdannulation.
V$ROLLSTAT
USN
Numrodusegmentdannulation.
EXTENTS

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Nombredextensionsdanslesegmentdannulation.
RSSIZE
Tailleactuelleutile(sansleblocdentte)enoctetsdusegmentdannulation.
WRITES
Nombredoctetscritsdanslesegmentdannulation.
HWMSIZE
Plus grande taille jamais atteinte en octets par le segment dannulation (High Water Mark "ligne de plus hautes
eaux").
SHRINKS
Nombredefoisolesegmentdannulationartrci.
WRAPS
Nombre de fois o le segment dannulation a "tourn" (i.e. nombre de fois o les transactions ont pu changer
dextensionsansallocationdunenouvelleextension).
EXTENDS
Nombredefoisolesegmentdannulationsesttendu(allocationdunenouvelleextension).
AVEACTIVE
Taillemoyenneactivedusegmentdannulation.
STATUS
Statut(ONLINEouPENDING OFFLINE).
Cettevuetaittrspratiquepoursuperviserlefonctionnementdessegmentsdannulationengestionmanuelle elle
prsentemoinsdintrtengestionautomatique.

3.Sedocumentersurlesinformationsdannulationetlestransactions
LavueV$UNDOSTATpermetdetrouverdesinformationssurlesinformationsdannulation.Lescolonnesintressantes
delavueV$UNDOSTATsontlessuivantes :
V$UNDOSTAT
BEGIN_TIME
Date/heurededbutdelaplage.
END_TIME
Date/heuredefindelaplage.
UNDOBLKS
Nombredeblocsdannulationutilissencumulsurlapriode.
TXNCOUNT
Nombredetransactionstotalessurlapriode.

ENI Editions - All rights reserved - Algeria Educ

- 3-

MAXQUERYLEN
Dureensecondesdelarequtelapluslonguesurlapriode.
MAXCONCURRENCY
Nombremaximumdetransactionssimultanessurlapriode.
TUNED_UNDORETENTION
Duredertentioncomptetenudurglageautomatiqueralisparlinstance.
La vue V$UNDOSTAT donne des statistiques sur les informations dannulation gnres sur les 4 derniers jours. La
collecte est effectue par plages de 10 minutes la vue contient donc 576 lignes, une pour chaque plage de 10
minutessurles4derniersjours.Lapremirelignedelavuecorrespondlaplageencours(peutfairemoinsde10
minutes).Ilpeutexistermoinsdelignessilinstanceadmarrdepuismoinsde4jours.Unhistoriqueaudelde4
joursestdisponibledanslavueDBA_HIST_UNDOSTAT.
Cette vue est utile pour estimer la taille du tablespace dannulation (voir la section Dimensionner le tablespace
dannulation).Encomplment,lavueV$TRANSACTIONpeuttreutilisepouridentifierlestransactionscourantes.
Exemple
SQL> SELECT se.username,tr.start_time,tr.xidusn,tr.used_ublk,
2
sq.sql_text
3 FROM v$transaction tr,v$session se,v$sql sq
4 WHERE tr.ses_addr = se.saddr AND se.sql_id = sq.sql_id;
USERNAME
START_TIME
XIDUSN USED_UBLK
------------------------- -------------------- ---------- ---------SQL_TEXT
-------------------------------------------------------------------OHEU
07/19/08 17:24:04
5
268
DELETE FROM t

4.Dimensionnerletablespacedannulation
LavueV$UNDOSTATpeuttreutilisepourdimensionnerletablespacedannulation,etventuellementleparamtre
UNDO_RETENTIONsivousavezdeserreurssnapshottooold.
La quantit totale despace dannulation ncessaire pour satisfaire la dure de rtention peut tre estime par la
formuleDR x QAS,DRtantladuredertentionetQASlaquantitdespacedannulationparseconde.
LavaleurDRpeuttreestimeenanalysantlavaleurdelacolonneTUNED_ UNDORETENTIONdelavueV$UNDOSTAT,et
ensassurantquecettevaleurestsuprieurelavaleurdelacolonneMAXQUERYLEN sicenestpaslecas,ilconvient
peuttredepositionnerleparamtreUNDO_RETENTIONenconsquence.
LavaleurQASpeuttreestimeenanalysantlavaleurdelacolonneUNDOBLKSdelavueV$UNDOSTAT cettecolonne
donnelenombredeblocsdannulationutilisssurchaquepriodeanalyse(soitsur10minutes).
SQL> SELECT
2
TO_CHAR(begin_time,DD/MM HH24:MI)
begin_time,
3
TO_CHAR(end_time,DD/MM HH24:MI)
end_time,
4
undoblks,
5
maxquerylen,
6
tuned_undoretention
7 FROM
8
v$undostat;
BEGIN_TIME END_TIME
UNDOBLKS MAXQUERYLEN TUNED_UNDORETENTION
----------- ----------- ---------- ----------- ------------------19/07 16:23 19/07 16:28
15
936
1656
19/07 16:13 19/07 16:23
37
635
1475
19/07 16:03 19/07 16:13
71
1239
2079
19/07 15:53 19/07 16:03
144
638
1479
19/07 15:43 19/07 15:53
38
1242
2082
19/07 15:33 19/07 15:43
268
641
1481
19/07 15:23 19/07 15:33
33
1244
2084

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

19/07 15:13 19/07 15:23


40
643
19/07 15:03 19/07 15:13
31
1249
19/07 14:53 19/07 15:03
156
648
19/07 14:43 19/07 14:53
33
47
...
SQL> SELECT MAX(undoblks),MAX(tuned_undoretention)
2 FROM v$undostat;
MAX(UNDOBLKS) MAX(TUNED_UNDORETENTION)
------------- ------------------------

1484
2088
1488
900

Surcetexemple,laduredertentionlapluslongueestde2261secondes.
Lorsdunpicdactivit(traitementbatch ?),linstanceautilise79560blocsen10minutes,soitunpeumoinsde133
blocsparsecondes.
Latailledebloctantde8Ko,laquantittotaledespacedannulationncessairepeuttreestime2261x133x
8Kosoit2,29Go.Letablespacedannulationpeuttredimensionnenconsquence,enprenantunpeudemarge
(1020%).Cetteestimationestaprioriuneestimationhautequiconsidrequelepicdactivitdemisejourse
produitaumomentoladuredertentionestlapluslongue(cequinestpasforcmentlecas).

ENI Editions - All rights reserved - Algeria Educ

- 5-

UtiliserleDatabaseControl
Le tablespace dannulationetsesfichiersdedonnessadministrent partir des pagesEspaces disque logiqueset
Fichiersdedonnes(voirlasectionUtiliserleDatabaseControlduchapitreGestiondestablespacesetdesfichiersde
donnes).
Sur la page Serveur, le lien Segments dannulation (cadre Stockage) permet daccder la page de gestion des
segmentsdannulationmanuels.Engestionautomatiquedessegmentsdannulation,cettepagenestdaucuneutilit.
ToujourssurlapageServeur,lelienGestionautomatiquedelannulation(cadreConfigurationdebasededonnes)
permetdaccderlapagedegestionautomatiquedelannulation.
Lapremirepartiedelafentrevousdonnedesinformationssurlaconfigurationactuelle :

LeboutonModifierunespacedisquelogiquepermetdechangerdetablespacedannulationactif.
LongletActivitdusystmeaffichedesinformationssurlactivitpassedusystme.
Ladeuximepartiedelafentrevousfournitdesconseilssurlaconfiguration :

Le bouton Modifier lespace disque logique dannulation (undo tablespace) permet de modifier le tablespace
dannulationactif(ajouterunfichierdedonnes,modifierlatailledunfichierdedonnes,etc.).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Le bouton Modifier la conservation pour annulation (undo) permet de modifier la valeur du paramtre
UNDO_RETENTION.
Lanalyseestbasesurunepriodedanalyse(pardfautlesseptderniersjours)etuneduredeconservationdes
informationsdannulation.VouspouvezmodifiercesvaleursdanslecadrePriodedanalysepuiscliquersurlebouton
Excuterlanalysepourmettrejourlesrsultats.
Enrsultat,leconseillerproposeunetailleminimumetunetaillerecommandepourletablespacedannulation.
Le lien Afficher le graphique permet dafficher un graphique qui donne une estimation de la taille du tablespace
dannulation(enMo)enfonctiondeladuredeconservationdesinformationsdannulation(enminutes) :

Legraphiquemontrenotammentlespacedisquerequispourladuredertentionactuellergleautomatiquement
(304Mopour31minutessurlexemplecidessus),maisaussiladuredertentionmaximalepossible("meilleurchoix
possible") compte tenu de la taille maximale possible du tablespace dannulation (3371 minutes pour 1022 Mo sur
lexemplecidessus).
Si vous cliquez sur un point du graphique, le champ Dure (cadre Priode danalyse) et la taille minimale du
tablespacedannulation(cadreRsultatsdanalyse)sontmisjourenconsquence.
SivousavezmodifilechampDureducadrePriodedanalyse(manuellementouencliquantsurlegraphique),un
bouton Appliquer saffiche dans la fentre. Si vous cliquez sur ce bouton, vous appliquez la nouvelle dure au
paramtreUNDO_RETENTION(ALTER SYSTEM SET UNDO_RETENTION = ...).
Pour les analyses, veillez utiliser une priode danalyse reprsentative de lactivit de votre base de
donnes.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Problmescourantsetsolutions
ORA-01552: imposs util. segment dannul. systme pour le tablespace
non syst.XXXX
Explication
Il ny a pas de segment dannulation actif (ONLINE) autre que le segment dannulation SYSTEM (vrifiable dans
V$ROLLNAME)etunetransactionconcerneletablespaceXXXX.
Cause(s)
La gestion automatique des segments dannulation nest pas active. La gestion automatique des segments
dannulationestactivemaisilnyapasdetablespacedannulationactif.
Action(s)
Vrifiezsilabaseadmarrengestionautomatiquedessegmentsdannulation(paramtreUNDO_MANAGEMENT).Dansle
cas contraire, redmarrez la base de donnes en activant la gestion automatique. Vrifiez sil existe un tablespace
dannulation(danslavueDBA_TABLESPACES).Danslecascontraire,crezenun.
ORA-30036: impossible dtendre le segment par N dans le tablespace
dannulationXXXX
Explication
Unsegmentdannulationnarrivepasstendre.
Cause(s)
Le segment dannulation narrive pas stendre car le tablespace dans lequel il est stock na pas suffisamment
despacedisponibleetnepeutluimmestendre.
Action(s)
Ilfautaugmenterlespacedisponibledansletablespace :soitenluiallouantunnouveaufichierdedonnes(ALTER
TABLESPACE ... ADD DATAFILE ...) soit en augmentant la taille dun fichier de donnes du tablespace (ALTER
DATABASE DATAFILE ... RESIZE ...) soit en autorisant un fichier de donnes du tablespace stendre
automatiquement(ALTER DATABASE DATAFILE ... AUTOEXTEND ON ...).
ORA-01555: clichs trop vieux : rollback segment no N, nomm "XXXX",
trop petit
Explication
Cest la "fameuse" erreursnapshot too old ("clich trop vieux"). Une lecture cohrente na pas pu tre mene son
terme,carellerequiertuneanciennevaleurquinestplusprsentedanslesegmentdannulation.
Cause(s)
LetablespacedannulationnestpasenRETENTION GUARANTEEetamanqudespace ilnapaspuhonorerladurede
rtention.
Action(s)
Si le tablespace dannulation est trop petit par rapport la dure de rtention, augmentez sa taille (voir lerreur
prcdentepourlesactionspossibles).Siletablespacedannulationestdjtrsvolumineux,vouspouvezenvisager
delemettreenRETENTION GUARANTEE,aveclerisquedevoircertainesmisesjourchouer(gnralementavecune
erreurORA-30036).
Typiquement,ceproblmeseproduitlorsquilya,simultanmentsurunetable,uneforteactivitdemisejouretdes
lectureslongues.
Une autre approche pour rsoudre ce problme consiste essayer de sparer, dans le temps ou dans lespace,
lactivitdemisejouretlactivitdelecture :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

- 2-

dans le temps : par exemple, lancer ldition du volumineux rapport qui pose problme un moment plus
propicedanslajourne
dans lespace : par exemple, mettre en place un petit mcanisme de rplication et lancer ldition du
volumineuxrapportquiposeproblmesurlestablesrpliques.

ENI Editions - All rights reserved - Algeria Educ

Principes
Pourlagestiondelascurit,Oraclepermet :

de dfinir les utilisateurs qui peuvent se connecter la base de donnes (avec une identification par le
systmedexploitationouparlabasededonnes)

dedfinirdansquel(s)tablespace(s)unutilisateurpeutcrerdesobjets(ventuellementaucun)

delimiterlutilisationdesressourcessystme

dimposerunepolitiquedegestiondemotsdepasse(expirationpriodique,nonrutilisationavantuncertain
temps,etc.)
dedfinirlesdroitsdechaqueutilisateurlintrieurdelabasededonnes.

DansunebasededonnesOracle,lesdroitsdesutilisateurssontgrsaveclanotiondeprivilge.
Unprivilgeestledroit :

dexcuterunordreSQLengnral(parexemple,crerunetable) : cestlanotiondeprivilgesystme
daccderunobjetdunautreutilisateur(parexemple,mettrejourlesdonnesdelatableCLIENT) : cestla
notiondeprivilgeobjet.

Les privilges peuvent tre attribus directement aux utilisateurs ou par lintermdiaire de rles. Un rleest un
regroupement nomm de privilges (systmes et objets) qui peut tre attribu en tant que tel un utilisateur cet
utilisateurreoitalorsautomatiquementlesprivilgescontenusdanslerle.Lesrlesfacilitentlagestiondesdroits.
Oracle propose par ailleurs une fonctionnalit daudit qui permet de tracer lactivit des utilisateurs dans la base de
donnes.Pourensavoirplus,vouspouvezconsulterladocumentationOracleDatabaseSecurityGuide.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Creretmodifierlesutilisateurs
1.Modedidentificationdelutilisateur
Un utilisateur peut tre identifi par Oracle ou par le systme dexploitation. Les deux modes didentification sont
utilisablessimultanmentdanslammebasededonnes.

a.IdentificationparOracle
Lutilisateur se connecte la base en saisissant un nom et un mot de passe. Oracle vrifie le nom et le mot de
passedelutilisateur.
SQL> CONNECT oheu/rx239$
Connect.
LesfonctionnalitsdegestiondesmotsdepasseproposesparOraclesontutilisables.

b.Identificationparlesystmedexploitation
Lutilisateurseconnectelabasesanssaisirdenomnidemotdepasse.
SQL> CONNECT /
Connect.
Oraclenevrifiepaslemotdepassemaiscontrlesimplementquelenomdelutilisateur,auniveaudusystme
dexploitation,correspondunnomdutilisateurdanslabasededonnes.Lidentificationinitialeatralisepar
lesystmedexploitation.
LesfonctionnalitsdegestiondesmotsdepasseproposesparOraclenesontpasutilisables(cenestpasOracle
quigrelemotdepasse).
Pourfairelelienentrelenomdelutilisateurdanslesystmedexploitationetlenomdelutilisateurdanslabase
dedonnes,OracleutiliseunprfixedfiniparleparamtreOS_AUTHENT_PREFIX(pardfautgalOPS$).
Parexemple,lutilisateurayantpournomvdepauniveaudusystmedexploitationpourraseconnecterlabase
parunCONNECT /uniquementsilexisteuncompteOracleops$vdep.
Sur plateforme Windows, le nom de domaine, ou dfaut, le nom de la machine, fait partie du nom de
lutilisateur : SRVWINORA\VDEP par exemple. Cest ce nom complet qui doit tre prfix pour constituer le nom du
compteOracle(letoutenmajuscules) :OPS$SRVWINORA\VDEPparexemple.
Leprfixepeuttregalunechanevide(OS_AUTHENT_PREFIX = "") danscecas,lenomdelutilisateurauniveau
dusystmedexploitationetlenomdelutilisateurdansOraclesontidentiques.
LeparamtreREMOTE_OS_AUTHENTpeut,deplus,trepositionnTRUEpourindiquersilesutilisateursdistantssont
identifiablesparcettemthode(FALSEpourinterdire,valeurpardfaut).MettreleparamtreREMOTE_OS_AUTHENT
TRUEpeuttredangereuxsilerseaunestpasscuris.Ceparamtreestdprcienversion11.

2.Crationdunutilisateur
LordreSQLCREATE USERpermetdecrerunnouvelutilisateur.
Syntaxe
CREATE USER nom IDENTIFIED { BY mot_de_passe | EXTERNALLY }
[ DEFAULT TABLESPACE nom_tablespace ]
[ TEMPORARY TABLESPACE nom_tablespace ]
[ QUOTA { valeur [K|M] | UNLIMITED } ON nom_tablespace [,...] ]
[ PROFILE nom_profil ]
[ PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ] ;
Exemple :

ENI Editions - All rights reserved - Algeria Educ

- 1-

UtilisateuridentifiparlOSavecuniquementlesclausesobligatoires

CREATE USER "OPS$SRVWINORA\VDEP" IDENTIFIED EXTERNALLY;

UtilisateuridentifiparOracleavecdesclausessupplmentaires

CREATE USER oheu IDENTIFIED BY tempo


DEFAULT TABLESPACE data
QUOTA UNLIMITED ON data
PASSWORD EXPIRE;
Notez la syntaxe particulire pour spcifier le nom de lutilisateur OPS$SRVWINORA\ VDEP : les guillemets sont
ncessairescarlenomcontientdescaractresnonautoriss(barreobliqueinverse).Parlasuite,ilfaudratoujours
utiliserlammesyntaxepourgrercetutilisateur.
Pourquun nouvel utilisateur puisse effectivement se connecter, il faut en plus lui donner le droit de le faire, en lui
attribuantleprivilgesystmeCREATE SESSION(cf. Grerlesdroits).
Il est donc possible davoir des comptes pour les utilisateurs sans que ces derniers aient le droit de se connecter.
Cette fonctionnalit tait intressante en version 7 puisquelle permettait soit de prparer des comptes utilisateur
sans les activer tout de suite, soit dinterdire temporairement un utilisateur de se connecter sans supprimer son
compte. Cette fonctionnalit peut toujours tre utilise mais il est plus simple de verrouiller/dverrouiller
explicitementlecompte(ACCOUNT LOCK | UNLOCK).
LesoptionsdelordreSQLCREATE USERsont :
nom
Nomdelutilisateur.LenomdelutilisateurdoitrespecterlesrglesdenommagedOracleprsenteslasectionLa
base de donnes du chapitre Les bases de larchitecture Oracle. Si ce nest pas le cas, il faut placer le nom entre
guillemets.
IDENTIFIED
Cette clause indique si lutilisateur est identifi par le systme dexploitation (EXTERNALLY) ou par Oracle (BY
mot_de_passe).
DanslecasduneidentificationparOracle,lemotdepasseinitialdelutilisateurestspcifi.
Pourlemotdepasse,lesrglesdenommagedOracledoiventtrerespectes,saufsilafonctionnalitdecontrle
delacomplexitdesmotsdepasseestmiseen uvre(nouveautdelaversion8 voirplusloin).
Depuislaversion11,lesmotsdepassesontpardfaut,sensibleslacasse(paramtreSEC_CASE_SENSITIVE_LOGON
gal TRUE par dfaut). Si vous souhaitez avoir des mots de passe non sensibles la casse, il suffit daffecter la
valeurFALSE auparamtreSEC_CASE_SENSITIVE_LOGON (maiscenestpasconseillpourlascurit).
DEFAULTTABLESPACE
Cetteclauseindiquedansqueltablespacelessegmentsdelutilisateursontcrspardfaut(cestdiresiaucune
clauseTABLESPACEnestprsentelorsdelacrationdusegment).
Silaclauseestomise,letablespacepermanentpardfautdelabasededonnesestaffectlutilisateur(voirla
sectionTablespacepermanentduchapitreGestiondestablespacesetdesfichiersdedonnes).
Lanotiondetablespacepardfautnempchepaslutilisateurdecrerdesobjetsdansunautretablespace(silaun
quota sur le tablespace en question) elle permet simplement de spcifier un tablespace par dfaut si lutilisateur
omet la clause TABLESPACE lors de la cration dun segment. Cette clause prsente surtout un intrt pour les
utilisateursquipeuventcrerdessegments : lesdveloppeurs,lestesteurs,plusrarementlesutilisateursfinaux.
TEMPORARYTABLESPACE
Cette clause indique dans quel tablespace les segments temporaires de lutilisateur sont crs (lors dun tri, par
exemple). Vous pouvez indiquer le nom dun tablespace temporaire, ou le nom dun groupe de tablespaces
temporaires.
Silaclauseestomise,letablespacetemporairepardfautdelabasededonnesestaffectlutilisateur(voirla
sectionTablespacetemporaireduchapitreGestiondestablespacesetdesfichiersdedonnes).
QUOTA
Cetteclauseindiquedansquel(s)tablespace(s)lutilisateurpeutcrerdesobjets,etjusququellelimite.

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

LanotiondeQUOTApermetdelimiterlespacequunutilisateurpeutemployerdansuntablespaceaveclessegments
quilcre.
Cettefonctionnalitneconcernequelesutilisateursquipeuventcrerdessegments,etnonlesutilisateursfinaux
dun applicatif qui se contentent demployer des objets dj existants et qui appartiennent gnralement un
comptedistinct(enquelquesortele"propritaire"delapplication).
Pardfaut,lesutilisateursnontaucunquotasuraucuntablespace,sauflesDBAquiontunquotaillimitsurtousles
tablespaces.
Si un utilisateur a le droit de crer des segments, il faut lui donner explicitement un quota sur au moins un
tablespace. Le fait quune clause DEFAULT TABLESPACE ait t utilise ne donne aucun quota sur le tablespace en
question cesontdeuxmcanismesdiffrents.
Dans la pratique, il ne faut donner des quotas quaux utilisateurs qui en ont besoin (les dveloppeurs, le compte
"propritaire" de lapplication) et uniquement sur les tablespaces strictement ncessaires et suffisants. En
loccurrence,ilvautmieuxviterdedonnerdesquotascesutilisateurssurletablespaceSYSTEMouletablespace
SYSAUX.
Lanotiondequotaestsansobjetpourletablespacetemporaireetletablespacedannulation.
Siunutilisateurcherchecrerunsegmentdansuntablespacesurlequelilnapasdequotaouquiauraitpoureffet
dedpasserlequotaalloucetutilisateur,uneerreurestretourne :

Aucunquotasurletablespace
ORA-01950: pas de privilges sur le tablespace DATA

Dpassementdequotasurletablespace
ORA-01536: dpassement du quota despace affect au tablespace DATA

PROFILE
Cetteclauseindiqueleprofilattribulutilisateur.LanotiondeprofilestprsentelasectionUtiliserlesprofils.
PASSWORDEXPIRE
Cetteclausepermetdeforcerunemodificationdumotdepasselorsdelapremireconnexion(lemotdepassede
lutilisateurestexpir).Cetteclauseestsansobjetsilutilisateurestidentifiparlesystmedexploitation.
SilecompteestcravecloptionPASSWORD EXPIRE,lutilisateur,lorsdesapremireconnexion,serainvitchanger
lemotdepassequiluiatattribuinitialement.
ACCOUNT
LOCK : lecompteestverrouilletlaconnexioninterdite(erreurORA-28000: compte verrouill).
UNLOCK : lecomptenestpasverrouilletlaconnexionautorise(valeurpardfaut).
Si le compte est cr avec loption LOCK, le compte existe mais lutilisateur ne peut pas se connecter. Lordre SQL
ALTER USER pourra tre utilis plus tard pour dverrouiller le compte de lutilisateur (cf. Crer et modifier les
utilisateurs).

3.Modificationdunutilisateur
LordreSQLALTER USERpermetdemodifierunutilisateur.
Syntaxe
ALTER USER nom
[ IDENTIFIED { BY mot_de_passe | EXTERNALLY } ]
[ DEFAULT TABLESPACE nom_tablespace ]
[ TEMPORARY TABLESPACE nom_tablespace ]
[ QUOTA { valeur [K|M] | UNLIMITED } ON nom_tablespace [,...] ]
[ PROFILE nom_profil ]
[ PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ] ;

ENI Editions - All rights reserved - Algeria Educ

- 3-

Lesclausessontlesmmesquepourlacration.
Exemples :

Modificationdumotdepassedunutilisateur
ALTER USER oheu
IDENTIFIED BY tempo
PASSWORD EXPIRE;

Modificationdutablespacepardfautetattributiondequotas
ALTER USER oheu
DEFAULT TABLESPACE test
QUOTA UNLIMITED ON test
QUOTA 10M ON data;

Verrouillageduncompte
ALTER USER oheu ACCOUNT LOCK;

Dverrouillageduncompte
ALTER USER oheu ACCOUNT UNLOCK;

Le premier exemple permet de modifier le mot de passe dun utilisateur en le forant en changer lors de sa
premireconnexion cettetechniquepeuttreemployesilutilisateuraperdusonmotdepasse(leDBAnaaucun
moyendeconnatrelemotdepassedesutilisateurs).
Ledeuximeexemplepermetdemodifierletablespacepardfautdelutilisateuretdeluiattribuerdesquotassur
deuxtablespaces.
Le troisime exemple peut tre utilis pour interdire temporairement un utilisateur de se connecter. Sil est
actuellementconnect,ilnestpasdconnect.
Lequatrimeexemplepeuttreutilispourautoriserdenouveauunutilisateurseconnecter.
Diminuerunquota,oulemettre0,nesupprimepaslesobjetsdjcrsparlutilisateur.
ModifierlemotdepassedeSYSmodifielemotdepassedeSYSDBAenregistrdanslefichierdemotdepasse
(siunfichierdemotdepasseestutilis).

4.Suppressiondunutilisateur
LordreSQLDROP USERpermetdesupprimerunutilisateur.
Syntaxe
DROP USER nom [ CASCADE ] ;
Exemple :
DROP USER "OPS$SRVWINORA\VDEP" CASCADE;
Si lutilisateur possde des objets, loption CASCADE doit tre prsente pour forcer la suppression pralable des
objets.SilutilisateurpossdedesobjetsetqueloptionCASCADEsoitabsente,lerreurORA-01922estretourne :
ORA-01922: CASCADE indiquer pour supprimer OPS$SRVWINORA\VDEP
CestunordreDDL

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

: ilnapasdeROLLBACKpossible.
Unutilisateuractuellementconnectnepeutpastresupprim :
ORA-01940: impossible de supprimer un utilisateur qui est connect
Avant suppression dun utilisateur, il est possible dexporter les objets qui lui appartiennent ces objets pourront
ultrieurementtrerimportsdansunautreschma.

5.Trouverdesinformationssurlesutilisateurs
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesutilisateurs :

DBA_USERS : informationssurlesutilisateurs

DBA_TS_QUOTAS : informationssurlesquotasdesutilisateurs.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs.
DBA_USERS
USERNAME
Nomdelutilisateur.
USER_ID
Identifiantdelutilisateur.
PASSWORD
Motdepasse(crypt)delutilisateur.
ACCOUNT_STATUS
Statutducompte(OPEN,LOCKED,UNLOCKED,EXPIRED,etc.).
LOCK_DATE
Dateduverrouillage(silecompteestverrouill).
EXPIRY_DATE
Datedexpirationdumotdepasse.
DEFAULT_TABLESPACE
Tablespacepardfautdelutilisateur.
TEMPORARY_TABLESPACE
Tablespacetemporairedelutilisateur.
CREATED
Datedecrationdelutilisateur.
PROFILE
Profil.

ENI Editions - All rights reserved - Algeria Educ

- 5-

DBA_TS_QUOTAS
TABLESPACE_NAME
Nomdutablespace.
USERNAME
Nomdelutilisateurquiaunquotadansletablespace.
BYTES
Espace,enoctets,actuellementutilisparlutilisateur.
MAX_BYTES
Quota,enoctets,delutilisateursurletablespace(1).
BLOCKS
Espace,enblocs,actuellementutilisparlutilisateur.
MAX_BLOCKS
Quota,enblocs,delutilisateursurletablespace(1).
(1)1siquotaUNLIMITED

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Prsentationgnrale
1.Notionsdinstanceetdebasededonnes

UnserveurOraclecomportedeuxlmentsdistincts,linstanceetlabasededonnes.
La base de donnes se compose dun ensemble de fichiers physiques qui contiennent notamment les donnes.
Linstancesecomposedunestructuredemmoirepartageetdunensembledeprocessus.Cesdeuxlmentssont
intimementlismaisdoiventtrebiendistingus.
De manire image, il est possible de considrer que linstance reprsente une application (par exemple Microsoft
Word) et la base de donnes, le document (par exemple un document Microsoft Word) pour pouvoir accder la
basededonnes(lquivalentdudocumentMicrosoftWord),ilfautlouvriravecuneinstanceOracle(lquivalentde
lapplicationMicrosoftWord).
Une instance ne peut ouvrir quune base de donnes la fois et, dans la grande majorit des cas, une base de
donnes est ouverte par une seule instance. Nanmoins, moyennant la mise en uvre de loption Real Application
Clusters(RAC),unebasededonnespeuttreouverteparplusieursinstancessituessurdesn udsdistinctsdun
clusterdeserveurs cetteoptionRACestintressantepourlahautedisponibilit.
Unfichierdeparamtresestutilisparlinstancelorsdesondmarragepourseconfigureretfairelelienaveclabase
dedonnes.
En dehors des processus de linstance, il existe des processus utilisateurs correspondant lapplication utilise par
lutilisateur pour se connecter la base de donnes (SQL*Plus, un progiciel, un logiciel spcifique, etc.). Dans une
architectureclient/serveur,cesprocessusutilisateurssontsitussurlepostedelutilisateuretcommuniquentavecle
serveur traverslerseaugrcelacoucheOracleNet(voirlechapitreOracleNetpouruneprsentationdOracle
Net).

2.Labasededonnes

Unebasededonnesestconstitue :

ENI Editions - All rights reserved - Algeria Educ

- 1-

Dunoudeplusieursfichiersdedonnesquicontiennentlesdonnesproprementdites.

Dauminimumunfichierdecontrlequicontientdesinformationsdecontrlesurlabasededonnes.

Dauminimumdeuxgroupesdefichiersdejournalisationquienregistrenttouteslesmodificationsapportes
labase.

Nous verrons ultrieurement que les fichiers de journalisation peuvent tre archivs ces fichiers de journalisation
archivsnefont,proprementparler,paspartiedelabasededonnes.
Chaquebasededonnesporteunnomdfinilorsdesacrationcenomestdfiniparleparamtredinitialisation
DB_NAME<dufichierdeparamtres(hermesparexemple).Encomplment,lemplacementdelabasededonnessurle
rseau peut tre dfini grce au paramtreDB_DOMAIN (olivier-heurtel.fr par exemple). La base de donnes peut
alors tre aussi identifie par son nom global dfini par DB_NAME.DB_DOMAIN (hermes. olivier-heurtel.fr par
exemple). Le rle des diffrents fichiers de la base de donnes est dcrit plus en dtail dans le titre La base de
donnes.

3.Linstance

Uneinstanceestconstitue :

DunezonedemmoirepartageappeleSystemGlobalArea(SGA)

Dunensembledeprocessusdarrireplan(backgroundprocess)ayantchacununrlebienprcis

Dunensembledeprocessusserveur(serverprocess)chargsdetraiterlesrequtesdesutilisateurs.

TouteslescomposantesdelaSGAnesontpasreprsentessurleschmacidessus(cf.sectionLinstance
LaSGAdanscechapitre).Demme,lalistedesprocessusdarrireplanprsentesurleschmanestpas
complte(cf.sectionLinstance Lesprocessusdarrireplandanscechapitre).
Parailleurs,chaqueprocessusadelammoirepriveappelePGA(ProgramGlobalArea).Plusieursinstancespeuvent
tre lances simultanment sur le mme serveur dans ce cas, chaque instance a sa propre SGA et ses propres
processus.
Lors de ladministration, le DBA dsigne linstance sur laquelle il souhaite travailler grce la variable
denvironnementORACLE_SID cest particulirement important si plusieurs instances sont lances sur le serveur. Le
nom(identifiant)delinstanceestsouventdsignparletermeSID.
Selon la plateforme, les processus sont effectivement des processus (process) du systme dexploitation
(cest le cas des platesformes Unix en gnral) ou des threads dun unique processus (cest le cas de la
plateformeWindows).
LesdiffrentescomposantesdelinstancesontdcritesplusendtaildanslasectionLinstance.

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

4.Lesdiffrentescatgoriesdebasededonnes
Trs souvent, dans la documentation, Oracle fait la distinction entre les bases de donnes "transactionnelles" (ou
OLTP pour OnLine Transaction Processing) et les bases de donnes "dcisionnelles" (ou DSS pour Decision Support
Systems).
Unebasededonnestransactionnellesecaractrisepar :

uneforteactivitdemisejour(INSERT/UPDATE),gnralementsouslaformedepetitestransactions

unnombreplusoumoinsimportantdutilisateursconcurrents

uneexigencedetempsderponsecourt.

Unebasededonnesdcisionnellesecaractrisepar :

uneforteactivitdinterrogation(SELECT)gnralementsurdesgrosvolumesdedonnes(cetteactivitpeut
treinteractiveet/oubatch)

unemisejourpriodiquesousformedebatchavecdesgrostraitementsdemisejour

uneexigencedetempsderponseraisonnablementcourt.

Etpuis,ilyalesbasesdedonnes"mixtes"quisontlafoistransactionnellesetdcisionnelles,lepoidsrespectifde
chaqueactivittantvariable.
Beaucoupderglagesdpendentdelacatgoriedelabasededonnes,lesbasesdedonnesmixtestantlesplus
difficilesrgler danscecas,ilfautparfoisfairedescompromisetdterminerdespriorits.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Utiliserlesprofils
1.Prsentation
Unprofilestunensemblenommdelimitationsderessourcesquipeuttreattribuunutilisateur.
Lesressourcessuivantespeuventtrelimites :

tempsCPUparappelet/ouparsession

nombredelectureslogiquesparappelet/ouparsession

nombredesessionsouvertessimultanmentparunutilisateur

tempsdinactivitparsession

duretotaledelasession

quantitdemmoireprivedanslaSGA(configurationserveurspartagsuniquement).

Unelecturelogiquecorrespondunelecturedebloclorsdunerequte,queceblocsoitdjprsentenmmoire
(dans le Database Buffer Cache) ou lu sur disque (dans ce cas, la lecture logique correspond aussi une lecture
physique).
Depuislaversion8,lesprofilspeuventaussitreutilisspourmettreen uvreunepolitiquedegestiondesmotsde
passe.
Lesfonctionnalitssuivantespeuventtremisesenoeuvre :

verrouillage de compte (et dure de verrouillage) audel dun certain nombre dchecs de tentative de
connexion

duredeviedesmotsdepasse(avecventuellementunepriodedegrce)

nonrutilisationdunmotdepasseavantuncertaintempsouavantuncertainnombredechangements

complexitdumotdepasse.

Leprofilnomm DEFAULTestautomatiquementcrlorsdelacrationdelabasededonnes.Ceprofilestattribu
par dfaut aux utilisateurs. Par dfaut, ce profil DEFAULT nimpose aucune limite pour les ressources par contre,
depuislaversion11,ceprofilcomportedeslimitespourlesmotsdepasse(voirciaprs).
La limitation des ressources laide des profils noffre pas de nombreuses possibilits. Si vous souhaitez contrler
plus prcisment lattribution de ressources (CPU, espace dannulation, dure dinactivit) des utilisateurs ou
groupesdutilisateurs,vouspouvezutiliserleDatabase Resource Manager.Lamiseenoeuvredecettefonctionnalit
seffectue grce au packageDBMS_RESOURCE_MANAGER. Pour en savoir plus, consultez la documentation Oracle
DatabaseAdministratorsGuide.

2.Crationdunprofil
LordreSQLCREATE PROFILEpermetdecrerunnouveauprofil.
Syntaxe
CREATE PROFILE nom LIMIT
[ SESSIONS_PER_USER { valeur | UNLIMITED | DEFAULT } ]
[ CPU_PER_SESSION { valeur | UNLIMITED | DEFAULT } ]
[ CPU_PER_CALL { valeur | UNLIMITED | DEFAULT } ]
[ CONNECT_TIME { valeur | UNLIMITED | DEFAULT } ]
[ IDLE_TIME { valeur | UNLIMITED | DEFAULT } ]

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

[
[
[
[
[
[
[
[
[
[
[

LOGICAL_READS_PER_SESSION { valeur | UNLIMITED | DEFAULT } ]


LOGICAL_READS_PER_CALL { valeur | UNLIMITED | DEFAULT } ]
COMPOSITE_LIMIT { valeur | UNLIMITED | DEFAULT } ]
PRIVATE_SGA { valeur [K|M] | UNLIMITED | DEFAULT } ]
FAILED_LOGIN_ATTEMPTS { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_LIFE_TIME { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_REUSE_TIME { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_REUSE_MAX { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_LOCK_TIME { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_GRACE_TIME { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_VERIFY_FUNCTION { nom_fonction | NULL | DEFAULT } ] ;

Exemple :
CREATE PROFILE exploitation LIMIT
SESSIONS_PER_USER 3
IDLE_TIME 30
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 30
PASSWORD_REUSE_TIME 180
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_GRACE_TIME 3
PASSWORD_VERIFY_FUNCTION verif_mdp_exploitation ;
Leslimitationsderessourcessontlessuivantes :
SESSIONS_PER_USER
Nombredesessionssimultanes.
CPU_PER_SESSION
CPUtotaleparsession(1/100s).
CPU_PER_CALL
CPUtotaleparappel(1/100s).
CONNECT_TIME
Duretotaledeconnexion(minutes).
IDLE_TIME
Duredinactivit(minutes).
LOGICAL_READS_PER_SESSION
Nombredelectureslogiquesparsession.
LOGICAL_READS_PER_CALL
Nombredelectureslogiquesparappel.
PRIVATE_SGA
QuantitdemmoireprivedanslaSGA.
COMPOSITE_LIMIT
SommepondredeCPU_PER_SESSION,CONNECT_TIME,LOGICAL_READS_PER_SESSIONetPRIVATE_SGA.
Pour la limiteCOMPOSITE_LIMIT, la vue RESOURCE_COST permet de consulter les pondrations utilises et lordre SQL
ALTER RESOURCE COSTdemodifierlespondrations.
Leslimitationsrelativesauxmotsdepassesontlessuivantes :
- 2-

ENI Editions - All rights reserved - Algeria Educ

FAILED_LOGIN_ATTEMPTS
Nombredchecsdetentativedeconnexionautorissavantverrouillageducompte,10dansleprofilDEFAULT.
PASSWORD_LOCK_TIME
Dureduverrouillage(jours),1dansleprofilDEFAULT.
PASSWORD_LIFE_TIME
Duredeviedumotdepasse(jours),180dansleprofilDEFAULT.
PASSWORD_GRACE_TIME
Priodedegrceaprsexpirationdumotdepasse(jours),7dansleprofilDEFAULT.
PASSWORD_REUSE_TIME
Nombredejourspendantlequelunmotdepassenepeutpastrerutilis.
PASSWORD_REUSE_MAX
Nombredechangementsdemotdepasseavantquunmotdepassepuissetrerutilis.
PASSWORD_VERIFY_FUNCTION
Fonctiondevrificationdelacomplexitdumotdepasse.
LeslimitesPASSWORD_REUSE_TIMEetPASSWORD_REUSE_MAXnepeuventpastrespcifiessimultanment : lecontrlede
larutilisationdunmotdepasseestindiqusoitparunedure,soitparunnombredechangements.Silunedes
deuxlimitesaunevaleur(diffrentedeUNLIMITED),lautrelimitedoittreUNLIMITED.
Pour les diffrentes limites spcifies en jours, il est possible dutiliser des nombres dcimaux reprsentant des
fractionsdejour(parexemple1/24=uneheure).
LalimitePASSWORD_VERIFY_FUNCTIONpermetdespcifierunefonctionPL/SQLquiserautilisepourvrifier,silemotde
passesaisiparlutilisateurrespectebiencertainesrgles.UnevaleurNULLpermetdenepasutiliserdefonctionde
vrification. Cette fonction doit accepter trois paramtres en entre (le nom de lutilisateur, son nouveau mot de
passeetsonancienmotdepasse)etretournerunboolen.
Lescriptutlpwdmg.sql(rpertoire%ORACLE_HOME%\rdbms\adminou$ORACLE_ HOME/rdbms/admin)contientunexemplede
fonctiondevrificationquiestaffecteauprofilDEFAULTsilescriptestexcut.
Desmotsclspeuventtreutilisspourspcifierlavaleurdunelimite :

UNLIMITED : aucunelimitation.

DEFAULT : leparamtrehritedelavaleurduprofilnommDEFAULT.

UnelimitenonspcifiedansunprofilprendlavaleurDEFAULT.

3.Modificationdunprofil
LordreSQLALTER PROFILEpermetdemodifierunprofil.
Syntaxe
ALTER PROFILE nom LIMIT
[ SESSIONS_PER_USER { valeur | UNLIMITED | DEFAULT } ]
[ CPU_PER_SESSION { valeur | UNLIMITED | DEFAULT } ]
[ CPU_PER_CALL { valeur | UNLIMITED | DEFAULT } ]
[ CONNECT_TIME { valeur | UNLIMITED | DEFAULT } ]
[ IDLE_TIME { valeur | UNLIMITED | DEFAULT } ]

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

[
[
[
[
[
[
[
[
[
[
[

LOGICAL_READS_PER_SESSION { valeur | UNLIMITED | DEFAULT } ]


LOGICAL_READS_PER_CALL { valeur | UNLIMITED | DEFAULT } ]
COMPOSITE_LIMIT { valeur | UNLIMITED | DEFAULT } ]
PRIVATE_SGA { valeur [K|M] | UNLIMITED | DEFAULT } ]
FAILED_LOGIN_ATTEMPTS { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_LIFE_TIME { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_REUSE_TIME { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_REUSE_MAX { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_LOCK_TIME { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_GRACE_TIME { valeur | UNLIMITED | DEFAULT } ]
PASSWORD_VERIFY_FUNCTION { nom_fonction | NULL | DEFAULT } ] ;

Exemple :

ModificationduprofilDEFAULT

ALTER PROFILE default LIMIT


SESSIONS_PER_USER 3
IDLE_TIME 30
FAILED_LOGIN_ATTEMPTS 5;
-- les autres paramtres gardent la valeur par dfaut (UNLIMITED)

Modificationdunautreprofil

ALTER PROFILE exploitation LIMIT


SESSIONS_PER_USER 5 -- passe de 3 5
IDLE_TIME UNLIMITED -- suppression de la limite
FAILED_LOGIN_ATTEMPTS DEFAULT; -- prend la valeur par dfaut (5)
-- le reste est inchang
LesoptionssontlesmmesquepourlordreSQLCREATE PROFILE.
La modification dun profil naffecte les utilisateurs qu leur prochaine connexion elle nest pas prise en compte
immdiatementpourlesutilisateursdjconnects.
ModifierleprofilDEFAULTaffecteaussilesprofilsquiontdeslimitesspcifiesDEFAULT.

4.Affectationdunprofilunutilisateur
Unprofilpeuttreattribuunutilisateur :

lorsdelacrationdelutilisateur(CREATE USER)

lorsdunemodificationdelutilisateur(ALTER USER).

Exemples :
Lorsdelacrationdelutilisateur
CREATE USER xgeo IDENTIFIED BY tempo
TEMPORARY TABLESPACE temp
PROFILE exploitation
PASSWORD EXPIRE;
Lorsdunemodificationdelutilisateur

Affectationdunprofil
ALTER USER oheu PROFILE exploitation;

- 4-

RaffectationduprofilDEFAULT

ENI Editions - All rights reserved - Algeria Educ

ALTER USER oheu PROFILE DEFAULT;


Laffectationdunnouveauprofildesutilisateursneprendeffetquleurprochaineconnexion.
Pardfaut,unutilisateurestcravecleprofilDEFAULT.

5.Activationdelalimitationdesressources
Pardfaut,lecontrledelalimitationdesressourcesnestpasactiv.Crerdesprofilsetlesaffecterauxutilisateurs
naaucuneffet.
Pouractiverlecontrledelalimitationdesressources,ilfautpasserleparamtreRESOURCE_LIMITTRUE(FALSEpar
dfaut) :
ALTER SYSTEM SET RESOURCE_LIMIT = TRUE [ clause_SCOPE ];
Noubliezpasdutiliser la clauseSCOPE = BOTHpourrendrelamodificationpersistanteencasderedmarragedela
basededonnes.
LesfonctionnalitsdegestiondesmotsdepassefonctionnentmmesileparamtreRESOURCE_LIMITestFALSE.

6.Suppressiondunprofil
LordreSQLDROP PROFILEpermetdesupprimerunprofil.
Syntaxe
DROP PROFILE nom [ CASCADE ] ;
Exemple :
DROP PROFILE exploitation CASCADE;
Sileprofilestattribudesutilisateurs,loptionCASCADEdoittreprsente.Sileprofilestattribudesutilisateurs
etqueloptionCASCADEsoitabsente,lerreurORA-02382estretourne :
ORA-02382<: Le profil EXPLOITATION a des utilisateurs, impossible
deffectuer la suppression sans CASCADE
Le profil DEFAULT est affect en remplacement aux utilisateurs concerns.La suppression dun profil naffecte les
utilisateursquleurprochaineconnexion.LeprofilDEFAULTnepeutpastresupprim.

7.Trouverdesinformationssurlesprofils
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesprofils :

DBA_USERS : informationssurlesutilisateurs,dontleprofilattribu(colonnePROFILE)

DBA_PROFILES : informationssurlesprofils.

LescolonnesintressantesdelavueDBA_PROFILESsontprsentesciaprs.
DBA_PROFILES
PROFILE
Nomduprofil.
RESOURCE_NAME
Nomdelaressourcecontrle.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

RESOURCE_TYPE
Typedelaressourcecontrle(KERNELouPASSWORD).
LIMIT
Limitedelaressource.

- 6-

ENI Editions - All rights reserved - Algeria Educ

Grerlesdroits
1.Privilgesystme
a.Dfinition
UnprivilgesystmeestledroitdexcuterunordreSQLengnral,parexemplecrerunetable.
ChaqueordreSQLagnralement,aumoins,unprivilgesystmeassociquiportelemmenomquelordreSQL.
Parexemple,lordreSQLCREATE TABLEpossdeunprivilgesystmeassociCREATE TABLE(donneledroitdecrer
unetabledanssonpropreschma).
CertainsprivilgessystmereprennentlenomdelordreSQLaveclemotclANY.Danscecas,leprivilgesystme
permet dexcuterlordre dans nimporte quel schma de la base de donnes. Par exemple, le privilge systme
CREATE ANY TABLEdonneledroitdecrerunetabledansnimportequelschmadelabasededonnes.
LorsquelordreSQLconcernnestpasrelatifauxobjetsdunschma,ilny a pas de privilgeANY(ANY veut dire
dans nimporte quel schma) : par exemple, le privilge pour crer un tablespace estCREATE TABLESPACE ilny a
pasdeCREATE ANY TABLESPACE(untablespacenappartientpasunschma).
Lesprivilgessystmesontsourcedepouvoiretdedanger,surtoutceuxquiconcernentlagestiondesutilisateurs
etdesdroits(CREATE USER,ALTER USER,DROP USER,GRANT ANY PRIVILEGE,GRANT ANY ROLE)etceuxquipermettentde
supprimerdesobjets(DROP ANY TABLE,DROP TABLESPACE,etc.) lesprivilgessystmedoiventdonctreattribus
avecparcimonie(notammentlesprivilgesANY).
PensezquesivousdonnezleprivilgeALTER USERunutilisateur,ilpourramodifierlescomptesutilisateur
(changerlesmotsdepasseparexemple),dontlevtre.
Quelquesprivilgessystmeparticuliers :
CREATE SESSION
Donneledroitlutilisateurdeseconnecter.
SELECT ANY DICTIONARY
Donne le droit lutilisateurdinterroger nimportequelobjetdudictionnairededonnesdansleschma SYS.Ce
privilgeestncessairepourlesutilisateursnonDBAquisouhaitentemployerleDatabaseControl.
Si un utilisateur na pas le privilge CREATE SESSION, lerreur ORA-01045 est retourne lors dune tentative de
connexion :
ORA-01045: lutilisateur OHEU na pas le privilge CREATE SESSION ;
connexion refuse
LeprivilgeSELECT ANY DICTIONARYestintressantcarilpermetdedonnerunutilisateurledroitdelirelesvues
DBAsanspourautanttreDBA.Enversion8ou8i,lerleSELECT_CATALOG_ROLEpeuttreutilispouratteindrele
mmeobjectif cerleexistetoujoursenversion10pourdesraisonsdecompatibilitascendante.Enversion7,il
fallait donner aux utilisateurs le privilge SELECT ANY TABLE, ce qui tait susceptible de poser des problmes de
scuritpuisquelutilisateurpouvaitallerliredansnimportequelschma.
LesprivilgessystmesontprincipalementutilisspourcontrlerlemploidesordresDDLetdonc,pluttdestins
auxadministrateurs,auxdveloppeurs,aucomptepropritaireduneapplicationettrsrarementlutilisateurfinal
duneapplication.
Siunutilisateurnapasleprivilgencessairepourraliseruneaction,lerreurORA-01031estretourne :
ORA-01031: privilges insuffisants
LavueSYSTEM_PRIVILEGE_MAPdonnelalistedetouslesprivilgessystme.

b.Attributiondunprivilgesystmeunutilisateur

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

LordreSQLGRANTpermetdattribuerunprivilgesystme.
Syntaxe
GRANT nom_privilge [,...]
TO { nom_utilisateur | PUBLIC } [,...]
[ WITH ADMIN OPTION ] ;
Exemple :
GRANT CREATE SESSION, CREATE TABLE TO oheu;
Leprivilgepeuttreattribuunutilisateuroutouslesutilisateurs(PUBLIC).
LaclauseWITH ADMIN OPTIONdonneaubnficiaireledroitdetransmettreleprivilgesystme.
Leprivilgeattribuestimmdiatementactif.
Pourattribuerunprivilgesystme,ilfautavoirreu :

leprivilgeenquestionaveclaclauseWITH ADMIN OPTION

ouleprivilgesystmeGRANT ANY PRIVILEGE.

Plusieurs privilges peuvent tre attribus plusieurs utilisateurs en un seul ordre. Tous les privilges systme
peuvent tre attribus dun seul coup avec le mot cl ALL PRIVILEGES (GRANT ALL PRIVILEGES TO ...). Cette
possibilitestmanipuleravecbeaucoupdeprcautions.

c.Rvocationdunprivilgesystmeunutilisateur
LordreSQLREVOKEpermetdervoquerunprivilgesystme.
Syntaxe
REVOKE nom_privilge [,...]
FROM { nom_utilisateur | PUBLIC } [,...] ;
Exemple :
REVOKE CREATE TABLE FROM oheu;
Leprivilgeestimmdiatementrvoquetnepeutplustreexerc.
Pourrvoquerunprivilgesystme,ilfautavoirreu :

leprivilgeenquestionaveclaclauseWITH ADMIN OPTION

ouleprivilgesystmeGRANT ANY PRIVILEGE.

IlnyapasdecascadedanslarvocationdunprivilgesystmequiattransmisgrcelaclauseWITH ADMIN
OPTION. Si un privilge a t attribu Pierre avec loption WITH ADMIN OPTION et que Pierre laittransmisPaul,
rvoquerleprivilgedePierreestsanseffetsurleprivilgetransmisparPierrePaul.LaclauseWITH ADMIN OPTION
estdoncdoublementdangereuse.
LordreREVOKE permet de rvoquer uniquement les privilges quunutilisateurareuendirect(nonlesprivilges
quilaimplicitementviaPUBLIC).IlenestdemmepourPUBLIC : vousnepouvezpasrvoquerPUBLICunprivilge
nonattribuPUBLICenpensantlenleverainsitoutlemonde.
SiunprivilgeatattribuunutilisateuretPUBLIC,larvocationdelutilisateurestsanseffetsurlapossibilit
pourlutilisateurdecontinuerexercerleprivilge : illepossdetoujoursviaPUBLIC.
Tous les privilges systme peuvent tre rvoqus dun seul coup avec le mot cl ALL PRIVILEGES (REVOKE ALL
PRIVILEGES FROM ...).
SivousavezattribuunprivilgeavecloptionWITH ADMIN OPTIONetquevoussouhaitiezenlevercettepossibilit
detransmission,ilfautrvoquerleprivilgeetlattribuerdenouveausansloption.

- 2-

ENI Editions - All rights reserved - Algeria Educ

d.LesprivilgessystmeSYSDBAetSYSOPER
Nous avons dj vu que les privilgesSYSDBA et SYSOPER taient ncessaires pour raliser certaines oprations
dadministration(dmarrage/arrt/crationdebase).
Cesprivilgespeuventtrecontrls,soitparuneappartenanceungroupeparticulierdusystmedexploitation,
soitparunfichierdemotdepasse.
Danslecasdelutilisationdunfichierdemotdepasse,pardfaut,seulSYSareulesprivilgesSYSDBAetSYSOPER.
Si le fichier de mot de passe< est exclusivement associ la base (paramtre REMOTE_
LOGIN_PASSWORDFILE=EXCLUSIVE),ilestpossibledattribuerlunoulautredecesprivilgesdautresutilisateurs.
LattributionetlarvocationseffectuentaveclesordresSQLGRANTetREVOKE.
Danslapratique,ilesttrsraredattribuerlesprivilgesSYSOPERetsurtoutSYSDBA(quidonneuncontrletotalsur
labase)dautresutilisateurs lecompteSYSDBA/SYSOPERhabituellementutilisestlecompteSYS(ilestdestin
cela).
Pour attribuer le privilge SYSDBA, il faut tre connectAS SYSDBA pour attribuer le privilge SYSOPER, il faut tre
connectAS SYSDBAouAS SYSOPER.
LavueV$PWFILE_USERS<permetdelisterlesutilisateursquiontreulesprivilgesSYSDBAouSYSOPER cettevueest
toujoursvidesiREMOTE_LOGIN_PASSWORDFILE= NONE.

2.Privilgeobjet
a.Dfinition
Unprivilgeobjetestledroitdaccderunobjetdunautreutilisateur : parexemple,mettrejourlesdonnesde
latableCLIENT.
Pardfaut,seullepropritairedunobjetaledroitdyaccder.Pourquunautreutilisateurpuisseaccderlobjet,
lepropritairedelobjetdoitluidonnerunprivilgeobjet.
Lesprincipauxprivilgesobjetsontlessuivants :
Privilge

Table

Vue

Squence

SELECT

INSERT

UPDATE

DELETE

Programme

EXECUTE

Dansletableau,lacolonne"Programme"dsignelesprocduresetfonctionsstockesetlespackages.
Cesprivilgesdonnentlesdroitssuivants :
SELECT
Droitdelecturedesdonnes(excutiondelordreSQLSELECT).
INSERT
Droitdecrationdesdonnes(excutiondelordreSQLINSERT).
UPDATE
Droitdemisejourdesdonnes(excutiondelordreSQLUPDATE).
DELETE

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Droitdesuppressiondesdonnes(excutiondelordreSQLDELETE).
EXECUTE
Droitdexcutionduprogramme(appelerlaprocdure,lafonctionoulepackagepartirdunautreprogramme).
Avoirundroitsurunobjetnedispensepasdedevoirqualifierlobjetparlenomdupropritairesilonsouhaitey
accder(sinon,Oraclepensequevouscherchezaccderunobjetdansvotreschma).Pourfaciliterlcriture
desrequtesetrendreleschmapropritairedesobjetstransparent,ilfaututiliserdessynonymes,enloccurrence
pluttdessynonymespublics.
Rciproquement,lexistencedunsynonyme,mmepublic,nedonneaucundroitsurlobjetsousjacent.
Lesprivilgesobjetsontdestinscontrlerlaccsdesobjetsbienidentifis.Parexemple : ledroitdecrerune
commande(i.e.ledroitdefaireunINSERTdanslatableCOMMANDE),ledroitdesupprimeruneficheclient(i.e.ledroit
defaireunDELETEdanslatableCLIENT).
Ilssontprincipalementemployspourpermettreauxutilisateursfinauxduneapplicationdaccder,directementou
viauneinterfaceutilisateur,auxobjetsdelapplicationcrsdansuncompte"propritaire"delapplication(carpar
dfaut,seullepropritairedunobjetaledroitdyaccder).
LemessagederreurretournparOracle,lorsquunutilisateurnapasleprivilgerequispourraliseruneactionsur
unobjet,estdtermindiffremmentsilutilisateurpossdeounonaumoinsunprivilgesurlobjet :

Silutilisateurnaaucunprivilgesurlobjet,OracleretournelerreurORA-00942: Table ou vue inexistante.


Si lutilisateur a au moins un privilge sur lobjet, Oracle retourne lerreur ORA-01031:
insuffisants.

privilges

Danslepremiercas,Oracleconsidrequelutilisateurnanormalementaucunmoyendesavoirquelobjetaccd
existe : ilindiquedoncquelobjetnexistepas.Dansledeuximecas,Oracleconsidrequelutilisateurpeutsavoir
quelobjetexiste : ilindiquedoncqueleprivilgeestinsuffisant.

b.Attributiondunprivilgeobjetunutilisateur
LordreSQLGRANTpermetdattribuerunprivilgeobjet.
Syntaxe
GRANT { nom_privilge[(liste_colonnes)] [,...] | ALL [PRIVILEGES] }
ON [nom_schma.]nom_objet
TO { nom_utilisateur | PUBLIC } [,...]
[ WITH GRANT OPTION ] ;
Exemple :
GRANT SELECT, INSERT, UPDATE(nom,prenom) ON adherent TO oheu;
Pour les privilges INSERT et UPDATE, une liste de colonnes peut tre spcifie afin de limiter le privilge aux
colonnesindiques.
LaclauseWITH GRANT OPTIONdonneaubnficiaireledroitdetransmettreleprivilgeobjet.
LemotclALLpermetdattribuertouslesprivilges.Danslecasolutilisateurquiattribuetouslesdroitsnestpas
lepropritairedelobjet,maisunutilisateurquiareu certainsprivilgessurlobjetavecledroitdelestransmettre
(clauseWITH GRANT OPTION),lemotclALLdsigneuniquementtouslesprivilgesquelutilisateurareus.
Leprivilgepeuttreattribuunutilisateuroutouslesutilisateurs(PUBLIC).
Plusieurs privilges peuvent tre attribus plusieurs utilisateurs en un seul ordre par contre, lattribution des
privilgesobjetseffectueobjetparobjet.
Leprivilgeattribuestimmdiatementactif.
Pourattribuerunprivilgeobjet,ilfaut :

- 4-

trepropritairedelobjet

ENI Editions - All rights reserved - Algeria Educ

avoirreuleprivilgeenquestionaveclaclauseWITH GRANT OPTION

ouavoirreuleprivilgesystmeANY OBJECT PRIVILEGE.

UnutilisateurquiretransmetunprivilgequilareuavecloptionWITH GRANT OPTIONdoitqualifierlenomdelobjet


aveclenomdupropritaire(carlobjetneluiappartientpas),saufsilexisteunsynonymesurlobjet.
Certains privilges systme donnent implicitement des privilges objet sur tous les objets. Exemple : SELECT ANY
TABLE.
Le DBA a les privilges systme ANY indiqus prcdemment cest la raison pour laquelle il peut accder
nimportequelobjetsansprivilgeobjet.Depuislaversion9,ilaaussileprivilgesystmeANY OBJECT PRIVILEGE
quiluipermetdattribuerunprivilgeobjetsurnimportequelobjet,sansavoirreuleprivilgeenquestionWITH
GRANT OPTION.Avantlaversion9,centaitpaspossible.

c.Rvocationdunprivilgeobjetunutilisateur
LordreSQLREVOKEpermetdervoquerunprivilgeobjet.
Syntaxe
REVOKE { nom_privilge [,...] | ALL [PRIVILEGES] }
ON [nom_schma.]nom_objet
FROM { nom_utilisateur | PUBLIC } [,...] ;
Exemple :
REVOKE INSERT, UPDATE ON client FROM oheu;
Lordre REVOKE permet de rvoquer un utilisateur uniquement ce quil a reu en direct (pas les privilges quila
implicitementviaPUBLIC).IlenestdemmepourPUBLIC : vousnepouvezpasrvoquerPUBLICunprivilgenon
attribuPUBLICenpensantlenleverainsitoutlemonde.
Si un privilge a t attribu un utilisateur et PUBLIC, le rvoquer lutilisateur est sans effet lutilisateur
continuedexercerleprivilge : illatoujoursviaPUBLIC.Touslesprivilgesobjetpeuventtrervoqusdunseul
coupaveclemotclALL(REVOKE ALL ON ... FROM ...).SivousavezattribuunprivilgeavecloptionWITH GRANT
OPTIONetquevoussouhaitiezenlevercettepossibilitdetransmission,ilfautrvoquerleprivilgeetlattribuerde
nouveausansloption.Leprivilgeestimmdiatementenlevetnepeutplustreexerc.
Pourenleverunprivilgeobjet,ilfaut :

trepropritairedelobjet

avoirreuleprivilgeenquestionaveclaclauseWITH GRANT OPTION

ouavoirreuleprivilgesystmeANY OBJECT PRIVILEGE.

IlyacascadedanslarvocationdunprivilgeobjetquiattransmisgrcelaclauseWITH GRANT OPTION.Siun


privilge a t attribu Pierre avec loption WITH GRANT OPTION et que Pierre lait transmis Paul, rvoquer le
privilgedePierrervoquegalementceluidePaul.Lefonctionnementnestpaslemmequepourlesprivilges
systme.

d.Privilgessurlesvuesetlesprogrammesstocks
Unutilisateurquiaundroitsurunevuenapasbesoindavoirlesdroitssurlesobjetsmanipulsparlavue.
Il en est de mme par dfaut pour les programmes stocks : le programme stock sexcute avec les droits du
propritaire (definer rights). Au besoin, le programme stock peut tre conu pour sexcuter avec les droits de
lappelant(invokerrights).
LecomportementsouhaitsedfinitlorsdelacrationduprogrammestockgrcelaclauseAUTHID.
Syntaxe
AUTHID { CURRENT_USER | DEFINER }

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Lemodedefonctionnementpardfaut(droitsdupropritaire)esttrsintressantcarilpermetdutiliserlesvueset
lesprogrammesstockscommecoucheintermdiairepourlaccsauxobjetsdelabasededonnes.Ilestpossible
deconstruireuneapplicationdanslaquellelapartieclientenaccdejamaisdirectementauxtablesdelabasede
donnesmaispassepardesvueset/oudesprogrammesstocks.Cegenredapprochepermetprincipalement :

de masquer la structure relle des tables et de pouvoir la faire voluer avec le minimum dimpacts sur la
partiecliente
dimplmenterdesrglesdegestion(contrles,calculs,scurit,etc.)ctserveur.

e.Nommerunobjetdunautreschma
Mmesiunutilisateuraunprivilgesurunobjetdunautreschma,ildoitprfixerlenomdelobjetparlenomde
sonpropritairepourpouvoiryaccder :
SELECT * FROM diane.adherent;
Dessynonymespublicspeuventtredfinispoursimplifierlcrituredesrequtesetlesrendreindpendantesdu
nomdupropritaire :
CREATE PUBLIC SYNONYM adherent FOR diane.adherent;
LorsquelarequteSELECT * FROM adherentestexcute,Oracleregardedaborddansleschmacourantsilexiste
unobjetnommadherent.Sicestlecas,illutilise.Sicenestpaslecas,ilrechercheunsynonymepublicportantce
nom.Silentrouveun,ilremplacelesynonymeparsadfinition.
Depuislaversion8i, Il est aussi possible de "placer" sa session dans le schma dunautreutilisateur.Lorsquun
objet est rfrenc dans un ordre SQL, Oracle regardera si un tel objet existe dans lautre schma avant de
rechercherunventuelsynonymepublic.
Exemple :
ALTER SESSION SET CURRENT_SCHEMA = diane;

Ilfautbiennoterquelesdeuxtechniquesnedonnentpasdedroitensoi cesontjustedestechniquesde
rsolutiondenom.Unefoisquelenomestrsolu,Oracleregardesilutilisateuralesprivilgesncessaires
pouraccderlobjet.

f.Allerplusloinsurlagestiondesdroits
OracleproposedesfonctionnalitsdeVirtualPrivateDatabase(VPD)etdeFineGrainedAccess(FGA)quipermettent
de placer des mcanismes de filtres sur les lignes des tables. Ces fonctionnalits sont dcrites dans la
documentationOracleDatabaseSecurityGuide ellessontbasessurlutilisationdupackageDBMS_RLS.

3.Rle
a.Dfinition
Unrleestunregroupementnommdeprivilges(systmeetobjet)quipeuttreattribuunutilisateur.Tous
les privilges regroups dans le rle sont alors simultanment attribus lutilisateur. Les rles permettent de
simplifierlagestiondesdroits.
Lesprincipalescaractristiquesdesrlessontlessuivantes :

- 6-

Unrlepeuttreattribuunautrerle.

Unutilisateurpeutavoirplusieursrles.

Unrlenappartientpersonne.

ENI Editions - All rights reserved - Algeria Educ

Lamiseen uvreseffectueentroistapes :

crationdurle

attributiondesprivilges(systmeetobjet)aurle

attributiondurleauxutilisateurs.

b.Crationdunrle
LordreSQLCREATE ROLEpermetdecrerunrle.
Syntaxe
CREATE ROLE nom
[ IDENTIFIED { BY mot_de_passe | EXTERNALLY | USING nom_package}
| NOT IDENTIFIED ];
Exemple :
CREATE ROLE mailing;
Lesoptionssont :
IDENTIFIED BY mot_de_passe
Indiquequunmotdepasseestncessairepouractiverlerle.
IDENTIFIED EXTERNALLY
Indiquequuneidentificationexterneestncessairepouractiverlerle.
IDENTIFIED USING nom_package
Indiquequeseullepackagepeutactiverlerle.
NOT IDENTIFIED
Indiquequaucuneidentificationnestncessairepouractiverlerle.Cestlavaleurpardfaut.
Pourcrerunrle,ilfautavoirleprivilgesystmeCREATE ROLE.
Lorsdelacrationdunrle,ilestpossibledeprciserparquelmcanismelerlepourratreactiv : unmotde
passe,uneidentificationexterne(systmedexploitation)ouunpackage.Lemcanismedactivationseraprsent
danscechapitre,sectionRleActivationoudsactivationdunrle.
LordreSQLALTER ROLE>permetdemodifierunrle,enloccurrencelemodedidentificationpourpouvoirlactiver.
Syntaxe
ALTER ROLE nom
[ IDENTIFIED { BY mot_de_passe | EXTERNALLY | USING nom_package}
| NOT IDENTIFIED ];

c.Attributiondunprivilgeunrle
LordreSQLGRANTpermetdattribuerdesprivilgessystmeoudesprivilgesobjetunrle.
Syntaxepourlesprivilgessystme
GRANT nom_privilge [,...]
TO nom_rle [,...]
[ WITH ADMIN OPTION ] ;

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

Syntaxepourlesprivilgesobjet
GRANT { nom_privilge[(liste_colonnes)] [,...] | ALL [PRIVILEGES] }
ON [nom_schma.]nom_objet
TO nom_rle [,...] ;
Exemple :
GRANT CREATE SESSION, CREATE TABLE TO mailing;
GRANT SELECT, INSERT ON adherent TO mailing;
Les syntaxes sont les mmes que pour lattribution directe un utilisateur, lexceptiondelaclause WITH GRANT
OPTIONquinestpaspermisepourlattributiondunprivilgeobjetunrle.
Lesprivilgesattribussontimmdiatementactifspourlesutilisateursconnectsquiontlerleactif.Lanotionde
rle actif sera prsente un peu plus loins dans ce chapitre Grer les droits, section Rle Activation ou
dsactivationdunrle.
Toututilisateuraledroitdattribuerunprivilgeunrle,dumomentquilaledroitdattribuerleprivilge cesten
celaquelerlenappartientpersonne.Enloccurrence,pourattribuerunprivilgesystmeunrle,ilfautavoir
reuleprivilgeenquestionaveclaclauseWITH ADMIN OPTIONouavoirleprivilgesystmeGRANT ANY PRIVILEGE.
Pourattribuerunprivilgeobjetunrle,ilfauttrepropritairedelobjet,avoirreuleprivilgeenquestionavec
laclauseWITH GRANT OPTION,ouavoirleprivilgesystmeANY OBJECT PRIVILEGE.

d.Rvocationdunprivilgeunrle
LordreSQLREVOKEpermetdervoquerdesprivilgessystmeoudesprivilgesobjetunrle.
Syntaxepourlesprivilgessystme
REVOKE nom_privilge [ ,...]
FROM nom_rle [,...] ;
Syntaxepourlesprivilgesobjet
REVOKE { nom_privilge [,...] | ALL [PRIVILEGES] }
ON [nom_schma.]nom_objet
FROM nom_rle [,...] ;
Exemple :
REVOKE CREATE TABLE FROM mailing;
REVOKE UPDATE ON adherent FROM mailing;
Les syntaxes sont les mmes que pour la rvocation directe un utilisateur.Dune manire gnrale, lordreSQL
REVOKEnepermetdenleverune"cible"(utilisateur,rleouPUBLIC)quecequiatattribuexplicitementcette
"cible". Par exemple, si un privilge a t attribu un rle, il nest pas possible de lenlever directement un
utilisateurquiareulerle.
Attentionaumlangeattributiondirecteetattributionunrle : siunprivilgeestattribuunrleetlerle
lutilisateuretquenparallleleprivilgeestattribuendirectlutilisateur,rvoquerleprivilgedelutilisateurne
lempcherapasdepouvoircontinuerlexercer(vialerle).
Lesprivilgessontimmdiatementrvoqusetnepeuventplustreexercsparlesutilisateursconnectsquiont
le rle actif. La notion de rle actif sera prsente un peu plus loin dans ce chapitre, section Rle Activation ou
dsactivationdunrle.
Toututilisateuraledroitdervoquerunprivilgedunrle,dumomentquilaledroitdervoquerleprivilge(le
rle nappartient personne). En loccurrence, pour rvoquer un privilge systme dun rle, il faut avoir reu le
privilge en question avec la clause WITH ADMIN OPTION ou avoir le privilge systme GRANT ANY PRIVILEGE. Pour
rvoquerunprivilgeobjetdunrle,ilfauttrepropritairedelobjet,avoirreuleprivilge en questionavecla
clauseWITH GRANT OPTION,ouavoirleprivilgesystmeANY OBJECT PRIVILEGE.

e.Attributiondunrleunutilisateurouunrle
LordreSQLGRANTpermetdattribuerunrleunutilisateurouunrle.
Syntaxe

- 8-

ENI Editions - All rights reserved - Algeria Educ

GRANT nom_rle [,...]


TO { nom_utilisateur | PUBLIC | nom_rle } [,...]
[ WITH ADMIN OPTION ] ;
Exemple :
GRANT mailing TO oheu;
Lasyntaxeestlammequepourlattributiondunprivilgesystme.
Pourattribuerunrle,ilfautavoirreulerleenquestionaveclaclause WITH ADMIN OPTIONouavoirleprivilge
systme GRANT ANY ROLE. Le crateur dun rle nest pas propritaire du rle mais le rle lui est attribu avec
loptionWITH ADMIN OPTION ilpeutdoncattribuerlerlequilacr.
Lerleattribunestpasimmdiatementactifsilutilisateurestdjconnect.
LaclauseWITH ADMIN OPTIONdonneaussiledroitdemodifier(ordreSQLALTER ROLE)etdesupprimerlerle(ordre
SQLDROP ROLE).
Unutilisateurpeutavoirplusieursrles danscecas,lesprivilgessecumulent(ilnyapasdeprivilge"ngatif").

f.Rvocationdunrleunutilisateurouunrle
LordreSQLREVOKEpermetdervoquerunrle.
Syntaxe
REVOKE nom_rle [,...]
FROM { nom_utilisateur | PUBLIC | nom_rle } [,...] ;
Exemple :
REVOKE mailing FROM oheu;
Lasyntaxeestlammequepourlarvocationdunprivilgesystme.Pourenleverunrle,ilfautavoirreulerle
en question avec la clauseWITH ADMIN OPTION ou avoir le privilge systmeGRANT ANY ROLE. Le crateur du rle
ayantreucedernieraveclaclauseWITH ADMIN OPTION,ilpeutdoncenleverlerle.
Lorsquun rle est rvoqu, les utilisateurs connects avec le rle actif peuvent continuer exercer les privilges
associs,jusqulafindelasessionoujusquladsactivationdurle.

g.Suppressiondunrle
LordreSQLDROP ROLEpermetdesupprimerunrle.
Syntaxe
DROP ROLE nom_rle ;
Exemple :
DROP ROLE mailing;
Poursupprimerunrle,ilfautavoirreulerleenquestionaveclaclauseWITH ADMIN OPTIONouavoirleprivilge
systmeDROP ANY ROLE.
Lerleestimmdiatementenlevauxutilisateurs lesprivilgesassocisnepeuventplustreexercs.

h.Activationoudsactivationdunrle
Unrleattribuunutilisateur(directementouviaunautrerle)estpardfautautomatiquementactivlorsdela
connexiondelutilisateur.
Si lutilisateur est connect au moment de lattribution, lactivation immdiate nest pas automatique. Lutilisateur
peutactiverlerlegrcelordreSQLSET ROLE.
De plus, parmi les rles attribus lutilisateur, il est possible de dfinir ceux qui sont effectivement

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

automatiquementactivslorsdelaconnexiondelutilisateur.CesontlesrlespardfautdfinisparunordreSQL
ALTER USER.LutilisateurpeutensuiteactiverlesautresgrcelordreSQLSET ROLE.
Utiliserplusieursrlessansquilssoienttousactifssimultanmentprsentedeuxintrts :

Il existe un paramtre, MAX_ENABLED_ROLES (30 par dfaut), qui limite le nombre de rles actifs
simultanmentpourunutilisateur.Siunutilisateurestsusceptibledemployerunnombrederlessuprieur
cettelimite,ilestpossibledendsactivercertainspourenactiverdautres.
Des rles, protgs par des mots de passe, peuvent tre attribus des utilisateurs, mais inactifs par
dfaut,etsansdonnerlemotdepasselutilisateur cesontalorslesapplicationsquiactiventlesrles
dont elles ont besoin, en fournissant le mot de passe. De cette manire, en dehors de lapplication en
question,lutilisateurnaaucunmoyendactiveretdutiliserlerle(etventuellementdefairedeserreurs).

LordreSQLALTER USERpermetdedfinirlesrlespardfautdunutilisateur.
Syntaxe
ALTER USER nom_utilisateur DEFAULT ROLE
{ nom_rle [,...] | ALL [ EXCEPT nom_rle [,...] ] | NONE } ;
Exemple :
ALTER USER oheu DEFAULT ROLE mailing;
ALTER USER vdep DEFAULT ROLE ALL EXCEPT mailing;
Lesoptionssont :
ALL
Touslesrlesattribuslutilisateursontactivspardfaut.LaclauseEXCEPTpermetdenenlevercertains.
NONE
Aucundesrlesattribuslutilisateurnestactivpardfaut.
CetordreSQLannuleetremplacelasituationactuelledesrlespardfaut ellenajoutepasounenlvepasles
rleslalisteactuelle.Lesrlesattribusunutilisateurquiadjdesrlespardfaut,nesontpasdfinispar
dfaut.
LordreSQLSET ROLEpermetdactiveroudedsactiverunrle.
Syntaxe
SET ROLE
{ nom_rle [ IDENTIFIED BY mot_de_passe ] [,...]
| ALL [ EXCEPT nom_rle [,...] ] | NONE } ;
Exemple :
-- Lutilisateur VDEP active le rle MAILING
SET ROLE mailing;
Lesoptionssont :
IDENTIFIED BY
Donnelemotdepassequipermetdactiverlerle.
ALL
Touslesrlesattribuslutilisateursontactivs.LaclauseEXCEPTpermetdenenlevercertains.
NONE
Aucundesrlesattribuslutilisateurnestactiv(dsactivedonctouslesrles).

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Lesrlesdoiventavoirpralablementtattribusunutilisateur ilnestdoncpaspossibledesautoattribuerun
rleenlactivant(heureusement).
CetordreSQLannuleetremplacelesrlesactuellementactifs(pasdajout).
LoptionALLnepeutpastreutilisesurdesrlesprotgsparunmotdepasse.
Les rles dfinis avec loption IDENTIFIED USING nom_package ne peuvent tre activs de la sorte qu partir du
packagespcifi.
La procdure SET_ROLE du package DBMS_SESSION permet de faire la mme chose (voir la documentation "PL/SQL
PackagesandTypesReference").

i.Limitationdesrles
Pourdvelopperunobjet(unevueouunprogrammestock)quiutilisedesobjetsdunautreschma,ilfautavoir
reudesdroitsendirectsurlesobjets,pastraversunrle.
Par ailleurs, lors de lexcution dun programme stock, les rles activs de lutilisateur appelant ne sont pris en
compte que si le programme stock est conus pour sexcuter avec les droits de lappelant (clause AUTHID
CURRENT_USER).

j.Rlesprdfinis
Oracleproposeenstandardungrandnombrederleprdfinis,parmilesquels :
CONNECT
Autoriselaconnexion(contientuniquementleprivilgesystmeCREATE SESSION).
RESOURCE
Permetlacrationdesprincipauxobjetsdunschma(table,vue...).
DBA
DonnetouslesprivilgessystmeavecloptionWITH ADMIN OPTION.
MGMT_USER
PermetdutiliserleDatabaseControlentantquadministrateur.
Les vues DBA_SYS_PRIVS et DBA_TAB_PRIVS permettent de connatre les privilges regroups dans ces rles
prdfinis.OracleprconisedenepasutiliserlesrlesprdfinisCONNECT,RESOURCEetDBAmaisdecrersespropres
rles.Depuis la version 10.2 (10 g Release 2), le rle CONNECT ne contient plus que le privilge systme CREATE
SESSION. Avant cette version, ce rle contenait dautres privilges qui permettaient de crer les principaux objets
dunschma(table,vue,etc.)oudemodifierlasession(privilgesystmeALTER SESSION).Depuislaversion10.2,si
vousavezbesoindattribuerdetelsdroitsunutilisateur,lerleCONNECTnesuffitpas parcontre,vouspouvez
attribuercesdroitsdirectementlutilisateurouviaunrlespcifiquequevouscrez.

4.Trouverdesinformationssurlesdroits
a.Privilgessystme
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesprivilgessystme :

openmirrors.com

DBA_SYS_PRIVS : privilgessystmeattribusauxutilisateurs(ouauxrles)
SESSION_PRIVS : privilges systme actuellement actifs dans la session (obtenus directement ou via un
rle)
SYSTEM_PRIVILEGE_MAP : listedetouslesprivilgessystme.

ENI Editions - All rights reserved - Algeria Educ

- 11 -

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs.
DBA_SYS_PRIVS
GRANTEE
Nomdelutilisateuroudurlequiareuleprivilgesystme.
PRIVILEGE
Privilgesystmereu.
ADMIN_OPTION
PrivilgereuaveclaclauseWITH ADMIN OPTION(YESouNO).
SESSION_PRIVS
PRIVILEGE
Nomduprivilge.
SYSTEM_PRIVILEGE_MAP
NAME
Nomduprivilge.

b.Privilgesobjet
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesprivilgesobjet :

DBA_TAB_PRIVS : privilgesobjetattribusauxutilisateurs(ouauxrles)surlatotalitdelobjet
DBA_COL_PRIVS: privilges objet attribus aux utilisateurs (ou aux rles) sur certaines colonnes de lobjet
uniquement
TABLE_PRIVILEGE_MAP : listedetouslesprivilgesobjet.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs.
DBA_TAB_PRIVS
GRANTEE
Nomdelutilisateuroudurlequiareuleprivilgeobjet.
OWNER
Nomdelutilisateurpropritairedelobjet.
TABLE_NAME
Nomdelobjet(pasforcmentunetable,malgrlenom).
GRANTOR
Nomdelutilisateurquiaattribuleprivilge.
PRIVILEGE

- 12 -

ENI Editions - All rights reserved - Algeria Educ

Privilgeobjetreu.
GRANTABLE
PrivilgereuaveclaclauseWITH GRANT OPTION(YESouNO).
DBA_COL_PRIVS
GRANTEE
Nomdelutilisateuroudurlequiareuleprivilgeobjet.
OWNER
Nomdelutilisateurpropritairedelobjet.
TABLE_NAME
Nomdelobjet(tableouvue).
COLUMN_NAME
Nomdelacolonne.
GRANTOR
Nomdelutilisateurquiaattribuleprivilge.
PRIVILEGE
Privilgeobjetreu.
GRANTABLE
PrivilgereuaveclaclauseWITH GRANT OPTION(YESouNO).
TABLE_PRIVILEGE_MAP
NAME
Nomduprivilge.

c.Rles
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesrles :

DBA_ROLES : listedesrlesexistantdanslabase

DBA_APPLICATION_ROLES : descriptiondesrlesayantuneactivationparunpackage

DBA_SYS_PRIVS : privilgessystmeattribusauxrles(ouauxutilisateurs),voirprcdemment

openmirrors.com

DBA_TAB_PRIVS : privilges objet attribus aux rles (ou aux utilisateurs) sur la totalit de lobjet, voir
prcdemment
DBA_COL_PRIVS : privilges objet attribus aux rles (ou aux utilisateurs) sur certaines colonnes de lobjet
uniquement,voirprcdemment
DBA_ROLE_PRIVS : rlesattribusauxutilisateursouauxrles

ENI Editions - All rights reserved - Algeria Educ

- 13 -

ROLE_SYS_PRIVS : privilgessystmeattribusauxrles(uniquementpourlesrlesauxquelslutilisateura
accs)
ROLE_TAB_PRIVS : privilges objet attribus aux rles (uniquement pour les rles auxquels lutilisateur a
accs)
ROLE_ROLE_PRIVS : rles attribus dautres rles (uniquement pour les rles auxquels lutilisateur a
accs)
SESSION_ROLES : rlesactuellementactifsdanslasession.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs.
DBA_ROLES
ROLE
Nomdurle.
PASSWORD_REQUIRED
Indiquesiunmotdepasseestncessairepouractiverlerle(YES,NOouGLOBAL).
DBA_APPLICATION_ROLES
ROLE
Nomdurle.
SCHEMA
Schmadupackageutilispourlactivation.
PACKAGE
Nomdupackageutilispourlactivation.
DBA_ROLE_PRIVS
GRANTEE
Nomdelutilisateuroudurlequiareulerle.
GRANTED_ROLE
Nomdurlereu.
ADMIN_OPTION
RlereuaveclaclauseWITH ADMIN OPTION(YESouNO).
ROLE_SYS_PRIVS
ROLE
Nomdurle.
PRIVILEGE
Nomduprivilgesystmereuvialerle.

- 14 -

ENI Editions - All rights reserved - Algeria Educ

ADMIN_OPTION
PrivilgereuaveclaclauseWITH ADMIN OPTION(YESouNO).
ROLE_TAB_PRIVS
ROLE
Nomdurle.
OWNER
Nomdelutilisateurpropritairedelobjet.
TABLE_NAME
Nomdelobjet(pasforcmentunetable,malgrlenom).
COLUMN_NAME
Nomdelacolonne(siapplicable).
PRIVILEGE
Privilgeobjetreu.
ROLE_ROLE_PRIVS
ROLE
Nomdurle.
GRANTED_ROLE
Nomdurleattribuaurle.
ADMIN_OPTION
RlereuaveclaclauseWITH ADMIN OPTION(YESouNO).
SESSION_ROLES
ROLE
Nomdurle.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 15 -

Synthse
1.Lesdiffrentstypesdecomptes
UnebaseOraclecontientengnralquatretypesdecomptes.
Administration
Untelcompteatouslesprivilgessystmencessaires,notammentpourlagestiondesstructuresdestockageetla
gestiondesutilisateurs.Lescomptesdadministrationont,deplus,unaccscompletaudictionnairededonnes.
CesprivilgespeuventtreobtenusparlintermdiairedurleDBAoudunrlequivalent.
Dveloppement/Hbergementduschmaapplicatif
Un tel compte a les privilges systme ncessaires pour la cration des diffrents types dobjets (tables, vues,
procdures...)etilpossdeunquotasuraumoinsuntablespace.Lesprivilgessystmerequispeuventtreobtenus
parlintermdiairedesrlesCONNECTetRESOURCE,oudunrlequivalentquevousavezcr(conseill).
Pour les comptes de dveloppement, il peut tre judicieux de prvoir un tablespace ddi et de dfinir un quota
uniquement sur ce tablespace. Dans lidal, il est prfrable dutiliser une base de donnes part pour le
dveloppement.
Le compte "propritaire" dune application a gnralement des quotas illimits sur les tablespaces (de tables et
dindex)ddislapplication.
Utilisateurfinal
Un tel compte a besoin de trs peu de privilges systme : CREATE SESSION (obligatoire), ALTER SESSION (parfois
ncessaire), et cest gnralement tout. Par contre, il possde des privilges objet sur les objets du schma
applicatif,gnralementparlintermdiairedunrle.
Les comptes des utilisateurs finaux nont besoin daucun quota dans les tablespaces. Ils accdent aux objets du
schma applicatif grce aux privilges objet et lcriture des requtes est simplifie par lutilisation de synonymes
publicsouparlexcutiondelordreSQLALTER SESSION SET CURRENT_SCHEMA.
Lesprofilspeuventtreutilissenplus,pourcontrlerlutilisationdecertainesressourcesoumettreen uvreune
politiquedegestiondesmotsdepasse.

2.Quelquesconseilspourscuriservotrebasededonnes
Voiciquelquesconseilssimples(souventdebonsens)quipermettentdescuriservotrebasededonnes :

Limitezlesaccsauserveur(notammentaufichierdemotdepasse,aufichierdeparamtreetauxfichiers
detraceoudalertedechaqueinstanceOracle).
Interdisezlauthentificationparlesystmedexploitationtraverslerseau(leparamtreREMOTE_OS_AUTHENT
doittreFALSE).
Verrouillez et expirez le mot de passe des comptes par dfaut qui ne sont pas utiliss (cest le cas, par
dfaut, lorsque vous crez une base de donnes avec lassistant graphique Configuration de base de
donnes). Les seuls comptes par dfaut qui doivent tre obligatoirement ouverts sont SYS etSYSTEM, ainsi
queSYSMANetDBSNMPsivousutilisezleDatabaseControl.
Modifiezlesmotsdepassepardfautdescomptespardfautquevousutilisez(aupremierrangdesquels
SYS,SYSTEM,SYSMANet DBSNMP).VouspouvezinterrogerlavueDBA_USERS_WITH_DEFPWDpouravoirlalistedes
utilisateursquiontencoreleurmotdepassepardfaut.
Utilisez des mots de passe complexes (10 caractres au minimum, avec des lettres majuscules, des lettres
minuscules,deschiffresetdescaractresspciaux).
Utilisezunepolitiquedegestiondemotdepasseavecunnombrelimitdchecsdetentativedeconnexion
autorissetdesrglessurlacomplexitdesmotsdepasse.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Nestockezpaslesmotsdepasseenclairdansdestablesoudesscripts.

Attribuezlemoinsdeprivilgespossibleauxutilisateurs(notammentlesprivilgessystmeANY).

DfinissezvospropresrlesetnutilisezpaslesrlesprdfinisparOracle.
Attribuezunrleunutilisateurquesilarellementbesoindetouslesprivilgescontenusdanslerle.Si
cenestpaslecas,crezunautrerleplusrestrictif.

NattribuezaucunprivilgesystmePUBLIC(ilnyenaaucunpardfaut).

NattribuezaucunprivilgeobjetPUBLIC(autrequeceuxattribuspardfaut).

- 2-

Utilisez des rles pour grer les droits. Si le rle est activ par une application, protgezle par un mot de
passe.

openmirrors.com

Rvoquez les privilges EXECUTE attribus par dfaut PUBLIC sur plusieurs packages potentiellement
dangereux pour la scurit : DBMS_LOB, DBMS_JOB, UTL_FILE, UTL_HTTP, UTL_TCP, UTL_SMTP, DBMS_SYS_SQL. Ce
pointestassezcomplexecarcespackagessontutilisspardenombreuxcomptesOracle(SYSnotamment).Si
vousenlevezleprivilge EXECUTEattribusPUBLICsurcespackages,vousserezamensrattribuerles
droits ncessaires directement aux utilisateurs concerns (vous pouvez interroger la vue DBA_DEPENDANCIES
pourconnatrelescomptesquiutilisentcespackages).

ENI Editions - All rights reserved - Algeria Educ

Superviserlesutilisateursconnects
LavueV$SESSIONpermetdidentifierlesutilisateursactuellementconnects :
SQL> SELECT sid,serial#,username,osuser,status FROM
SID
SERIAL# USERNAME
OSUSER
---- --------- ---------- ------------------------1
3
SYSTEM
...
10
10494 VDEP
vdep
14
450 SYSTEM
Administrateur

v$session;
STATUS
-------ACTIVE
INACTIVE
ACTIVE

LessessionssansvaleurdanslacolonneUSERNAMEsontcellesdesprocessusdarrireplan.
LescolonnesintressantesdelavueV$SESSIONsontlessuivantes :
SID
Identifiantdelasession.
SERIAL#
Numrodesriedelasession.
USERNAME
Nomdelutilisateur(compteOracle).
SCHEMANAME
Nomduschmadelutilisateur(peuttrediffrentdeUSERNAMEsilasessionaexcutlordreSQLALTER SESSION SET
CURRENT_ SCHEMA).
STATUS
Statutdelasession(ACTIVE,INACTIVEouKILLED).
LOGON_TIME
Dateetheuredeconnexion.
OSUSER
Nomdelutilisateurauniveaudusystmedexploitation.
MACHINE
Nomdelamachinedelutilisateurauniveaudusystmedexploitation.
TERMINAL
Nomduterminaldelutilisateurauniveaudusystmedexploitation.
PROGRAM
Nomduprogrammeemployparlutilisateurpourseconnecterlabasededonnes.
SERVER
Typedeprocessusserveur(DEDICATEDouSHARED).

ENI Editions - All rights reserved - Algeria Educ

- 1-

SQL_ID
IdentifiantdelarequteSQLencoursdexcution(unejointureavecV$SQLouV$SQLAREAsurlammecolonnepermet
devoirlordreSQLenquestion).
SERVICE_NAME
Nomdeservicedelasession(serviceauquellutilisateursestconnect).
Au besoin, vous pouvez aussi interroger la vueV$SESSION_LONGOPS pour obtenir des informations sur les oprations
longues(encoursdepuisplusde6secondes).Pourdconnecterunutilisateur,vouspouvezutiliserlordreSQLALTER
SYSTEM.
Syntaxe
ALTER SYSTEM KILL SESSION sid,serial#;
ou
ALTER SYSTEM DISCONNECT SESSION sid,serial#
{ IMMEDIATE | POST_TRANSACTION};
Exemple :
ALTER SYSTEM KILL SESSION 10,10494;
LesordresSQLALTER SYSTEM KILL SESSIONetALTER SYSTEM DISCONNECT SESSION ... IMMEDIATEsontquivalents : ils
ferment la session immdiatement, sans attendre la fin dune ventuelle transaction en cours (cette dernire est
annule).Parcontre,lordreSQLALTER SYSTEM DISCONNECT SESSION ... POST_TRANSACTIONattendquelatransaction
encourssetermine.
Un utilisateur en train dexcuter une requte a un statut ACTIVE (INACTIVE sinon). Si un utilisateur est dconnect
alors quil est actif, sa requte est interrompue, un message derreur lui indiquant quil a t dconnect, lui est
retourn(ORA-00028<$I[]ORA-00028>:votresessionatferme)etlasessiondisparatdeV$SESSION.Silestinactif,
laconnexionestfermemaislasessionrestevisibledansV$SESSIONaveclestatutKILLEDjusqucequelutilisateur
aittnotifideladconnexionlorsdesaprochaineaction(aveclammeerreurORA-00028).

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

UtiliserleDatabaseControl
1.Utilisateurs
Surlapagedaccueil,cliquezsurlelienServeurpuissurlelienUtilisateurs(cadreScurit)pouraccderlapage
degestiondesutilisateursciaprs.

partirdecettepage,vouspouvezeffectuerdiversesactionssurlesutilisateurs :

crerunnouvelutilisateur(boutonCreroumenuCrercomme)

supprimerunutilisateur(boutonSupprimer)

modifierunutilisateur(boutonModifier)

faireexpirerlemotdepasse(menuExpirationdumotdepasse)

verrouilleroudverrouillerlecompte(menusVerrouillerlutilisateurouDverrouillerlutilisateur).

En cliquant sur le lien du nom de lutilisateur, ou en cliquant sur les boutons Crer, Modifier ou Visualiser, vous
arrivezsurlapagededfinitiondunutilisateur :

ENI Editions - All rights reserved - Algeria Educ

- 1-


Les onglets (sous forme de liens) de cette page permettent de grer les diffrentes proprits de
lutilisateur : identification,droits,quotas.

2.Rles
Surlapagedaccueil, cliquez sur le lien Serveur puis sur le lienRles (cadreScurit) pour accder la page de
gestiondesrles :

partirdecettepage,vouspouvezeffectuerdiversesactionssurlesrles :

- 2-

openmirrors.com

crerunnouveaurle(boutonCreroumenuCrercomme)

ENI Editions - All rights reserved - Algeria Educ

supprimerunrle(boutonSupprimer)

modifierunrle(boutonModifier)

voirlesutilisateursquiontlerle(menuAfficherlesbnficiaires).

Encliquantsurleliendunomderle,ouencliquantsurlesboutonsCrer,ModifierouVisualiser,vousarrivezsur
lapagededfinitiondunrle :

Les onglets (sous forme de liens) de cette page permettent de grer les diffrentes proprits du
rle : authentification,rlesattribus,privilgesattribus.

3.Profils
Surlapagedaccueil,cliquezsurlelienServeurpuissurlelienProfils(cadreScurit)pouraccderlapagede
gestiondesprofils :

partirdecettepage,vouspouvezeffectuerdiversesactionssurlesprofils :

Crerunnouveauprofil(boutonCreroumenuCrercomme)

Supprimerunprofil(boutonSupprimer)

ENI Editions - All rights reserved - Algeria Educ

- 3-

Modifierunprofil(boutonModifier)

Voirlesutilisateursquiontleprofil(menuAfficherlesdpendances).

Encliquantsurleliendunomdeprofil,ouencliquantsurlesboutonsCrer,ModifierouVisualiser,vousarrivezsur
lapagededfinitiondunprofil :

Lesdeuxonglets(sousformedeliens)decettepagepermettentdegrerlesdeuxaspectsduprofil : limitationdes
ressourcesetgestiondesmotsdepasse.

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Vuedensemble
Parmi les principaux types dobjets dun schma, seuls les tables et les index occupent de lespace de stockage en
dehorsdeleurdfinitiondansledictionnaire.
Cet espace de stockage doit tre planifi correctement pour viter les erreurs lies au manque despace ou les
problmesdeperformance.
Lestablesetlesindexsontdessegments lestockageestdoncorganisenextensions,pilotparlaclauseSTORAGE
etparlescaractristiquesdutablespace.Parailleurs,lorganisationdustockagedanslesblocsadelimportance.
Ilexistedautrestypesdobjetsquioccupentdelespacedestockage,maiscesdernierssortentduprimtredecet
ouvrage :

Vuesmatrialises : structureanalogueunetableetdontlecontenuestpriodiquementmisjourpartir
dunerequteSELECT.
IOT(IndexOrganisedTable tableorganiseenindex) : tabledontlestockageestorganisdanslindexdela
clprimairedelatable.
Clusters : structures qui permettent de stocker physiquement ensemble des tables frquemment interroges
parjointure.
Tables et index partitionnes : depuis la version 8, loption partitionnement permet de dcouper le stockage
physiquedestablesetdesindexenmorceauxpluspetitsappelspartitions.

Demme,ilexisteplusieurstypesdindex :

IndexBtree : indexclassiquequiseratudidanscetouvrage.
IndexBitmap :indexdontlestockageestorganisdiffremmentdesindexBtreeetquiestpluttdestin
lindexation des colonnes faible cardinalit dans un environnement dcisionnel (lindex bitmap est trs
coteuxenmisejour).
Index cl inverse : index Btree qui indexe non pas la valeur de la colonne mais une valeur rsultant de
linversion des octets de la colonne (intressant pour lindexation de colonnes qui sont insres en ordre
croissantetinterrogespargalit).
Index bas sur des fonctions : index Btree qui indexe non pas la valeur de la colonne mais le rsultat de
lapplication dune fonction SQL (UPPER, LOWER, etc.) la valeur de la colonne. Il est intressant lorsque la
colonnenestpasinterrogedirectement(colonne oprateur valeur)maisaveclafonction(fonction(colonne)
oprateur valeur).

ENI Editions - All rights reserved - Algeria Educ

- 1-

Gestiondestables
1.Organisationdustockagedanslesblocs
a.Principes

Structuredubloc
Lenttedubloccontientladressedubloc,letypedesegment,unrpertoiredestables,unrpertoiredesligneset
desentrespourlestransactions.Latailledelenttedublocestvariable,delordrede100octets200octets.Le
restedubloccontientlesdonnes(uneplusieurslignesdelatable)etdelespacelibre.
Lentte est stock dans la partie haute du bloc et les donnes sont insres partir du bas. Lentte est
susceptible de grossir (vers le bas) en fonction de lactivitdanslebloc ilnertrcitjamais.Parexemple,si100
lignes sont insres dans le bloc, le rpertoire des lignes situ dans lentte grossit si les lignes sont ensuite
supprimes,lerpertoiredeslignesnertrcitpas(lespaceestconservetpourratrerutilissideslignessont
denouveauxinsresdanslebloc).
Structureduneligne
Lenttedunelignecontientquelquesinformationssurlaligne(nombredecolonnes,chanageventuel,verrou).La
tailledelenttedelignesestvariable(3octetsminimum).Ensuite,chaquecolonneeststockeavecunenttede
colonne(quidonnelalongueurdelacolonnesur13octets)suividelavaleurdelacolonne.
La longueur totale dune ligne dpend du nombre de colonnes et de la valeur stocke dans chaque colonne, la
longueurdelacolonnedpendantdutypededonnes.
Exemple :
Type

Longueurdustockage

CHAR(n)

Longueurfixe(noctets),quellequesoitlavaleurstockedansla
colonne.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

VARCHAR2(n)

Longueurvariable(0noctets),dpendantdelavaleurstockedansla
colonne.

NUMBER(x,y)

Longueurvariable(entre1et21octets)dpendantdelavaleurstocke
danslacolonne.

DATE

Longueurfixe(8octets).

CLOB, BLOB

Longueurvariable,jusqu2^32blocsOracle.

UnevaleurNULLoccupeunoctetenmilieudeligneetaucunenfindeligne.
Les fonctions SQL VSIZE et DUMP appliques une valeur (colonne, rsultat dune expression) permettent de
connatrerespectivementlatailleenoctetsdustockageinternedelavaleuretlareprsentationinternedelavaleur.
Ce quil faut retenir, cest que le bloc ne contient pas que des donnes utiles il y a des donnes de
contrle,desurcharge,utiliseseninterneparOracle. titredexemple,unelignecomprenant3colonnes
stockant 30 octets de donnes utiles emploiera en moyenne 35 octets despace dans le bloc et une ligne
comprenant15colonnesstockant145octetsdedonnesutilesemploieraenmoyenne160octetsdespacedans
lebloc.

b.Gestiondelespacedanslesblocs
Lespacelibrelintrieurdusegmentpeuttregrautomatiquementoumanuellement.
Dans le cas de la gestion "manuelle", pour chaque segment, Oracle gre une liste de blocs disponibles pour
linsertiondelignes(freelist).Ladisponibilitoulanondisponibilitdunblocpourlinsertionestcontrlepardeux
paramtresdeladfinitiondelatable :PCTFREEetPCTUSED.
Danslecasdelagestion"automatique",pourchaquesegment,Oracleutiliseunebitmapafindeconnatreletauxde
remplissagedechaqueblocallouausegmentetendduireceuxdanslesquelsilpeutinsrerdesdonnes.Dans
cecas,leparamtrePCTUSEDestsansobjet.Lagestionautomatiqueestapparueenversion9.
Lagestionautomatiquedelespacedanslessegments(AutomaticSegmentSpaceManagement ASSM)prsentede
nombreux avantages : facilit dutilisation (pas de paramtre PCTUSED spcifier), meilleure utilisation de lespace,
meilleure concurrence daccs pour les insertions simultanes. La gestion automatique de lespace dans les
segments est disponible uniquement dans les tablespaces grs localement et spcifie au niveau du tablespace
(pasdusegmentindividuel)parlaclauseSEGMENT SPACE MANAGEMENT AUTO(voirlechapitreGestiondestablespaces
etdesfichiersdedonnes) elleestactivepardfaut.
PCTFREE
Dansladfinitiondunetable,leparamtrePCTFREEspcifielepourcentagedelespacedubloclaisslibrepourles
modificationsdeslignesstockesdanslebloc :

LaclausePCTFREEpermetdenepasremplirlesblocs100 %etdeconserverdelespacedisponiblelintrieurdu
bloc,pourlesfuturesmisesjourdeslignesstockesdanslebloc.Eneffet,lorsquuneligneestmodifie,Oracle
chercheraliserlamodificationenconservantlalignelintrieurdublocoelleeststocke : celaneposepasde
problmesilalongueurglobaledelalignediminue(remplacementdePIERREparPAULdansunecolonne)maispeut
enposersilalignegrossit(remplacementdePAULparPIERREdansunecolonne).Danscederniercas,silnyapas
suffisamment despace disponible lintrieur du bloc, Oracle va dplacer la ligne dans un autre bloc avec des
impactsngatifssurlesperformancesquenousverronsdanslasuitedecetouvrage.
Gestionmanuelle : PCTUSED
Dans la dfinition dune table, en gestion manuelle uniquement, le paramtre PCTUSED spcifie le pourcentage

- 2-

ENI Editions - All rights reserved - Algeria Educ

doccupationauquelleblocdoitredescendreavantderedevenircandidatlinsertion :

Lorsque le bloc atteint un taux de remplissage correspondant la clausePCTFREE, aucune insertion nestpossible
avant que de lespace dans le bloc soit libr, par suppression de ligne ou diminution de la taille dune ligne lors
dune modification. Le paramtre PCTUSED permet de contrler le moment o le bloc redeviendra candidat
linsertion, suite la libration despace. Ce paramtre permet dviter que le bloc ne redevienne immdiatement
candidatlinsertiondsquelemoindreoctetselibre,dunepart,carlespacelibrnestpeuttrepassuffisant
pour rellement insrer une ligne et dautre part, car le bloc risque de redevenir non disponible ds la premire
insertion or,cettegestioninternedubloc(disponibleounonpourlinsertion)estcoteuseentempsdetraitement.
PCTUSED va donc permettre dattendre que suffisamment despace ait t libr dans le bloc avant dautoriser de
nouvellesinsertionsdanslebloc.
Gestionautomatique
Engestionautomatique,Oracleutiliseune bitmappourconnatreletauxderemplissagedechaqueblocallouau
segment : 0 % despace libre (plein), entre 0 et 25 % despace libre, entre 25 et 50 % despace libre, entre 50 et
75 %despacelibre,entre75et100 %despacelibre.
Lors de linsertion dune nouvelle ligne, Oracle utilisera la bitmap pour dterminer dans quel bloc il peut insrer la
ligne.
Danslasuitedecechapitre,nousconsidreronsquelagestionautomatiqueestutilise.Nousnvoquerons
pasPCTUSEDetnedonneronsaucunconseilsursavaleur.

c.Compressiondesdonnesdanslesblocs
DepuisOracle9iRelease2,ilestpossibledecompresserlesdonnesdanslesblocsdestables.
Avant la version 11, la compression seffectue uniquement au moment de la cration du bloc, lors doprations
comme la cration dune table partir dune requte (ordre SQL CREATE TABLE ... AS SELECT), la reconstruction
dune table (ordre SQL ALTER TABLE ... MOVE) ou les insertions en chemin direct (ordre SQL INSERT /*+ APPEND
*/ ...).Pourlesinsertionsoumodificationsindividuellesultrieures(ordresSQLINSERTetUPDATE),lesdonnesne
sontpascompresses.Danscecas,lacompressionestpluttdestinedestablesaccdesenlecture,unefois
quellesonttconstruitesoureconstruites(parexemple,dansunebasedcisionnelle).
Depuislaversion11,ilestpossibledactiverlacompressionpourtouteslesoprations,ycomprislesinsertionsou
modifications individuelles. Ce type de compression peut donc aussi tre utilis dans une base transactionnelle.
Cettefonctionnalit,intitulOLTPTableCompression,ncessiteloptionAdvancedCompression.
Oraclecompresselesdonnesauniveaudublocenfactorisantdansunetabledesymboles,lesvaleursrptes
stockesdanslebloc.UnexempleestdonnlasectionRorganiserlestockagedunetable.

2.LeROWID
LeROWIDestunecolonnevirtuelleprsentedanschaquetablequidonneladressephysiquedestockagedelaligne.
Cettecolonnevirtuellepeuttreinterrogecommelesautrescolonnesdelatable :
SQL> SELECT ROWID, numero, nom, prenom FROM adherent;
SQL> UPDATE adherent SET prenom = Olivier
2 WHERE ROWID = AAAER2AACAAADdiAAA;
LeROWIDpermetdelocaliserphysiquementlaligne ilestutiliseninterneparOracledanslesindex.Silestconnu,
cestlemoyenleplusrapidepouraccderuneligne.
DanslastructureinterneduROWID,Oracleatouteslesinformationsncessaireslalocalisationphysiquedelaligne
dans un fichier de donnes (fichier, numro de bloc, position dans le bloc). Un ROWID nest pas directement
comprhensible parcontre,lepackageDBMS_ROWIDoffreplusieursfonctionsquipermettentdextrairelesdiffrentes

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

composantesduROWID.
UtiliserleROWIDdansuneapplication(danslesclausesWHEREdesordresSQL)servletrsintressantdupointde
vue des performances : Oracle obtient directement ladresse physique de la ligne lire ou modifier, sans devoir lire
toutelatablenipasserparunindex.
LeROWIDdunelignenechangejamais,tantquelalignenestpassupprime.Modifierunelignenechangepasson
ROWIDpuisquelaligneest,apriori,modifielintrieurdublocoelleatinsre ceseraaussilecassilaligne
estmigreversunautreblocparmanquedespacedisponible(cequinestpasbnfiquecommenousleverronsci
aprs).

3.Chanageetmigration
En rgle gnrale, une ligne dune table est stocke en totalit lintrieur dun bloc. Pour lire la ligne, Oracle na
besoindelirequunseulbloc.
Silaligneestintrinsquementtropgrandepourtenirdansunseulbloc,Oraclelastockedansplusieursblocschans
par des pointeurs : cest le phnomne de chanage dune ligne. Pour lire cette ligne, Oracle a alors besoin de lire
plusieursblocs.
Si une ligne grandit suite une modification, et quil ne reste plus suffisamment despace libre dans le bloc, Oracle
dplacelalignedansunautreblocpointparlenttedelalignerestdansleblocdorigine : cestlephnomnede
migration dune ligne. Le ROWID de la ligne modifie et migre na pas chang, mais pour lire cette ligne, Oracle a
besoin de lire deux blocs, ce qui dgrade les performances des accs par index. Lintrt de cette technique est
quOraclenapasbesoindemodifierleROWIDdelalignedanslesindexlorsdunemisejourdelaligne.
Lephnomnedechanageestdifficilementvitable,saufenaugmentantlatailledesblocs.Ilfautdoncypenserlors
delacrationdelabasededonnesoudutablespace.Celapeuttreinsuffisantpourlestrsgrandeslignes.
Le phnomne de migration peut (et mme doit) tre vit, en laissant suffisamment despace disponible dans les
blocspourlesmisesjour.LeparamtrePCTFREEseradoncpositionnavecsoinsurlestablespourlesquelleslataille
deslignesinsresestsensiblementinfrieurelatailledeslignesaprsmodification(s).

4.Spcifierlestockagedunetable
Lestockagedunetablepeuttrespcifilorsdelacrationdelatable,danslordreSQLCREATE TABLE.
Syntaxesimplifie
CREATE TABLE nom_table
(spcification des colonnes)
[ TABLESPACE nom_tablespace ]
[ PCTFREE valeur ]
[ PCTUSED valeur ]
[ clause_stockage ]
[ NOCOMPRESS | COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ]]
[ LOGGING | NOLOGGING ] ;
- clause_stockage
STORAGE ( [ INITIAL valeur [K|M] ]
[ NEXT valeur [K|M] ]
[ MINEXTENTS valeur ]
[ MAXEXTENTS { valeur | UNLIMITED } ]
[ PCTINCREASE valeur ] )
Exemple :
CREATE TABLE adherent
(numero
NUMBER(6),
nom
VARCHAR2(40),
prenom
VARCHAR2(30))
TABLESPACE data
PCTFREE 30
STORAGE ( INITIAL 10M ) ;
Les clauses TABLESPACEet STORAGE ont dj t prsentes au chapitre Gestion des tablespaces et des fichiers de
donnes. Noubliez pas que la clause STORAGE est traite diffremment selon que le tablespace est gr par le
dictionnaireoulocalement.Dansuntablespacegrlocalement,seuleloptionINITIALestutile.
LaclausePCTFREEdonnelavaleurduPCTFREE(entre0et99,10pardfaut).

- 4-

ENI Editions - All rights reserved - Algeria Educ

LaclausePCTUSEDdonnelavaleurduPCTUSED(entre0et99,40pardfaut).Cetteclauseestignoresilatableest
stockedansuntablespacegrlocalementavecunegestionautomatiquedelespacedanslessegments.
Pardfinition,PCTFREE+PCTUSEDdoittrestrictementinfrieur100.
LaclauseCOMPRESS permetdecompresserlesdonnesdanslesblocs.LoptionDIRECT_LOADindiquequelesblocssont
compresss,uniquementlorsdesoprationsdechargementdirect(crationdelatablepartirdunesousrequte,
reconstructiondelatableouchargementpardesinsertionsenchemindirect) cestlavaleurpardfaut.LoptionALL
indique que les blocs sont compresss pour toutes les oprations (y compris les insertions ou modifications
individuelles). Par dfaut, la table hrite de loption COMPRESS ou NOCOMPRESS, ventuellement dfinie au niveau du
tablespacedanslequelelleeststocke.
LaclauseNOLOGGINGpermetdenepasjournalisercertainesoprationseffectuessurlatable(crationpartirdune
sousrequteetinsertionenchemindirectessentiellement) lesmisesjourindividuellessont,parcontre,toujours
journalises. La clause NOLOGGING est sans effet si la table est stocke dans un tablespace dfini en mode FORCE
LOGGING, ou si la base de donnes ellemme est en mode FORCE LOGGING. Par dfaut, la table hrite de loption
LOGGING ou NOLOGGING, ventuellement dfinie au niveau du tablespace dans lequel elle est stocke. La clause
NOLOGGINGestintressantepouramliorerlesperformancesdecertainesoprationsmaisrendlatableirrcuprable
encasdincident aprsuneoprationNOLOGGING,ilestsouventpertinentderaliserunesauvegardedelabasede
donnes.LordreSQLALTER TABLEpeuttreutilispourmodifiercertainescaractristiquesdustockagedelatable.
Syntaxesimplifie
ALTER TABLE nom_table
[ PCTFREE valeur ]
[ PCTUSED valeur ]
[ NOCOMPRESS | COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ] ]
[ LOGGING | NOLOGGING ]
[ clause_stockage_restreinte ] ;
clause_stockage_restreinte
STORAGE ( [ NEXT valeur [K|M] ]
[ MAXEXTENTS { valeur | UNLIMITED } ]
[ PCTINCREASE valeur ] )
LordreSQLALTER TABLEnapasdeffetrtroactifsurlestockagedjalloulatable.Ilnestdoncpaspossible,de
cettemanire,dechangerlatabledetablespace,demodifierlespaceinitialementalloulatableouleremplissage
oulacompressiondesblocsdjutiliss.
Les caractristiques modifies sont prises en compte uniquement pour les futures oprations. Plus tard, nous
tudierons la clause MOVE de lordre SQL ALTER TABLE qui permet de reconstruire physiquement le stockage dune
table.

5.Recommandationspourlestockagedestables
a.Vuedensemble
La recommandation numro un est de stocker les tables dans un ou plusieurs tablespaces ddis, de prfrence
grslocalement(cestlecaspardfaut)avecunegestionautomatiquedelespacedanslessegments(cestlecas
pardfaut).
Si cette recommandation numro un est respecte, vous allez bnficier de nombreux mcanismes de gestion
automatiquedustockagequipermettentventuellementdenerienfairedeplus.Danscecas,utilisezdeprfrence
des tablespaces grs localement avec une gestion automatique de la taille des extensions (EXTENT MANAGEMENT
LOCAL AUTOALLOCATE,cestlecaspardfaut).
Nanmoins, si vous le souhaitez ou le pouvez, deux recommandations supplmentaires peuvent tre tudies, au
moinspourlestableslesplusimportantesdelapplication :

recommandationnumrodeux : rglerPCTFREEavecsoin(voirEstimationdePCTFREE)
recommandation numro trois : allouer un espace initial la table, adapt la volumtrie estime une
chancedonne,sipossiblelointaine(6mois,1an,2ansouplus).

Si vous souhaitez contrler plus prcisment le stockage des tables (ou de certaines tables), vous pouvez utiliser
destablespacesgrslocalementavecunegestionuniformedelatailledesextensions(EXTENT MANAGEMENT LOCAL
UNIFORM)et/ouspcifieravecsoinloptionINITIALdelaclauseSTORAGE.
Lide est de choisir des caractristiques de stockage adaptes la nature de la table (petite, volumineuse,

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

statique, croissance rgulire, etc.) et danticiper une chance suffisamment lointaine pour tre tranquille
pendantquelquetemps,etdoncavoirletempsncessairepourragirsilestimationinitialeestmauvaise.
Lefaitquunetablesoitstockedansungrandnombredextensionsneposepasdeproblmedupointde
vuedesperformances.
Parailleurs,ilnefautpashsiterddierdestablespacesaustockagedestablesvolumineuses.
Dans un tablespace gr localement avec une gestion automatique de lespace dans les segments, les
extensionsdoiventavoirunetailledaumoins5blocs.

b.Estimerlavolumtriedunetableunechancedonne
Lamthodelaplussimple(etlapluspragmatique)pourestimerlavolumtriedunetableunechancedonne
consiste :

estimerlenombredelignesattendues

crerlatabledanslesconditionsdexploitation(tailledeblocetPCTFREEnotamment)

chargerlatableavecunjeudedonnesreprsentatives

calculerlenombredeblocsoccupsparcejeudessai(parexemplepartirdesstatistiquesdelatableou
laidedupackageDBMS_SPACE voirciaprs)
endduirelenombredeblocspourlenombredelignesattendues(rgledetrois).

Cette mthode ne donne quune estimation, pas un rsultat exact loctet prs, car il y a de nombreuses
incertitudes :

surlenombredelignesestimlchance(N+/10%parexemple)
surlareprsentativitdujeudedonnes,notammentsurlalongueurmoyennedesdonnessaisies(lenom
duclientstocksouslaformedunVARCHAR2(80)comprendratilenmoyenne40caractres,50,60?).

SupposonsparexemplequelatableADHERENT(schmaDIANE)aittchargeavec10 000lignesetquelledoiveen
contenir1 000 000unechancede2ans.Nouspouvonsraliserlecalculsuivant :
SQL> EXEC dbms_stats.gather_table_stats(DIANE,ADHERENT)
Procdure PL/SQL termine avec succs.
SQL> SELECT blocks FROM dba_tables
2 WHERE table_name=ADHERENT;
BLOCKS
---------138
SQL> SELECT 138/10000*1000000 estimation FROM dual;
ESTIMATION
---------13800
Le jeu de donnes utilise 138 blocs, donc, par rgle de trois, nous pouvons estimer que la table utilisera 13 800
blocsdansdeuxans.
LutilisationdupackageDBMS_STATSseraprsentlasectionSuperviserlespaceoccupparunetable.
Enproduction,uncalculdecegenrepeuttreeffectuintervallesrgulierspourvoirlatendanceetvrifier
sileshypothsesdedparttaientbonnes.

- 6-

ENI Editions - All rights reserved - Algeria Educ

c.EstimationdePCTFREE
Aveccalcul
LavaleuroptimaledePCTFREEpeuttreestimeparlaformulesuivante :
PCTFREE = 100 x (1 -Ti / Tf)
Ti=taillemoyenneinitialedelaligneenoctets(aumomentdelinsertion)
Tf=taillemoyennefinaledelaligneenoctets(aprslesmisesjour).
LesvaleursdeTietTfpeuventtreestimespartirdesstatistiquesdelatable(AVG_ROW_LEN).Cetteformuleest
surtout destine calculer la valeur dePCTFREEconcernantlestablespourlesquelles,latailledeslignesinsres
initialement nest pas reprsentative de la taille finale de la ligne aprs modification(s). Pour les autres tables,
lestimationsanscalcul,prsenteciaprs,peuttreutilise.
Sanscalcul
Pour une table "statique" ou faisant uniquement lobjet dinsertions,mettreun PCTFREEfaiblepourobtenirunbon
remplissagedesblocs(05).Pourunetablefaisantlobjetdinsertionetdemisesjour,mettreunPCTFREEplus
levpourviterlesphnomnesdemigration(1050enfonctiondurisquequelesmisesjourfassentgrossir
plusoumoinsleslignes).

6.Surveillerlutilisationdunetable
Enversion9,Oracleaintroduitunefonctionnalitpermettantdemettreunetable"soussurveillance".Danscemode,
OracletracelenombreapproximatifdordresSQLINSERT,UPDATEetDELETEexcutssurlatable.
Enversion9,cettefonctionnalitdevaittreactiveexplicitement depuislaversion10,lestablessont,pardfaut,
soussurveillance(saufsileparamtreSTATISTICS_LEVELestgalBASIC,cequiestdconseill).
Ce mcanisme de surveillance est avant tout destin la fonctionnalit de calcul automatique des statistiques les
informationsainsicollectespermettentOraclededterminerlestablesdontlesstatistiquesnesontplusjour.
Cemcanismedesurveillancepeutaussitreutilispouranalyserlactivitsurlestablesetidentifierlestablesles
plus sollicites en mise jour ce sont les tables sur lesquelles vous devez plus particulirement porter votre
attentionencequiconcernelestockage(rglagedePCTFREEnotamment).
Les informations sur les tables surveilles peuvent tre consultes dans la vue DBA_TAB_ MODIFICATIONS (et
cons urs).
Lesprincipalescolonnesdelavuesontlessuivantes :
TABLE_OWNER
propritairedelatable.
TABLE_NAME
nomdelatable.
INSERTS
nombreapproximatifdelignesinsres.
UPDATES
nombreapproximatifdelignesmodifies.
DELETES
nombreapproximatifdelignessupprimes.
TIMESTAMP
date/heuredeladerniremisejourdelastatistique.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

TRUNCATED
indicationpoursavoirsilatableattronque(YESouNO).
Les statistiques sur lutilisation dune table ne sont pas dverses en temps rel dans le dictionnaire. Le dlai
annonc est entre quelques secondes et plusieurs heures. La colonne TIMESTAMP de la vue DBA_TAB_MODIFICATIONS
permetdeconnatrelafracheurdelinformation.
Aubesoin,laprocdureFLUSH_DATABASE_MONITORING_INFOdupackageDBMS_ STATSpeuttreutilisepourforcerlamise
jourimmdiatedudictionnaire.
Il faut bien noter que les statistiques de surveillance sont supprimes lors de la gnration des statistiques. Les
statistiquesdesurveillancesontdonccollectesetcumulesdepuisladerniregnrationdestatistiquessurlatable
(voirlacolonneLAST_ANALYZEDdelavueDBA_TABLES).
Pour une bonne analyse, il est important de raliser des relevs priodiques afin de voir lvolution de lactivit et
identifierdventuellespriodesdepointes.

7.Superviserlespaceoccupparunetable
a.Vuedensemble
LesvuesDBA_SEGMENTS etDBA_EXTENTSprsentesauchapitreGestiondestablespacesetdesfichiersdedonnes
permettentdevoirlespaceglobalalloulatable,maisellesnedonnentpasdinformationssurlenombredeblocs
rellementutiliss.
Pourchaquetable(etplusgnralementchaquesegment),Oracleconnatledernierblocutilisparlatable : cestla
highwatermark(HWM "lignedeplushauteseaux").
LaHWMaugmentelorsdesinsertionsmaisnediminuepaslorsdessuppressions :

LaHWMpermetdoncdeconnatrelenombretotalmaximumdeblocsutilissparlatabledanstoutesonexistence,
maispaslenombredeblocsactuellementutiliss,nileurremplissage.
LaHWMmarquepourOraclelemplacementdudernierblocoilestsusceptibledetrouveruneligne audeldela
HWM,uneseulechoseestsre,ilnyapasdeligne.LorsqueOracleraliseunparcourscompletdelatable,ilne
parcourtpastouslesblocsallouslatablemaisuniquementceuxsitussouslaHWM.
Pourobtenirdesinformationsplusdtaillessurlestockagedunetable,vouspouvezutiliserlepackageDBMS_SPACE.
Cedernierproposeplusieursprocduresquipermettentnotammentdecalculerdesinformationssurlespacelibreet
lespaceutilislintrieurdunsegment.
Par ailleurs, pour les besoins de loptimiseur, Oracle calcule priodiquement des statistiques sur les tables (et les
index), laide du package DBMS_STATS certaines de ces statistiques donnent des informations relatives au
stockage.
Pourobtenirdesinformationsplusdtaillessurlestockagedunetable,vouspouvezutiliserlesstatistiquesdela
table,gnresparlepackageDBMS_STATSoucalculerdesinformationslaidedupackageDBMS_SPACE.

b.LepackageDBMS_SPACE
Lepackage DBMS_SPACE propose plusieurs procdures qui peuvent tre utilises pour superviser le stockage dune
table(plusgnralementdunsegment) :
FREE_BLOCKS
informationssurlesblocslibresdansunsegmentdontlespaceestgrmanuellement.
SPACE_USAGE
informationssurloccupationdesblocsdansunsegmentdontlespaceestgrautomatiquement.

- 8-

ENI Editions - All rights reserved - Algeria Educ

UNUSED_SPACE
informationssurlesblocsinutilissdunsegment.
Lepackage DBMS_SPACE possde dautresprocduresoufonctionsquipermettentdestimerlatailledune table ou
dun index ou la tendance de croissance dun segment. Ces procdures et fonctions, plus complexes utiliser, ne
sontpasprsentesdanscetouvrage.Parcontre,nousprsenteronsleurutilisationtraverslinterfacegraphique
duDatabaseControl.
PourplusdinformationssurlepackageDBMS_SPACE, reportezvousladocumentationPL/SQLPackagesandTypes
Reference.
Exemple :
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2
v_unformatted_blocks NUMBER;
3
v_unformatted_bytes NUMBER;
4
v_fs1_blocks
NUMBER;
5
v_fs1_bytes
NUMBER;
6
v_fs2_blocks
NUMBER;
7
v_fs2_bytes
NUMBER;
8
v_fs3_blocks
NUMBER;
9
v_fs3_bytes
NUMBER;
10
v_fs4_blocks
NUMBER;
11
v_fs4_bytes
NUMBER;
12
v_full_blocks
NUMBER;
13
v_full_bytes
NUMBER;
14
PROCEDURE p(v_texte VARCHAR2) IS
15
BEGIN
16
dbms_output.put_line(v_texte);
17
END;
18 BEGIN
19
dbms_space.space_usage
20
(
21
segment_owner
=> DIANE,
22
segment_name
=> ADHERENT,
23
segment_type
=> TABLE,
24
unformatted_blocks => v_unformatted_blocks,
25
unformatted_bytes => v_unformatted_bytes,
26
fs1_blocks
=> v_fs1_blocks,
27
fs1_bytes
=> v_fs1_bytes,
28
fs2_blocks
=> v_fs2_blocks,
29
fs2_bytes
=> v_fs2_bytes,
30
fs3_blocks
=> v_fs3_blocks,
31
fs3_bytes
=> v_fs3_bytes,
32
fs4_blocks
=> v_fs4_blocks,
33
fs4_bytes
=> v_fs4_bytes,
34
full_blocks
=> v_full_blocks,
35
full_bytes
=> v_full_bytes
36
);
37
p(Blocs :);
38
p(. Pleins
= ||v_full_blocks);
39
p(. 0 25% despace libre = ||v_fs1_blocks);
40
p(. 25 50% despace libre = ||v_fs2_blocks);
41
p(. 50 75% despace libre = ||v_fs3_blocks);
42
p(. 75 100% despace libre = ||v_fs4_blocks);
43
p(. Non formats
= ||v_unformatted_blocks);
44 END;
45 /
Blocs :
. Pleins
= 128
. 0 25% despace libre = 0
. 25 50% despace libre = 40
. 50 75% despace libre = 4
. 75 100% despace libre = 33
. Non formats
= 0
Procdure PL/SQL termine avec succs.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

SQL> DECLARE
2
v_total_blocks
NUMBER;
3
v_total_bytes
NUMBER;
4
v_unused_blocks
NUMBER;
5
v_unused_bytes
NUMBER;
6
v_last_extent_file
NUMBER;
7
v_last_extent_block NUMBER;
8
v_last_used_block
NUMBER;
9
PROCEDURE p(v_texte VARCHAR2) IS
10
BEGIN
11
dbms_output.put_line(v_texte);
12
END;
13 BEGIN
14
dbms_space.unused_space (
15
segment_owner
=> DIANE,
16
segment_name
=> ADHERENT,
17
segment_type
=> TABLE,
18
total_blocks
=> v_total_blocks,
19
total_bytes
=> v_total_bytes,
20
unused_blocks
=> v_unused_blocks,
21
unused_bytes
=> v_unused_bytes,
22
last_used_extent_file_id => v_last_extent_file,
23
last_used_extent_block_id => v_last_extent_block,
24
last_used_block
=> v_last_used_block
25
);
26
p(Blocs :);
27
p(. Total
= ||v_total_blocks);
28
p(. Inutiliss
= ||v_unused_blocks);
29
p(. Utiliss
= ||(v_total_blocks-v_unused_blocks));
30 END;
31 /
Blocs :
. Total
= 224
. Inutiliss
= 7
. Utiliss
= 217
Procdure PL/SQL termine avec succs.
SQL> SELECT blocks FROM dba_segments
2 WHERE segment_name=ADHERENT AND owner=DIANE;
BLOCKS
-----------224
Surcetexemple,nousvoyonsquelatableADHERENTa224blocsallous.Surces224blocs,217sontutiliss(cestla
HWM)et7sontinutiliss(jamaisaucunligneinsrelintrieur).Surlesblocsutiliss,ilyena128quisontpleins,
40quiontentre25et50%despacelibre,4quiontentre50et75%despacelibreset33quiontentre75et100%
despace libre, soit un total de 205 blocs. Les 12 blocs manquants pour arriver 217 sont des blocs de bitmap
utilisspourlagestionautomatique(ilsnesontpascomptabilissparlaprocdureSPACE_USAGE).

c.Lesstatistiquessurunetable
LaprocdureGATHER_TABLE_STATSdupackageDBMS_STATSpermetdecalculerdesstatistiquessurunetable.
Cetteprocdureadeuxparamtresobligatoiresenentre :
ownname
Nomduschmapropritairedelatable.
tabname
Nomdelatable.
Exemple :
EXECUTE dbms_stats.gather_table_stats(DIANE,ADHERENT)
La procdure GATHER_TABLE_STATS a beaucoup dautres paramtres dont la valeur par dfaut est gnralement
- 10 -

ENI Editions - All rights reserved - Algeria Educ

adapte.
AupointLesstatistiquesetloptimiseur Oracle, nous verrons que les statistiques sont calcules automatiquement
parOracleintervallesrguliers.Entempsnormal,ilnestdoncpasncessairedutilisercetteprocdure.Gnrer
manuellement des statistiques peut, par contre, savrer utile si vous venez de crer et de charger une table, ou
aprsunemisejourmassivedesdonnesdunetable(insertion,modification,suppression).
Le calcul de statistiques est effectu sur un chantillon des donnes. La taille de lchantillon est choisie
automatiquement par Oracle en fonction des caractristiques de la table (au besoin, la taille de lchantillon peut
trespcifiegrceauparamtreestimate_percent).
Historiquement, les statistiques peuvent aussi tre calcules laide des clauses COMPUTE ouESTIMATE de
lordre SQL ANALYZE TABLE. Cette possibilit est maintenue pour des raisons de compatibilit ascendante.
Pourcalculerlesstatistiquessurlestablesetlesindex,ilfaututiliserlepackageDBMS_STATS(depuisOracle8i).
LesstatistiquesdunetablepeuventtreconsultesdanslavueDBA_TABLES(et"cons urs") :
NUM_ROWS
Nombredelignesdanslatable.
BLOCKS
NombredeblocssouslaHighWaterMark(HWM).
AVG_ROW_LEN
Longueurmoyenneduneligne,ycomprislesinformationsdentte.
SAMPLE_SIZE
Nombredelignesdanslchantillonutilispourlecalculdesstatistiques.
LAST_ANALYZED
Date/heuredeladernireanalysedelatable.

La valeur BLOCKS est toujours exacte, mme si les statistiques ne sont pas calcules sur la totalit de la
table.
Exemple :
SQL> EXEC dbms_stats.gather_table_stats(DIANE,ADHERENT)
Procdure PL/SQL termine avec succs.
SQL> SELECT num_rows,blocks,avg_row_len,sample_size,
2
TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed
3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE;
NUM_ROWS
BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED
---------- ---------- ----------- ----------- ------------11488
217
91
11488 20/07 15:47
Nousretrouvonsles217blocsutiliss,calculslaidedupackageDBMS_SPACE.

d.Problmespossiblessurlestockage
Lesproblmespossiblessurlestockagedunetablesontlessuivants :

espaceinutilisallouunetable

faibletauxdoccupationmoyendesblocs.

Espaceinutilisallouunetable

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 11 -

Il y a de lespace inutilis allou la table si le nombre de blocs occups (sous la HWM) est faible par rapport au
nombredeblocsallous,etsilatablenevaplusgrossir(oupeu).
LenombredeblocsoccupsestdonnparlavaleurdelacolonneBLOCKSdelavueDBA_TABLES(ouparuncalcul
laide du package DBMS_SPACE) et le nombre de blocs allous par la valeur de la colonne BLOCKS de la vue
DBA_SEGMENTS.
Exemple :
SQL> SELECT t.blocks "occups",s.blocks "allous"
2 FROM dba_tables t, dba_segments s
3 WHERE
s.segment_name=t.table_name
4
AND s.owner=t.owner
5
AND t.table_name=ADHERENT AND t.owner=DIANE;
occups
allous
---------- ---------217
224
Cepremierproblmenapasdincidencesurlesperformances(lesblocsaudeldelaHWMnesontjamaislus) il
conduitjusteungaspillagedespacedisque.
Faibletauxdoccupationmoyendesblocs
Pourlestablesdontlespaceestgrautomatiquement,letauxdoccupationmoyendesblocspeuttreanalys
laidedursultatdonnparlaprocdureSPACE_USAGEdupackageDBMS_SPACE.
Exemple :
Blocs :
. Pleins
. 0 25% despace libre
. 25 50% despace libre
. 50 75% despace libre
. 75 100% despace libre
. Non formats

=
=
=
=
=
=

71
0
38
31
65
0

Dans cet exemple, nous voyons que la table a 71 blocs pleins, 38 blocs moyennement remplis et 96 faiblement
remplis.
Silaproportiondeblocsmoyennementremplisoufaiblementremplisestimportante,sileslignesactuellesnevont
pas grossir, et si peu de nouvelles lignes vont tre insres, nous pouvons considrer quil y a un problme de
remplissagedesblocs.
CemauvaisremplissagedesblocspeuttreliunevaleurinadaptedePCTFREEouunesuppressionimportante
dedonnes.
CedeuximeproblmeadesincidencessurlesperformancesetsurlutilisationdelespacedansleDatabaseBuffer
Cache.Pourunnombredelignesdonn,untauxderemplissagelevncessitemoinsdeblocspourlestockage,
doncmoinsdeblocslireetmoinsdeblocsdansleDatabaseBufferCache.

8.Dtecterlesproblmesdemigrationoudechanage
LaclauseLIST CHAINED ROWSdelordreSQLANALYZE TABLEpermetdidentifierleslignesmigresouchanes.
Syntaxe
ANALYZE TABLE nom_table LIST CHAINED ROWS;
Aupralable,latableCHAINED_ROWSdoittrecrelaide du scriptutlchain.sql,quisetrouvedanslerpertoire%
ORACLE_HOME%\rdbms\admin ou $ORACLE_ HOME/rdbms/admin. Aprs excution de lordre SQL ANALYZE, cette table
contientlesROWIDdeslignesmigresouchanes.
Exemple :
SQL> @?\rdbms\admin\utlchain.sql
Table cre.
SQL> ANALYZE TABLE diane.adherent LIST CHAINED ROWS;
Table analyse.

- 12 -

ENI Editions - All rights reserved - Algeria Educ

SQL> SELECT COUNT(head_rowid) FROM chained_rows


2 WHERE table_name=ADHERENT AND owner_name=DIANE;
COUNT(HEAD_ROWID)
----------------16
SQL> SELECT head_rowid FROM chained_rows
2 WHERE table_name=ADHERENT AND owner_name=DIANE
3
AND ROWNUM = 1;
HEAD_ROWID
-----------------AAACmIAAKAAAA3sAAf
SQL> SELECT * FROM diane.adherent
2 WHERE ROWID = AAACmIAAKAAAA3sAAf;
...
LatableCHAINED_ROWScontientnotammentlescolonnessuivantes :
OWNER_NAME
Nomduschmapropritairedelatableanalyse.
TABLE_NAME
Nomdelatableanalyse.
HEAD_ROWID
ROWIDdelalignequiaunproblmedemigrationoudechane.
ANALYZE_TIMESTAMP
Date/heuredelanalyse.
DanslatableCHAINED_ROWS,lanalysestockeleROWIDdeslignesquiontunproblmedechanageoudemigration
laide dune sousrequte, il est possible de lister les lignes proprement dites. Les rsultats saccumulent dans la
table lorsdunenouvelleanalysedunetablepralablementanalyse,ilconvientdontdesupprimerdeCHAINED_ROWS
lancienrsultatoudutiliserlacolonneANALYZE_TIMESTAMPpourextrairelersultat.
Poursavoirsilsagitdunproblmedechanageoudemigration,ilfautinterrogerlaligne.Silaligneestpluscourte
que la taille du bloc, il sagit dun problme de migration (la ligne pourrait tenir dans un bloc) si la ligne est plus
longue que la taille du bloc, il sagit dun problme de chanage. La statistiqueAVG_ROW_LEN dansDBA_TABLES donne
une indication a priori si la longueur moyenne des lignes est assez largement infrieure la taille de bloc, il sagit
srementdunproblmedemigration.
Dterminerpartirdequelpourcentagedeligneschanesoumigresilfautagirnestpassimple.Lepourcentageen
soi nest pas suffisant cela dpend aussi de lactivit qui existe sur les lignes en question. Sil y a 90 % de lignes
migres ou chanes mais que ces lignes ne sont jamais interroges, il ny a pas de problme de performance
linverse, sil ny a que 1 % de lignes migres ou chanes mais que ces lignes soient utilises dans toutes les
requtes,ilrisquedyavoirunproblmedeperformance.

9.Rorganiserlestockagedunetable
a.Vuedensemble
Lesbesoinsderorganisationdunetablesontvaris :

librerdelespacelibreaudessusdelaHWM

amliorerletauxderemplissagedesblocs

corrigerunproblmedemigration

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 13 -

rorganiser plus globalement le stockage de la table : changement de tablespace, rduction du nombre


dextensions,changementdePCTFREE,etc.

LibrerdelespacesituaudessusdelaHWMpermetdercuprerdelespacealloulatablemaisjamaisutilis
(etestimjamaisutilisable).
Amliorerletauxderemplissagedesblocspermetaussiventuellementdelibrerdelespaceinutilis(lespacelibre
desblocs),situcettefoisaudessousdelaHWM.
Plusieurstechniquessontnotredispositionpourrorganiserlestockagedunetable :

ordreSQLALTER TABLE ... DEALLOCATE UNUSED

recrerlatable/deslignesdelatable

export/import

ordreSQLALTER TABLE ... SHRINK SPACE

ordreSQLALTER TABLE ... MOVE.

Letableausuivantrsumelestechniquesenvisageables()etindiquelesquellessontlesmieuxadaptes()tel
outelbesoin :
DEALLOCATE

Recrer

Export/
Import

SHRINK

MOVE

Amliorerletauxde
remplissagedesblocs

Corrigerunproblme
demigration

Rorganisationplus
globale

Librerdelespaceau
dessusdelaHWM

lexceptiondelordreSQLALTER TABLE ... DEALLOCATE UNUSED,lestechniquescitespeuventaprioritreutiliss


indiffremment pour rgler les diffrents problmes nanmoins, certaines techniques sont mieux adaptes que
dautresteloutelbesoin.
Historiquement,lexport/importestlatechniquedebasepourlesrorganisationsunpeumassives cestdailleurs
toujourslabonnetechniquepourunerorganisationcompltedelabase,notammentencasdechangementdela
tailledubloc.
Pourlereste,lesordresSQLALTER TABLE ... MOVE(depuisla8i)etALTER TABLE ... SHRINK SPACE(depuisla10)
sontapriorilesbonsoutilspour"reconstruire"unetable.

b.LordreSQLALTERTABLE...DEALLOCATEUNUSED
LordreSQLALTER TABLE ... DEALLOCATE UNUSEDpermetdelibrerlespacedunetablesituaudessusdelaHWM.
Syntaxe
ALTER TABLE nom_table DEALLOCATE UNUSED [ KEEP valeur [K|M] ] ;
Exemple :
ALTER TABLE adherent DEALLOCATE UNUSED;
ALTER TABLE adherent DEALLOCATE UNUSED KEEP 0;
ALTER TABLE adherent DEALLOCATE UNUSED KEEP 1M;
LoptionKEEPindiquelespaceconserveraudessusdelaHWM.

- 14 -

ENI Editions - All rights reserved - Algeria Educ

SansclauseKEEP,latailleinitialedelatableestprserve : lordrenelibrerapasdespacesilaHWMestinfrieure
latailleinitialedelatable(valeurdelacolonneINITIAL_EXTENTdelavueDBA_SEGMENTS).
AveclaclauseKEEP,lespacespcifiestconserv(ventuellementaucunavecKEEP 0)etlatailleinitialedelatable,
ventuellementajustedansledictionnairededonnes.
Par ailleurs, lorsque la table est stocke dans un tablespace gr localement, avec une gestion uniforme des
extensions,Oraclenelibreraquedesextensionsentires uneextensionnepeutpastre"coupe"endeux.Sila
tableeststockedansuntablespacegrlocalement,avecunegestionautomatiquedesextensions,Oraclepeut
"couper"uneextensionentenantcomptedesrglesinternesquilappliquesurlatailledesextensions.
Lespacelibrestrendudisponiblepourdautressegments(vueDBA_FREE_SPACE).
Cet ordre ne peut pas tre utilis pour librer de lespace audessous de la HWM (espace potentiel libre
suitedessuppressionsdelignes,parexemple).

c.Recrerlatableoudeslignesdelatable
Supprimerlatablepuislarcrerpermetvidemmentdenrorganiserlestockage.
Aupralable,ilfaudrasauvegarderlesdonnesdansunetabledetravail(ordreSQLCREATE TABLE ... AS SELECT).
Cette mthode prsente un inconvnient majeur : les objets dpendants sont supprims (triggers, contraintes,
privilges,index)ouinvalids(procduresstockes,vues).Ilfautdoncbienpensertoutrecreraveclatable.
Exemple :
-- crer une table de travail avec les bonnes clauses de stockage
CREATE TABLE temp
TABLESPACE ...
PCTFREE ...
STORAGE ...
AS SELECT * FROM adherent;
DROP TABLE adherent;
RENAME temp TO adherent;
-- recrer les objets dpendants
La table tant recre avec de bonnes clauses de stockage, cette variante peut tre utilise pour rorganiser
compltement le stockage de la table, amliorer le taux de remplissage des blocs, rsoudre un problme de
migration. Par contre, il faut penser recrer tous les objets dpendants et remettre les droits. De plus, le
traitementpeuttrelongsurunetablevolumineuse.
Une premire variante possible consiste ne pas supprimer la table mais la tronquer (ordre SQL TRUNCATE
TABLE) danscecas,lesobjetsdpendantssontprservs.
Exemple :
CREATE TABLE temp AS SELECT * FROM adherent;
TRUNCATE TABLE adherent;
INSERT INTO adherent SELECT * FROM temp;
Cettevarianteoffremoinsdepossibilitspourlarorganisationpuisquelatablenestpasrecre nanmoins,elle
permet damliorer le taux de remplissage des blocs (de librer de lespace sous la HWM) et de rsoudre un
problmedemigration.Latablentantpassupprime,ilnyapasdedifficultaveclesobjetsdpendants.
Par contre, il nest pas possible de tronquer une table qui possde une contrainte de cl primaire rfrence par
ailleurs ilfautaupralabledsactiverlescontraintesdecltrangreconcernes.Deplus,lorsdelinsertion,les
contraintes dintgrits sont vrifies et les triggers sont dclenchs, ce qui peut aussi poser des problmes : l
encore,ilconvientdedsactiverlescontrainteset/oulestriggersquiposentdesdifficults.
Uneautrevariante,utilisablepourcorrigerunproblmedemigrationsurunpetitnombredelignes,consistene
supprimeretrecrerqueleslignesfautives.Latablentantpassupprime,ilnyapasdeproblmeaveclesobjets
dpendants.Parcontre,lencore,cettemthodepeutposerdesdifficultsaveclescontraintesdecltrangreet
lestriggers.
Exemple :
CREATE TABLE temp AS SELECT * FROM adherent WHERE ...;
DELETE FROM TABLE adherent WHERE ...;
INSERT INTO adherent SELECT * FROM temp;
Pourcesdiffrentesvariantes,lesoutilsdexport/importpeuventtreutilisspoursauvegarderlesdonnespuisles

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 15 -

rinsrer.
Dans la pratique, aucune de ces diffrentes variantes nest vraiment simple mettre en uvre. De plus, avec les
deuxpremiresvariantes,latablenestpasdisponiblependantlarorganisation.

d.LordreSQLALTERTABLE...SHRINKSPACE
LordreSQLALTER TABLE ... SHRINK SPACEpermetdecompacterleslignesdunetable,maisuniquementpourune
tablestockedansuntablespacegrlocalementavecunegestionautomatiquedelespacedanslessegments.Par
dfaut,Oraclecompacteaussilesegment,ajustelaHWMetlibrelespaceainsircupr.
Syntaxe
ALTER TABLE nom_table SHRINK SPACE [COMPACT] [CASCADE] ;
Avec loption COMPACT, Oracle se contente de compacter les lignes, mais sans ajuster la HWM ni librer despace.
LexcutionultrieuredunautreordreSQLALTER TABLE ... SHRINK SPACEpermettradeterminerlopration.
Loption CASCADE permet de raliser la mme opration sur les segments dpendants de la table, notamment les
index.
Cetteoprationncessiteundplacementdeslignesetdoncunemodificationdu ROWIDdeslignesdplaces.Par
dfaut, un tel dplacement nest pas autoris. Pour autoriser le dplacement des lignes de la table, vous pouvez
excuter lordre SQL ALTER TABLE nom_table ENABLE ROW MOVEMENT. Lors du dplacement des lignes et de la
modificationduROWID,Oraclemetjourlesindex.
LoprationdeSHRINKpeuttreeffectueenligneetdesmisesjourparalllessontpossibles unverrouexclusif
estpossurlatableuniquementaumomentducompactagedusegmentproprementdit(dplacementdelaHWMet
librationdelespacercupr).
Le compactage du segment peut poser des problmes si des longues requtes de lecture sont en cours sur la
table cestlaraisonpourlaquelleilestpossiblededissocierlesdeuxphasesdutraitement.
Exemple
SQL> -- situation de dpart
SQL> @dbms_space TEST
Blocs :
. Pleins
=
. 0 25% despace libre =
. 25 50% despace libre =
. 50 75% despace libre =
. 75 100% despace libre =
. Non formats
= 0
Blocs :
. Total
= 256
. Inutiliss
= 28
. Utiliss
= 228

216
0
0
0
0

SQL> -- suppression dune ligne sur deux


SQL> DELETE FROM test WHERE MOD(n,2) = 0;
7655 ligne(s) supprime(s).
SQL> COMMIT;
Validation effectue.
SQL> -- la table est pleine de trous !
SQL> @dbms_space TEST
Blocs :
. Pleins
= 0
. 0 25% despace libre = 0
. 25 50% despace libre = 2
. 50 75% despace libre = 214
. 75 100% despace libre = 0
. Non formats
= 0
Blocs :
. Total
= 256
. Inutiliss
= 28
. Utiliss
= 228
SQL> -- tentative de SHRINK
SQL> ALTER TABLE test SHRINK SPACE;

- 16 -

ENI Editions - All rights reserved - Algeria Educ

ALTER TABLE test SHRINK SPACE


*
ERREUR la ligne 1 :
ORA-10636: ROW MOVEMENT is not enabled
SQL> -- => erreur
SQL> -- il faut autoriser le dplacement de ligne
SQL> ALTER TABLE test ENABLE ROW MOVEMENT;
Table modifie.
SQL> -- cette fois cest bon
SQL> ALTER TABLE test SHRINK SPACE;
Table modifie.
SQL> @dbms_space TEST
Blocs :
. Pleins
. 0 25% despace libre
. 25 50% despace libre
. 50 75% despace libre
. 75 100% despace libre
. Non formats
Blocs :
. Total
= 120
. Inutiliss
= 2
. Utiliss
= 118

=
=
=
=
=
=

107
0
1
0
0
0

Lescript dbms_space.sqlappellelesprocdures SPACE_USAGEet UNUSED_SPACE du packageDBMS_SPACE pour afficher


desinformationssurlespaceutilisdansunsegment,dontlenomestpassenparamtre.
Surcetexemple,nousvoyonsqueleSHRINK SPACEabiencompactleslignesdansdesblocsetlibrlespace.

e.LordreSQLALTERTABLE...MOVE
Lordre SQL ALTER TABLE ... MOVEpermet de rorganiser compltement le stockage physique dune table sans la
supprimer.
Syntaxe
ALTER TABLE nom_table MOVE
[ TABLESPACE nom_tablespace ]
[ PCTFREE valeur ]
[ clause_stockage ]
[ NOCOMPRESS | COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ] ]
[ LOGGING | NOLOGGING ] ;
- clause_stockage
STORAGE ( [ INITIAL valeur [K|M] ]
[ NEXT valeur [K|M] ]
[ MINEXTENTS valeur ]
[ MAXEXTENTS { valeur | UNLIMITED } ]
[ PCTINCREASE valeur ] )
Exemple :
ALTER TABLE adherent MOVE
PCTFREE 20
STORAGE (INITIAL 10M) ;
Les options sont les mmes que celles de lordre SQL CREATE TABLE.Lordre SQL ALTER TABLE ... MOVE est trs
intressant car toutes les options de stockage peuvent tre modifies, dont le tablespace. De plus, les objets
dpendantssontprservs.
Leprincipemisen uvreestderecopierphysiquementlesdonnesdesextensionsactuellementallouesversune
ouplusieursnouvellesextensionsallouesailleurs.Lesextensionsinitialessontlibreslafindutraitement : la
tableinitialeestdoncintacteencasdchec,maisilfautunespacedisponibleaumoinsgallatailleinitialedela
tablependantlareconstruction.
Leslignestantphysiquementdplaces,lesROWIDchangentmaislesindexnesontpasmisjourentempsrel
parOracle ilssontinvalids(statutUNUSABLE).Aprsavoirreconstruitlatable,ilfaudrareconstruirelesindex(ordre
SQL ALTER INDEX ... REBUILD). De mme, les statistiques de la table deviennent invalides et de nouvelles

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 17 -

statistiquesdoiventtrecollectes.
Pendant le traitement, la table nest pas disponible en mise jour par contre, elle est accessible en lecture (le
segmentinitialestprserv).Cettetechniquedereconstructionestplussimplemettreen uvre,etdoncmoins
risque, que les techniques de recration. Cest sans conteste LA technique utiliser depuis la version 8i pour
rorganiser le stockage dune table (ou dun tablespace, en ralisant lopration sur toutes les tables du
tablespace).
Exemple1

Situationdedpart

SQL> SELECT tablespace_name,blocks,extents FROM dba_segments


2 WHERE segment_name=ADHERENT AND owner=DIANE;
TABLESPACE_NAME
BLOCKS
EXTENTS
------------------------------ ---------- ---------SYSTEM
768
21
SQL> SELECT num_rows,blocks,avg_row_len,sample_size,
2
TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed
3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE;
NUM_ROWS
BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED
---------- ---------- ----------- ----------- ------------49907
659
86
49907 20/07 19:20
SQL> SELECT COUNT(head_rowid) FROM chained_rows
2 WHERE table_name=ADHERENT AND owner_name=DIANE;
COUNT(HEAD_ROWID)
----------------5894

Reconstruction

SQL> ALTER TABLE diane.adherent MOVE


2 TABLESPACE data
3 PCTFREE 20;

Situationlarrive(aprscalculdesstatistiquesetanalysedesligneschanesoumigres)

SQL> SELECT tablespace_name,blocks,extents FROM dba_segments


2 WHERE segment_name=ADHERENT AND owner=DIANE;
TABLESPACE_NAME
BLOCKS
EXTENTS
------------------------------ ---------- ---------DATA
1280
1
SQL> SELECT num_rows,blocks,avg_row_len,sample_size,
2
TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed
3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE;
NUM_ROWS
BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED
---------- ---------- ----------- ----------- ------------49907
751
86
49907 20/07 19:20
SQL> SELECT COUNT(head_rowid) FROM chained_rows
2 WHERE table_name=ADHERENT AND owner_name=DIANE;
COUNT(HEAD_ROWID)
----------------0
Danslasituationdedpart,latableADHERENTprsentedeuxproblmesmajeurs :

- 18 -

ElleeststockedansletablespaceSYSTEM.
Elle a plus de 10 % de lignes migres (les lignes sont petites donc il ne sagit pas dun problme de
chanage).

ENI Editions - All rights reserved - Algeria Educ

Latableestdoncreconstruite :

dansletablespaceDATA

avecunPCTFREEpluslev.

Parailleurs,letablespaceDATAestuntablespacegrlocalementavecunegestionuniformedesextensions(10Mo,
soit 1 280 blocs) et une gestion automatique de lespace dans les segments il peut tre mieux adapt la
volumtriefuturedelatable.
Exemple2

Situationdedpart

SQL> SELECT num_rows,blocks,avg_row_len,sample_size,


2
TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed
3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE;
NUM_ROWS
BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED
---------- ---------- ----------- ----------- -----------50966
602
86
50966 20/07 19:41

Reconstructionaveccompression

SQL> ALTER TABLE diane.adherent MOVE


2 COMPRESS;

Situationlarrive(aprscalculdesstatistiques)

SQL> SELECT num_rows,blocks,avg_row_len,sample_size,


2
TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed
3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE;
NUM_ROWS
BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED
---------- ---------- ----------- ----------- -----------50966
92
86
50966 20/07 19:41
Cetexempleillustrelegain,parfoisspectaculaire,obtenuaveclacompression.

10.Trouverdesinformationssurlestables
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlestables :

DBA_TABLES : informationssurlestables

DBA_TAB_COLUMNS : informationssurlescolonnesdestables

DBA_SEGMENTS :informationssurlessegments(dontceuxdetypetable)

DBA_EXTENTS : informationssurlesextensionsallouesauxsegments(dontceuxdetypetable)

DBA_TAB_MODIFICATIONS : informationssurlestablessurveilles.

LesvuesDBA_SEGMENTSetDBA_EXTENTSonttprsenteslasectionTrouverdesinformationssurlestablespaceset
lesfichiersdedonnesduchapitreGestiondestablespacesetdesfichiersdedonnes.
Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs.
DBA_TABLES
TABLE_NAME

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 19 -

Nomdelatable.
OWNER
Propritairedelatable.
TABLESPACE_NAME
Nomdutablespacedanslequellatableeststocke.
PCT_FREE
ValeurduPCTFREE.
NUM_ROWS
Nombredelignesdanslatable.
BLOCKS
NombredeblocssouslaHWM.
AVG_ROW_LEN
Longueurmoyenneduneligneenoctets,entenantcomptedesinformationsdecontrle.
SAMPLE_SIZE
Tailledelchantillonutilislorsducalculdesstatistiques.
LAST_ANALYZED
Dateetheuredeladernireanalyseralisesurlatable.
LOGGING
IndiquesilemodeLOGGINGestactifounonpourlatable(YESouNO).
COMPRESSION
Indiquesilatableestcompresse(DISABLEDouENABLED).
TEMPORARY
Indiquesilsagitdunetabletemporaire(YouN).
ROW_MOVEMENT
Indiquesiledplacementdelignesestautoris(ENABLEDouDISABLED).
DBA_TAB_COLUMNS
TABLE_NAME
Nomdelatable.
OWNER
Propritairedelatable.
COLUMN_NAME

- 20 -

ENI Editions - All rights reserved - Algeria Educ

Nomdelacolonne.
DATA_TYPE
Typededonnes.
DATA_LENGTH
Longueur.
DATA_PRECISION
Prcision.
DATA_SCALE
chelle.
NULLABLE
IndiquesilacolonneacceptelesvaleursNULL(YouN).
COLUMN_ID
Numrodelacolonne.
DATA_DEFAULT
Valeurpardfautdelacolonne.
NUM_DISTINCT *
Nombredevaleursdistinctesdanslacolonne.
NUM_NULLS *
NombredevaleursNULLdanslacolonne.
AVG_COL_LEN *
Longueurmoyennedelacolonne.
LAST_ANALYZED *
Tailledelchantillonutilislorsducalculdesstatistiques.
SAMPLE_SIZE *
Dateetheuredeladernireanalyseralisesurlatable.
*Statistiquessurlescolonnes,calculespardfautlorsquelesstatistiquessontgnressurlatable.
DBA_TAB_MODIFICATIONS
TABLE_OWNER
Propritairedelatable.
TABLE_NAME
Nomdelatable.
INSERTS

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 21 -

Nombreapproximatifdelignesinsres.
UPDATES
Nombreapproximatifdelignesmodifies.
DELETES
Nombreapproximatifdelignessupprimes.
TIMESTAMP
Date/heuredeladerniremisejourdelastatistique.
TRUNCATED
Indiquesilatableattronque(YESouNO).

- 22 -

ENI Editions - All rights reserved - Algeria Educ

GestiondesindexBtree
1.Vuedensemble
Unindexestunestructuredfiniesuruneouplusieurscolonnesdunetable la(les)colonne(s)constitue(nt)lacl
delindex.
Lindex permet un accs rapide aux lignes de la table lors dune recherche base sur la cl de lindex. La notion
dindexestanaloguecelledelindexdunlivre : pourrechercherunmotdansunlivre,ilestplusrapidederegarder
daborddanslindex,cedernierdonnantlesnumrosdespagesquicontiennentlemot.Unindexestphysiquement
etlogiquementindpendantdelatable.Ilpeuttrecr/supprimsansaffecterlatabledebase(saufimpactsurles
performanceslorsquelindexestsupprim).Unindexncessitesonpropreespacedestockage.
LesindexsontautomatiquementactualissetutilissparOracle :

utilisslorsdesrecherchessiunecldindexestmentionnedanslaclauseWHEREdunerequte

actualisschaquemisejour(INSERT,UPDATE,DELETE).

La prsence ou labsencedun index est compltement transparente pour lapplication cest Oracle qui utilise (ou
non)lesindexautomatiquement.
Lamaintenancedesindexdgradelesperformancesdesmisesjour.
Unindexpeuttreuniqueounonunique :

Unique: unevaleurdelacldindexnestprsentequunefoisdanslatable.

Nonunique : unevaleurdelacldindexpeuttreprsenteplusieursfoisdanslatable.

Oracleprconisedenepascrerdindexuniqueexplicitementmaisdedfinirdescontraintesdintgrit(PRIMARY KEY
ou UNIQUE) pour lesquelles Oracle cre automatiquement des index uniques. Les index non uniques, par contre,
doiventtrecrsexplicitement.
Unindexpeuttrecompos(concatn).Danscecas,lacldindexcontientplusieurscolonnesdelatable ellesne
sontpastoujoursadjacentesdanslatable,niforcmentplacesdanslemmeordrequedanslatable.
Les valeurs NULL ne sont pas stockes dans les index Btree et ne sont donc pas prises en compte visvis de
lunicit : deuxlignesdelatablepeuventavoirlavaleurNULLdanslacolonneconcerne.

2.StructuredunindexBtree
Structuregnrale

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-


LesdonnessontstockesdansdesblocsOracle.
Lesblocsbranches(branchblocks)contiennentdesdonnesquipointentversdesblocsdeniveauinfrieur.Lesblocs
branches permettent dassurer un aiguillage dun bloc racine vers les blocs feuilles, en liminant des branches
chaqueniveau.
Lesblocsfeuilles(leafblocks)contiennentlesdiffrentesvaleursdelacldindexaveclesROWIDdeslignesdelatable
correspondante.Pourunindexunique,ilexisteunseulROWIDparvaleurdecl pourunindexnonunique,plusieurs
ROWIDsontpossiblespourchaquevaleurdecl.Lesblocsfeuillespointentversleslignesdelatable.
Lorsque lindex est utilis pour rechercher une valeur de cl, le bloc racine est lu, puis le bloc feuille de niveau
infrieur correspondant la branche qui contient la valeur de cl est lu son tour, et ainsi de suite jusquau bloc
feuillequicontientlavaleurdecl associcettevaleurdecl,Oraclevatrouverle(s)ROWID(s)delaouleslignes
quicontiennentlavaleurdelacletpouvoirainsilesliredirectementdanslatable.
Lesblocsfeuillessontdoublementchanspourfaciliterleparcoursdelindex.
LesvaleursdeclNULLnesontpasprsentesdanslindex.
Danslesblocsfeuillesdunindexnonunique,lesdonnessonttriessurlaclpuissurleROWID lavaleurdelacl
estrptechaquefois.
Structuredunbloc
limage de la table, un bloc dindexcomprendlesdonnesproprementditesetdesinformationsdecontrle(en
ttedebloc,enttedeligne,etc.).
Le remplissage du bloc, la cration de lindex uniquement, peut tre contrl par le paramtrePCTFREE. Le
paramtrePCTFREEestdoncimportantlorsdelacrationdunindexsurunecolonnenonvide.Danslesautrescas,
oupourlasuitedelaviedelindex,leparamtrenestpasutilis.
IlnyapasdePCTUSEDpourlesindex.

3.AvantagesetinconvnientsdesindexBtree
Avantages
Lindexamliorelaperformancedesrequtes(SELECT,UDATE etDELETE)quiutilisentlacldelindexdanslaclause
WHERE.
Larbre est maintenu quilibr par Oracle. Dans "Btree", "B" signifie balanced (balanc), cestdire quOracle
sarrangepourmaintenirsonarbrequilibraufuretmesuredesmisesjourdelindex.Pourcela,Oraclepeut
couperdesblocsencasdebesoin(notiondesplit).
Enconsquence,touteslesvaleursdelacldanslesblocsfeuillessontsitueslammeprofondeurdelarbreet
donc accessibles en parcourant le mme nombre de blocs. La recherche de nimporte quelle valeur de cl prend
toujourspeuprslemmetemps.
PourquoiunindexBtreeestilperformant?
Prenonslexempledunindexsurunedate :

- 2-

ENI Editions - All rights reserved - Algeria Educ

Lalongueurdunelignedelindexestgale8octets(longueurdutypeDATE)+6 octets(longueurduROWID)
+quelquesoctetspourlesinformationsdecontrle(arrondi6octets)=20octets.
Avec une taille de bloc (DB_BLOCK_SIZE) de 8 Ko, lespace disponible dans le bloc est gal 8 192 octets
tailledelentte(entre100et200octets,prenons192octetspournotreexemple)=8000octets,rempli
90%=7200octets.

Unblocpeutdoncstockerenviron7200/20=360cls.

Unarbreduneprofondeurde3peutdoncgrer360x360x360=466millionsdecls.

Pour retrouver une valeur parmi les 466 millions, 3 entres/sorties sont suffisantes dans lindex plus une
entre/sortiedanslatableafindelirechaqueligne.

Deplus,silescolonnesutilisesdanslesdiffrentesclausesdelarequtesonttoutesprsentesdanslindex,Oracle
napasbesoindaccderlatable.Siunindexcomposexistesurlescolonnes(NOM,PRENOM)delatableADHERENT,la
requtesuivantenaccdepaslatable :
SELECT nom, prenom FROM adherent
WHERE nom = HEURTEL;
Inconvnients
Lepremierinconvnientdunindexestquilncessiteunvolumedestockageimportant.Lesecondinconvnientdun
indexestquildgradelesperformancesdesmisesjour.Pourdesmisesjourunitaires,celanedevientsensible
quesilatablecomprendungrandnombredindex pourunemisejourmassive,cettedgradationestsensibleds
lexistence du premier index. Ces deux inconvnients sont deux bonnes raisons pour ne pas indexer toutes les
colonnesdunetable.

4.DirectivespourlacrationdesindexBtree
a.Principesgnraux
Les colonnes candidates lindexation sont les colonnes frquemment prsentes dans les clausesWHERE, comme
critredeslectionoudejointure.
Encomplment,ilfautsassurerquelesrequtescorrespondantessontslectivesetramnentmoinsde510 %
deslignesdelatable.Celaimpliquedonc,quelesvaleursdelacolonnesoientrelativementuniques(beaucoupde
valeursdistinctes),etquelesconditionsquilesutilisentsoientellesmmesslectives.Ilnefautdoncpasindexer
lescolonnesayantpeudevaleursdistinctes(lacolonnesexeparexemple).
Ilestinutiledindexerlespetitestables.
Pourtrouverlesbonnescolonnescandidateslindexation,ilfautanalyserlesrequtesSELECT,UPDATEetDELETE,
etrechercherlescolonneslesplusfrquemmentutilisesdanslesclausesWHERE(critredeslectionetjointure).
La performance dunindexdpenddesaslectivitintrinsqueetdelaslectivitdesrequtesquilutilisent.La
slectivit peut tre dfinie comme, le nombre moyen de lignes ramenes par une requte divis par le nombre
totaldelignes.
Prenons lexemple de la table ADHERENT comprenant 100 000 personnes avec une rpartition homogne
homme/femme.ConsidronslesclausesWHEREsuivantes :
ClauseWHERE

Slectivit

WHERE numero =12345

1/100000=0,001%

WHERE numero BETWEEN 1 AND 20000

20000/100000=20%

WHERE sexe = F

50000/100000=50%

CesexemplesmontrentquelacolonneNUMEROestintrinsquementslectivemaisquecertainesrequtesbases
surcettecolonnepeuventnepasltre parcontre,lacolonneSEXEnestpasintrinsquementslective.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Une colonne ayant peu de valeurs distinctes est intrinsquement non slective. Parmi les colonnes candidates
lindexation, il faut donc identifier celles qui sont intrinsquement slectives et utilises dans des requtes elles
mmes slectives une colonne sera effectivement une bonne candidate lindexation si la slectivit (de la
colonneetdesrequtesquilutilisent)estinfrieureenviron510%.Danslesgrandeslignes,siunerequte
utilisant un index ramne plus de 10 % des lignes, Oracle se rvlera plus performant en ralisant un parcours
completdelatablequenpassantparlindex.
Cettergledes510%nestpasensoiunegarantiedeperformanceeffectivedelindex denombreuxautres
facteursentrentenlignedecompte.Cestnanmoinsunboncritrededpart,quilfautvaliderenralisantdes
tests.
Parmi les colonnes candidates, il faudra dabord identifier les colonnes qui sont systmatiquement prsentes
ensembles dans la clause WHERE : ce sont de bonnes candidates la cration dun index compos qui est
gnralement plus slectif quun index simple. En effet, si les colonnes C1 et C2 dune table sont frquemment
utilisesensemblesdanslesclausesWHEREetquilexiste10valeursdistinctespourC1(slectivitde10%)et10
valeurs distinctes pour C2 (slectivit de 10 %), la slectivit thorique du couple (C1,C2) est de 1 % (dans
lhypothseoilnyapasdecorrlationentreC1etC2).
Indexerlespetitestablesnesertriencarlenombreminimumdentres/sortieslorsdunaccsparindexestde2
(1 entre/sortie au minimum pour lindex et 1 entre/sortie au minimum pour la table). Or, grce au
paramtreDB_FILE_MULTIBLOCK_READ_COUNT(DBFMRCciaprs),OraclepeutlireDBFMRCblocsenuneentre/sortielors
dun parcours complet de table. Donc, si la taille de la table est infrieure DBFMRC blocs, un index est moins
performant que le parcours complet si la taille de la table est infrieure 2 x DBFMRC blocs, un index est aussi
performant (mais pas plus) que le parcours complet. Ainsi, en gnral, indexer des tables comprenant quelques
dizainesdeblocsnapporterien.
Les valeurs NULL ne sont pas stockes dans les index Btree donc, indexer une colonne pour amliorer les
recherches IS NULL ne sert rien. Hormis les index uniques, il nest jamais certain quun index soit rellement
performant il faut donc le tester. Lors des tests sur les index, il ne faut pas oublier de vrifier si les index ne
dgradentpastroplesperformancesdesmisesjour.

b.Complmentssurlesindexcomposs
Lordredescolonnesestimportantdansunindexcompos.Unindexcomposestutilissilescolonnesdettede
lacldindexsontprsentesdanslacondition.
Siunindexcomposexistesurlescolonnes(NOM,PRENOM)delatableADHERENT,lestroisrequtessuivantesutilisent
lindex :
SELECT * FROM adherent
WHERE nom = HEURTEL AND prenom = Olivier;
SELECT * FROM adherent
WHERE prenom = Olivier AND nom = HEURTEL;
SELECT * FROM adherent
WHERE nom = HEURTEL;
Parcontre,larequtesuivantenutilisepaslindex :
SELECT * FROM adherent
WHERE prenom = Olivier;
LordredescolonnesnapasdimportancedanslaclauseWHERE.
Danscertainscas,silapremirecolonnedelindexatrspeudevaleursdistinctes(parexemple2),Oracle
estsusceptibledesubdiviserlindex en sousindex(unpourchaquevaleurdelapremirecolonne)etde
parcourirchaquesousindex.
Dans certaines situations, il peut tre intressant dajouter dans la cl dindex des colonnes prsentes dans la
clauseSELECT,pourviterdaccderlatable.
Pour la requte suivante, ajouter la colonne NUMERO_TELEPHONE dans lindex compos qui existe sur les colonnes
(NOM,PRENOM)permetdviterlaccslatable
SELECT numero_telephone FROM adherent
WHERE nom = HEURTEL AND prenom = Olivier;

Abuser de cette astuce et placer de nombreuses colonnes dans la cl dindex peut rendre lindex moins
performant. Plus la cl dindex est longue, moins il y a de cls par bloc, et plus lindex est volumineux et

- 4-

ENI Editions - All rights reserved - Algeria Educ

profond,cequiaugmentelenombredentres/sortiespourparcourirlindex.

c.Sassurerquelesrequtessontbiencrites
Parailleurs,ilfautsassurerquelcrituredesrequtesnempchepaslindexdtreutilis.
ExemplesdeclausesWHEREolindexprsentsurlacolonnenomnestpasutilis :
nom IS NULL
LesvaleursNULLnesontpasdanslindex.
nom NOT IN(DUPONT,DUPOND)nom < > HEURTEL
Lesrecherches"diffrentde"nutilisentpaslindex.
nom LIKE %TEL
LesrecherchesLIKEnutilisentpaslindexsiledbutdelachanenestpasconnu(recherchesdutype"contient",
"seterminepar").
SUBSTR(nom,1,1) =H
Et plus gnralement, lorsquune fonction est applique la colonne, ou que la colonne est utilise dans une
expression.
Parcontre,exemplesdeclausesWHEREolindexestutilis :
nom > HEURTEL
Lesrecherchesdetype"infrieur","suprieur","entre"utilisentlindex.
nom LIKE H%
Ledbutdelachaneestconnu.

Cenestpasparcequunerequtenempchepaslutilisationdunindex,quelindexestrellementutilis.
Cest loptimiseur Oracle qui dcidera dutiliser ou non un index, en fonction des caractristiques de la
requte,delatableetdesindex(cestunvastesujet).

5.Spcifierlestockagedunindex
a.Indexindpendant
Lestockagedunindexpeuttrespcifilorsdelacrationdelindex,danslordreSQLCREATE INDEX.
Syntaxesimplifie
CREATE [UNIQUE] INDEX nom_index ON nom_table(liste_colonnes)
[ TABLESPACE nom_tablespace ]
[ PCTFREE valeur ]
[ clause_stockage ]
[ ONLINE ]
[ NOCOMPRESS | COMPRESS [n] ]
[ LOGGING | NOLOGGING ] ;
- clause_stockage
STORAGE ( [ INITIAL valeur [K|M] ]
[ NEXT valeur [K|M] ]
[ MINEXTENTS valeur ]
[ MAXEXTENTS { valeur | UNLIMITED } ]
[ PCTINCREASE valeur ] )

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Exemple :
CREATE INDEX adherent$nom#prenom ON adherent(nom,prenom)
TABLESPACE indx
PCTFREE 20
STORAGE ( INITIAL 2M ) ;
LesclausesTABLESPACEetSTORAGEontdjtprsentesauchapitreGestiondestablespacesetdesfichiersde
donnes. Noubliez pas que la clause STORAGE est traite diffremment selon que le tablespace est gr par le
dictionnaireoulocalement.Dansuntablespacegrlocalement,seuleloptionINITIALestutile.
LaclausePCTFREEdonnelavaleurduPCTFREE(entre0et99,10pardfaut).
LaclauseONLINEpermetdautoriserlesmisesjoursurlatablependantlaconstructiondelindex.
La clause COMPRESS [n] permet de compresser la cl dindex, uniquement dans le cas dun index compos. Pour
compresser la cl dindex, Oracle limine les occurrences rptes des valeurs des colonnes de la cl. Loption n
permetdeprciserlenombredecolonnesdelaclcompresser.Pardfaut, nestgalaunombredecolonnes
moinsunpourunindexuniqueetaunombredecolonnespourunindexnonunique.Compresserlacldesindex
composs peut permettre de rduire sensiblement la taille de lindex. Pour obtenir un rsultat optimal, il faut
compressersurlaportiondettedelaclcomprenantleplusgrandnombrederptitions(cetteinformationpeut
treobtenueaveclordreSQLANALYZE INDEX ... VALIDATE STUCTUREprsentplusloin).
La clause NOLOGGING permet de ne pas journaliser la cration de lindex les mises jour individuelles sont, par
contre,toujoursjournalises.Lesconsidrationssontlesmmesquepourunetable(cf.Gestiondestables)mais
un index est moins critique quune table si un index nest pas rcuprable, il est toujours possible de le
reconstruire.
IlexisteaussiunordreSQLALTER INDEXmais,commepourunetable,ilnapasdeffetrtroactifsurcequiestdj
allou gnralement,encasdebesoin,lindexserapluttreconstruit.

b.Indexdunecontraintedeclprimaireouunique
Lestockagedelindexduneclprimaireouuniquepeuttrespcifilorsdeladfinitiondelacontraintegrce
loptionUSING INDEXdelaclauseCONSTRAINT.
Syntaxe
CONSTRAINT nom_contrainte { PRIMARY KEY | UNIQUE } (liste_colonnes)
USING INDEX<$ICONSTRAINT;USING INDEX>
[ spcification_stockage | nom_index | (ordre_cration_index) ]
- spcification_stockage
[ TABLESPACE nom_tablespace ]
[ PCTFREE valeur ]
[ clause_stockage ]
[ ONLINE ]
[ NOCOMPRESS | COMPRESS [n] ]
[ LOGGING | NOLOGGING ] ;

nom_index:nomdunindexquiexistedj.

ordre_cration_index:ordreSQLdecrationdindextelquevuprcdemment.

Exemple :

Dfinitiondesclausesdestockagedelindex

ALTER TABLE adherent ADD CONSTRAINT adherent$pk PRIMARY KEY(numero)


USING INDEX
TABLESPACE indx
PCTFREE 0
STORAGE (INITIAL 2M) ;

Spcificationdunindexdjexistant

ALTER TABLE adherent ADD CONSTRAINT adherent$uk01


UNIQUE (nom,prenom,telephone)
USING INDEX adherent$ix01 ;
- 6-

ENI Editions - All rights reserved - Algeria Educ

Crationcompltedelindex

ALTER TABLE adherent ADD CONSTRAINT adherent$uk01


UNIQUE (nom,prenom,telephone)
USING INDEX
(
CREATE INDEX adherent$ix01
ON adherent(nom,prenom,telephone)
TABLESPACE indx
PCTFREE 25
STORAGE (INITIAL 10M)
) ;
Pardfaut,lorsquunecontraintedeclprimaireoudecluniqueestcreouactive,Oracleregardesilexisteun
index utilisable pour vrifier la contrainte. Cet index peut tre unique ou non unique, mais doit possder une cl
galeoucommenantparlacldelacontrainte.Siuntelindexnexistepas,Oraclecreunindexuniquepour
vrifierlacontrainte,indexdontlaclestgalelacldelacontrainte.Danscecas,loption USING INDEX de la
clauseCONSTRAINTpermetdespcifierlescaractristiquesdestockagedecetindex.
DepuisOracle9i,laclauseUSING INDEXpeut :

mentionnerexplicitementlenomdunindexutiliserpourvrifierlacontrainte

inclureunordreSQLCREATE INDEXpourcrerexplicitementlindexassocilacontrainte.

Danslesdeuxcas,lesautresoptionsdelaclauseUSING INDEXsontinterdites.
Lindexmentionnoucrpeuttreuniqueounonuniquemaisildoittre"compatible"aveclacontraintedecl
primaireouunique.Silindexestunique,lacldelindexdoittregalelacldelacontrainte(mmescolonnes,
dans le mme ordre). Si lindex est non unique, la cl de lindex doit tre gale ou commencer par la cl de la
contrainte.
Exemple :
CREATE INDEX adherent$ix01 ON adherent(nom,prenom,telephone)
TABLESPACE indx ;
ALTER TABLE adherent
ADD CONSTRAINT adherent$pk PRIMARY KEY (nom,prenom)
USING INDEX adherent$ix01 ;
Fonctionnellement, crer lindex avant la contrainte et le mentionner dans lordre de cration de la contrainte
quivautstrictementcrerlindexdanslordrededfinitiondelacontrainte.
UtiliserunedesdeuxclausesUSING INDEXapparuesdansOracle9ipermet :

dtreplusexplicite

dedsignerunindexprcissiplusieursindexpeuventtreutilisspourvrifierlacontrainte

decrerunautreindexqueceluiquiseraitutilispardfaut(avecuneautrecl)

siaucunindexnexistedj,decrerunindexavecunnomprcis,suruneclprcise,gnralementplus
"longue"quelacldelacontrainte
decrerexplicitementunindexnonunique(voirlintrtciaprs).

LavueDBA_CONSTRAINTScontientdeuxcolonnes,INDEX_OWNER etINDEX_NAME,quipermettentdefairelelien
entreunecontraintedeclprimaireoudecluniqueetsonindexassoci(vueDBA_INDEXES).
Pardfaut,lorsquuneclprimaireouuniqueestsupprime :

openmirrors.com

Lindexassociestsupprimsilestunique.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Lindexassociestconservsilestnonunique.

Loriginedelindex(crparOracle,djexistant,crdanslordrededfinitiondelacontrainte)napasdimpact.
Depuis Oracle9i, il est possible dindiquer explicitement si lindex associ une contrainte supprime doit tre
conservousupprim.
Syntaxe
ALTER TABLE DROP CONSTRAINT { nom_contrainte | PRIMARY KEY }
KEEP INDEX | DROP INDEX ;
A priori, conserver un index unique lors de la suppression dune contrainte de cl primaire ou unique na pas de
sens : lunicitesttoujoursvrifieauniveaudelindex.
Lapproche par dfaut dOracle est relativement logique. Si une contrainte de cl primaire ou de cl unique est
supprime, cest notamment que lunicit nest plus souhaite supprimer lindex associ est donc logique. Par
contre, un index non unique ne vrifie pas lunicit et peut donc tre conserv, mme lorsque la contrainte est
supprime.
Lanouvelleclauseestintressantepourallerlencontredufonctionnementpardfaut : supprimerunindexqui
seraitconservouconserverunindexquiseraitsupprim.Ellepermetaussidtreplusexpliciteetdenepasse
proccuperdufonctionnementpardfaut.
Crersystmatiquementdesindexnonuniquespourgrerlescontraintesdeclprimaireetdeclunique
estintressant,etlaisseentouttatdecauselechoixdeconserverounonlindexlorsdelasuppression
oudeladsactivationdelacontrainte.

6.Recommandationspourlestockagedesindex
a.Vuedensemble
Lesrecommandationssontlesmmesquepourlestables(sectionGestiondestables) :

recommandationnumroun(fondamentale) : stockerlesindexdansunouplusieurstablespacesddis,de
prfrence grs localement (cest le cas par dfaut) avec une gestion automatique de lespace dans les
segments(cestlecaspardfaut)
recommandation numro deux (moins importante) : rgler PCTFREE avec soin (voir Estimation de PCTFREE),
aumoinspourlesindexlesplusimportants
recommandationnumrotrois(moinsimportante) : allouerunespaceinitiallindex,adaptlavolumtrie
estimeunechancedonne(pasforcmenttrslointaine,cartrssouvent,lesindexsontreconstruits
intervallesrguliers).

Dfinir un index en spcifiant un INITIAL adapt la volumtrie estime de lindex, peut amliorer la
performancedecrationdelindex,endiminuantlenombredextensionsallouespendantlopration.

b.Estimerlavolumtriedunindexunechancedonne
Lencore,leplussimpleetlepluspragmatiqueconsisteprocdercommepourunetable :

- 8-

estimerlenombredelignesattendues

crerlindexdanslesconditionsdexploitation(tailledeblocetPCTFREEnotamment)

chargerlatableavecunjeudedonnesreprsentatives

ENI Editions - All rights reserved - Algeria Educ

calculer le nombre de blocs dindex occups par ce jeu dessai (par exemple, partir des statistiques de
lindexoulaidedupackageDBMS_SPACE,voirciaprs)
endduirelenombredeblocspourlenombredelignesattendues(rgledetrois).

Supposons,parexemple,quelatableADHERENT(schmaDIANE)aittchargeavec10 000lignesetquelledoiten
contenir250 000unechancede6mois.Nouspouvonsraliserlecalculsuivantpourundecesindex :
SQL> ANALYZE INDEX adherent$ix01 VALIDATE STRUCTURE;
Index analys.
SQL> SELECT lf_blks+br_blks FROM index_stats
2 WHERE name=ADHERENT$IX01;
LF_BLKS+BR_BLKS
--------------59
SQL> SELECT 59/10000*250000 estimation FROM dual;
ESTIMATION
---------1475
Lindexpourlejeudedonnesutilise59blocs,doncparrgledetrois,nouspouvonsestimerquelindexutilisera1
475blocsdans6mois.
LemploidelordreSQLANALYZE INDEX ... VALIDATE STRUCTUREestprsentplusloin.

c.EstimationdePCTFREE
VousnavezpasbesoindevousproccuperdePCTFREEsilacolonneindexeestvidelorsdelacrationdelindex.
Pourmmoire,PCTFREEestprisencompteuniquementlacrationdelindexetnesteffectivementutilisquesila
colonneindexerestnonvide.
VouspouvezpositionnerPCTFREEunevaleurfaible(ventuellement0)danslescassuivants :

Silindexestcrsurunecolonnequiserararementmisejour(niUPDATEniINSERT).
Silindexestcrsurunecolonnequivacontinuerfairelobjetdinsertionsavecdesvaleursendehorsde
laplagedesvaleursactuelles(cesentresdindexirontdansdenouveauxblocs).

Danslecasolindexestcrsurunecolonnenonvide,lobjectifdePCTFREEestsimple : rserverdelespacedans
les blocs pour les ventuelles futures insertions de cls dans les blocs dindex initialement utiliss (les cls sont
triesdanslesblocsfeuilles).Sipouruneraisonquelconque,lesfuturesinsertionsdeclsnerisquentpasdevenir
danslesblocsdjutiliss,ilestpossibledemettreunPCTFREEfaibleounul.
VousdevezparcontrepositionnerPCTFREEunevaleurlevedanslescassuivants :

Silindexestcrsurunecolonnequiserasouventmisejour(UPDATE).
Silindexestcrsurunecolonnequivacontinuerfairelobjetdinsertionsavecdesvaleursappartenant
laplagedesvaleursactuelles(cesentresviendrontsintercalerdanslesblocsexistants).

Danscecas,PCTFREEpeuttreestimparlaformulesuivante :
PCTFREE = 100 x (1 -Ni / Nf)
Ni=nombreinitialdelignes
Nf=nombrefinaldelignes(unechancedonne).
Nfestunevaleurrelativementarbitraire,Nf - Nitantlenombredelignesinsrerdanslindexavantquetout
lespace laiss libre initialement soit occup (statistiquement), et que Oracle doit commencer rorganiser son
arbredindex.
Unevaleurarbitrairede PCTFREE peut tre utilise (10 20 %), sachant quil est facile de superviser le stockage
dunindexetdelereconstruireencasdebesoin.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

Lorsquune cl dindex est modifie, lentre correspondante est supprime et recre. Lorsque des
entressontsupprimesdansunblocdindex,lespacelibrnepeuttrerutilisquepourdesentres
dontcestlaplace(lesdonnessonttriesdanslesblocsfeuilles).Pourpouvoirrutiliserunblocetyplacerdes
valeurscompltementdiffrentes,ilfautqueleblocsoitcompltementvide.

7.Superviserlespaceoccupparunindex
a.Vuedensemble
Lencore,voustrouverezdenombreusessimilitudesaveclestables...
LesvuesDBA_SEGMENTSetDBA_EXTENTSprsentesauchapitreGestiondestablespacesetdesfichiersdedonnes
permettentdevoirlespaceglobalalloulindex,maisellesnedonnentpasdinformationssurlenombredeblocs
rellementutiliss.
Pourobtenirdesinformationsplusdtaillessurlestockagedunindex,vouspouvez :

utiliserlesinformationscalculesparlepackageDBMS_SPACE(voirlepointGestiondestables)

employerlesstatistiquesgnresparlepackageDBMS_STATS

utiliserdautresstatistiquescalculesparlordreSQLANALYZE INDEX ... VALIDATE STRUCTURE.

LesstatistiquesgnresparlepackageDBMS_STATSnesontpassuffisantespourraliseruneanalysedtailledu
stockagedelindex(maisellessontsuffisantespourloptimiseur) nousnelesvoqueronsdonc,pasici(description
delavueDBA_INDEXESaupointTrouverdesinformationssurlesindex).
Nousallonsparcontre,prsenterlutilisationdelordreSQLANALYZE INDEX ... VALIDATE STRUCTURE.

b.LordreSQLANALYZEINDEX...VALIDATESTRUCTURE
Lordre SQL ANALYZE INDEX ... VALIDATE STRUCTURE permet de vrifier lintgrit de lindex et dobtenir des
informationsdtaillessurlestockagedelindex.
Syntaxe
ANALYZE INDEX nom_index VALIDATE STRUCTURE;
Exemple :
ANALYZE INDEX adherent$ix01 VALIDATE STRUCTURE;
LordreSQLANALYZE INDEX ... VALIDATE STRUCTUREnevrifiepaslacohrencedelindexvisvisdelatable pour
vrifierunetellecohrence,ilfautajouterloptionCASCADE.LersultatpeuttreconsultdanslavueINDEX_STATS :
NAME
nomdelindex.
HEIGHT
hauteurdelarbre.
BLOCKS
nombredeblocsallousausegment.
LF_BLKS
nombredeblocsfeuillesdanslindex.

- 10 -

ENI Editions - All rights reserved - Algeria Educ

BR_BLKS
nombredeblocsbranchesdanslindex.
LF_ROWS
nombredelignes(valeurs)danslindex.
DEL_LF_ROWS
nombredelignessupprimesdanslindex.
PCT_USED
pourcentagedelespacealloulindexquiestutilis(entre0et100).
OPT_CMPR_COUNT
Nombredecolonnesdelacldindexutiliserpouravoirunecompressionoptimale.
OPT_CMPR_PCTSAVE
Pourcentagedespacequipeuttreconomisencompressantlacldindexselonlenombredecolonnesindiqu.

LavueINDEX_STATSnedonnequelersultatdudernierANALYZE INDEX ... VALIDATE STRUCTURE.


Les statistiques gnres par lordre SQL ANALYZE INDEX ... VALIDATE STRUCTURE ne sont pas utilises par
loptimiseur.
La somme LF_BLKS+BR_BLKS donne le nombre de blocs utiliss par lindex, cestdire le nombre de blocs dans
lequelilexisteaumoinsuneligne PCT_USEDdonnelepourcentagemoyendoccupationdesblocsutiliss.
Exemple :

Situationdedpart(justeaprslacrationdelindex)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used,


2
lf_rows,del_lf_rows
3 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT LF_BLKS BR_BLKS
BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS
-------- -------- -------- -------- -------- -------- ----------2
57
1
64
89
9949
0

Situationaprsuneforteactivitdemisesjour(uniquementUPDATE)surlatable

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used,


2
lf_rows,del_lf_rows
3 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT LF_BLKS BR_BLKS
BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS
-------- -------- -------- -------- -------- -------- ----------2
115
1
128
70
13177
3228
Dans cet exemple, nous voyons que des blocs supplmentaires ont t allous lindex et ont t utiliss, mais
avecunedgradationdutauxdoccupation.LacolonneDEL_LF_ROWSmontrequedesentresonttsupprimes,
alors quil ny a eu aucune suppression dans la table mais, comme nous lavions indiqu prcdemment, une
modificationdecldindexsetraduitparunesuppression(dolesDEL_LF_ROWS)puisuneinsertion(dolutilisation
ventuelledenouveauxblocs).

c.Problmespossiblessurlestockage
Lesproblmespossiblessurlestockagedunindexsontlessuivants :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 11 -

espaceinutilisalloulindex

faibletauxdoccupationmoyendesblocset/ouprofondeurimportantedelarbre.

Espaceinutilisallouunindex
Ilyadelespaceinutilisallouunindexsilenombredeblocsoccupsestfaibleparrapportaunombredeblocs
allous,etsilindexnevaplusgrossir(oupeu).
Le nombre de blocs occups est donn par la somme de la valeur des colonnes LF_BLKS et BR_BLKS de la vue
INDEX_STATSetlenombredeblocsallousparlavaleurdelacolonneBLOCKSdelavueINDEX_STATS.
Exemple :
SQL> SELECT lf_blks+br_blks "occups",blocks "allous"
2 FROM index_stats WHERE name=ADHERENT$IX01;
occups allous
-------- -------116
128
Cepremierproblmenapasdincidencesurlesperformances(lesblocsaudeldelaHWMnesontjamaislus) il
conduitjusteungaspillagedespacedisque.
Faibletauxdoccupationmoyendesblocset/ouprofondeurimportantedelindex
Le stockage interne dun index peut tre considr comme dgrad si une ou plusieurs des conditions suivantes
sontvrifies :

LerapportDEL_LF_ROWS/LF_ROWSestlev(suprieur10%ou20%).

Lepourcentagedoccupation(PCT_USED)estfaible(infrieur70%).

Laprofondeurdelarbredindex(HEIGHT)estleve(strictementsuprieure5).

Un mauvais remplissage des blocs peut tre li une valeur inadapte de PCTFREE lors de la cration de lindex
et/ou un index trs volatile (nombreuses mises jour). Ce deuxime problme a des incidences sur les
performancesetsurlutilisation de lespacedansleDatabaseBufferCache.Moinslesblocssontpleins,pluslindex
estvolumineuxetprofond,cequiaugmentelenombredentres/sortiespourleparcoursdelarbre.
Un index cr sur une table trs volumineuse peut avoir un arbre profond. Ce quil faut donc surveiller, cest
davantage la dgradation au fil du temps (surtout si la volumtrie de la table reste par ailleurs, stable) quune
situationuninstantdonn.
Exemple :

Avant

SQL SELECT height,pct_used,ROUND(del_lf_rows/lf_rows*100) PCT_DEL


2 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT PCT_USED PCT_DEL
-------- -------- -------2
89
0

Aprs

SQL> SELECT height,pct_used,ROUND(del_lf_rows/lf_rows*100) PCT_DEL


2 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT PCT_USED PCT_DEL
-------- -------- -------2
70
24
Sur cet exemple, le stockage de lindex sest dgrad au fil du temps (alors que la volumtrie de la table na
pratiquementpaschang).

- 12 -

ENI Editions - All rights reserved - Algeria Educ

8.Rorganiserlestockagedunindex
a.Vuedensemble
Lesbesoinsderorganisationdunindexsontvaris :

librerdelespacelibreaudessusdelaHWM

rorganiserunindexdontlastructuresestdgrade

rorganiser plus globalement le stockage de lindex : changement de tablespace, rduction du nombre


dextensions,changementdePCTFREE,etc.

LibrerdelespacesituaudessusdelaHWMpermetdercuprerdelespacealloulindexmaisjamaisutilis
(etestimjamaisutilisable).Amliorerletauxderemplissagedesblocspermetaussiventuellementdelibrerde
lespaceinutilis(lespacelibredesblocs)situcettefois,endessousdelaHWM.
Plusieurstechniquessontnotredispositionpourrorganiserlestockagedunindex :

OrdreSQLALTER INDEX ... DEALLOCATE UNUSED

OrdreSQLALTER INDEX ... COALESCE

OrdreSQLALTER INDEX ... SHRINK SPACE

OrdreSQLALTER INDEX ... REBUILD.

Ilestvidemmentaussipossibledesupprimerlindex (ordre SQLDROP INDEX)puisdelecrerdenouveau(ordre


SQL CREATE INDEX), mais une reconstruction (ordre SQL ALTER INDEX ... REBUILD) se rvle gnralement plus
intressante.
Letableausuivantrsumelestechniquesenvisageables()etcellesquisontlesmieuxadaptes()teloutel
besoin :
DEALLOCATE
Librerdelespaceaudessusdela
HWM

COALESCE

Amliorerletauxderemplissagedes
blocs

Rorganiserplusglobalement

SHRINK

REBUILD

Rorganiserlestockagedunindexestmoinscompliququerorganiserlestockagedunetablecarlesdonnesne
sontpasaffectesetlatableesttoujoursaccessibleetpleinementoprationnelle.
Lorsduntraitementmassifsurunetable(chargement,purge),ilpeuttreintressantdesupprimertout
oupartiedesindexdelatableavantletraitementetdelesrecrerensuite.Laperformanceglobaleest
meilleureetlindexestneuf(nondgrad)larrive.

b.LordreSQLALTERINDEX...DEALLOCATEUNUSED
LordreSQLALTER INDEX ... DEALLOCATE UNUSEDpermetdelibrerlespacedunindexsituaudessusdelaHWM.
Syntaxe
ALTER INDEX nom_index DEALLOCATE UNUSED [ KEEP valeur [K|M] ] ;
Exemple :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 13 -

ALTER INDEX adherent$pk DEALLOCATE UNUSED;


ALTER INDEX adherent$pk DEALLOCATE UNUSED KEEP 0;
ALTER INDEX adherent$pk DEALLOCATE UNUSED KEEP 1M;
Le fonctionnement est le mme que pour une table (Gestion des tables). Noubliez pas que lespace initialement
allou est par dfaut prserv il faut utiliser la clause KEEP pour librer de lespace lintrieur de lespace
initialementalloulindex.

c.LordreSQLALTERINDEX...COALESCE
LordreSQLALTER INDEX ... COALESCEpermetdefusionnerlecontenudeblocsfeuillesadjacentsquicontiennent
delespacelibre.Grossomodo,deuxblocsfeuillesadjacentsquiont50 %despacelibrepeuventtrefusionnsen
unseulbloc,cequilibreunbloc.
Syntaxe
ALTER INDEX nom_index COALESCE ;
Lordre SQL ALTER INDEX ... COALESCE neffectue, par contre, aucune opration sur les blocs branches la
profondeur de larbre ne change pas. Cette opration est relativement rapide et ne ncessite pas despace de
stockagesupplmentaire.
Exemple :

Situationdedpart

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used,


2
lf_rows,del_lf_rows
3 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT LF_BLKS BR_BLKS
BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS
-------- -------- -------- -------- -------- -------- ----------2
257
1
384
90
64000
0

Situationaprsdesmodificationsimportantesdanslatable : lindexestdgrad(laprofondeurachang)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used,


2
lf_rows,del_lf_rows
3 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT LF_BLKS BR_BLKS
BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS
-------- -------- -------- -------- -------- -------- ----------3
580
3
640
78
83580
33785

OprationdeCOALESCE

SQL> ALTER INDEX diane.adherent$ix01 COALESCE;

Situationlarrive(aprsANALYZE INDEX ... VALIDATE STRUCTURE)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used,


2
lf_rows,del_lf_rows
3 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT LF_BLKS BR_BLKS
BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS
-------- -------- -------- -------- -------- -------- ----------3
370
3
640
88
49838
43
Lopration de COALESCE a permis de rduire le nombre de blocs utiliss, et de retrouver un pourcentage
doccupation satisfaisant et un faible taux de lignes supprimes (il en reste quelquesunes). Par contre, la
profondeurdelarbrenapaschang.
Dans de nombreuses situations, cette simple opration de COALESCE est suffisante pour retrouver un index
performant.

- 14 -

ENI Editions - All rights reserved - Algeria Educ

d.LordreSQLALTERINDEX...SHRINKSPACE
LordreSQLALTER INDEX ... SHRINK SPACEestanaloguelordreSQLALTER TABLE ... SHRINK SPACE : ilpermetde
compacterleslignesdunindex,maisuniquementpourunindexstockdansuntablespacegrlocalementavec
unegestionautomatiquedelespacedanslessegments.Pardfaut,Oraclecompacteaussilesegment,ajustela
HWMetlibrelespaceainsircupr.
Syntaxe
ALTER INDEX nom_index SHRINK SPACE [COMPACT] ;
Avec loption COMPACT, Oracle se contente de compacter les lignes, mais sans ajuster la HWM ni librer despace.
LexcutionultrieuredunautreordreSQLALTER TABLE ... SHRINK SPACEpermettradeterminerlopration.
LordreSQLALTER INDEX ... SHRINK SPACE COMPACTestquivalentlordreSQLALTER INDEX ... COALESCE.
Exemple

Situationaprsdesmodificationsimportantesdanslatable : lindexestdgrad.

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used,


2
lf_rows,del_lf_rows
3 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT LF_BLKS BR_BLKS
BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS
-------- -------- -------- -------- -------- -------- ----------3
580
3
640
78
83580
33785

OprationdeSHRINK SPACE

SQL> ALTER INDEX diane.adherent$ix01 SHRINK SPACE;

Situationlarrive(aprsANALYZE INDEX ... VALIDATE STRUCTURE)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used,


2
lf_rows,del_lf_rows
3 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT LF_BLKS BR_BLKS
BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS
-------- -------- -------- -------- -------- -------- ----------3
374
3
400
87
49800
0
quelquesblocsprs,loprationdeSHRINK SPACEdonnelemmersultatqueloprationdeCOALESCE,saufsurles
blocsutiliss(400contre640) lespaceatlibr.

LoprationdeCOALESCEestlgrementplusrapidequeloprationdeSHRINK SPACE.

e.LordreSQLALTERINDEX...REBUILD
LordreSQLALTER INDEX ... REBUILDpermetdereconstruireentotalitunindex(blocsbranchesetblocsfeuilles)
etdonc,derorganisersonstockage.
Syntaxe
ALTER INDEX nom_index REBUILD
[ TABLESPACE nom_tablespace ]
[ PCTFREE valeur ]
[ clause_stockage ]
[ ONLINE ]
[ NOCOMPRESS | COMPRESS [n] ]
[ LOGGING | NOLOGGING ] ;
- clause_stockage
STORAGE ( [ INITIAL valeur [K|M] ]
[ NEXT valeur [K|M] ]

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 15 -

[ MINEXTENTS valeur ]
[ MAXEXTENTS { valeur | UNLIMITED } ]
[ PCTINCREASE valeur ] )
Exemple :
ALTER INDEX adherent$pk REBUILD
PCTFREE 40
STORAGE ( INITIAL 10M ) ;
LesoptionssontlesmmesquecellesdelordreSQLCREATE INDEX.
Sans option, lordreSQL ALTER INDEX ... REBUILD reconstruit lindex avec les mmes clauses de stockage. Cette
syntaxe peut tre utilise pour reconstruire un index dont les clauses de stockage sont bonnes mais qui sest
dgradaufildutemps,dufaitduneforteactivitdemisejour.
LordreSQLALTER INDEX ... REBUILDestplusintressantquelarecration(DROP+CREATE)pourdeuxraisons :

Lindexestreconstruitpartirdelindexexistant : aucuntrinestncessaire.

Lancienindexesttoujoursdisponible : lesrequtespeuventlutiliser.

Lesperformancessontdoncglobalementamliorespourtoutlemonde.
Ces deux avantages disparaissent si lindex dorigine est UNUSABLE(suite lexcution dun ordre SQL ALTER
TABLE ... MOVEparexemple).
Linconvnient majeur par rapport une recration est quil faut de lespace disponible pour faire cohabiter
temporairementlancienindexetlenouveau.
Exemple1

Situationaprsdesmodificationsimportantesdanslatable : lindexestdgrad

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used,


2
lf_rows,del_lf_rows
3 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT LF_BLKS BR_BLKS
BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS
-------- -------- -------- -------- -------- -------- ----------3
580
3
640
78
83580
33785

OprationdeREBUILD

SQL> ALTER INDEX diane.adherent$ix01 REBUILD;


Index modifi.

Situationlarrive(aprsANALYZE INDEX ... VALIDATE STRUCTURE)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used,


2
lf_rows,del_lf_rows
3 FROM index_stats WHERE name=ADHERENT$IX01;
HEIGHT LF_BLKS BR_BLKS
BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS
-------- -------- -------- -------- -------- -------- ----------2
364
1
384
89
49805
0
Lindexatcompltementreconstruit : ilaretrouvuneprofondeurde2etutiliseunpeumoinsdeblocs.
Exemple2

Situationdedpart : indexnoncompress

SQL> SELECT lf_blks,br_blks,blocks,opt_cmpr_count,opt_cmpr_pctsave


2 FROM index_stats WHERE name=ADHERENT$IX01;
LF_BLKS BR_BLKS
BLOCKS OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
-------- -------- -------- -------------- ---------------- 16 -

ENI Editions - All rights reserved - Algeria Educ

58

72

28

Compressionsurlesdeuxpremirescolonnes

SQL> ALTER INDEX diane.adherent$ix01 REBUILD COMPRESS 2;

Situationlarrive(aprsANALYZE INDEX ... VALIDATE STRUCTURE)

SQL> SELECT lf_blks,br_blks,blocks,opt_cmpr_count,opt_cmpr_pctsave


2 FROM index_stats WHERE name=ADHERENT$IX01;
LF_BLKS BR_BLKS
BLOCKS OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
-------- -------- -------- -------------- ---------------41
1
48
2
0
Lindexatreconstruitavecunecompressionsurlesdeuxpremirescolonnes.Legainannonctaitde28% il
estde28,8%.

f.Conclusion
Si le fait que leREBUILD ncessite temporairement de lespacenevousposepasdeproblme,utilisezenpriorit
cettetechniquepourrorganiserlestockagedunindex : vousobtiendrezlemeilleurrsultat.
Parcontre,sivousavezdesproblmesdeplace,vouspouvezemployerleCOALESCEpourunrsultatgnralement
trssatisfaisant,maisvousnelibrezpasdespacepourdautressegments.Danscecas,leSHRINK SPACEpeuttre
envisag ilprsentelavantagedelibrerlespacercupr.

9.Surveillerlutilisationdunindex
DepuisOracle9i,ilestpossibledesurveillerlesindexafindedterminersilssontutilissounon.Unindexnonutilis
peuttresupprimpourlibrerdelespaceetamliorerlesperformancesdesmisesjour.
LordreSQLALTER INDEXpermetdactiveroudedsactiverlasurveillancedunindex :
ALTER INDEX nom_index MONITORING USAGE | NOMONITORING USAGE ;
Exemple :
ALTER INDEX adherent$ix01 MONITORING USAGE ;
LaclauseMONITORING USAGEpeutaussitreutilisedanslordreSQLCREATE INDEXpouractiverlasurveillancedsla
crationdelindex(NOMONITORINGpardfaut).
La vue V$OBJECT_USAGE sera ensuite interroge pour dterminer si un index a t utilis pendant quil tait sous
surveillance :
INDEX_NAME
Nomdelindex.
TABLE_NAME
Nomdelatablesurlaquellelindexestcr.
MONITORING
Indiquesilindexestactuellementsoussurveillance(YESouNO).
USED
Indiquesilindexatutilisaumoinsunefoispendantsasurveillance(YESouNO).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 17 -

START_MONITORING
Date/heuredudbutdelasurveillancedelindex.
END_MONITORING
Date/heuredelafindelasurveillancedelindex(videsilasurveillanceestencours).

LavueV$OBJECT_USAGEdoittreinterrogesouslecomptedupropritairedelindex.
Exemple :
SQL> SELECT * FROM v$object_usage
2 WHERE index_name = ADHERENT$IX01 ;
INDEX_NAME
TABLE_NAME
MONITORING USED
--------------- --------------- ---------- ---START_MONITORING
END_MONITORING
------------------- ------------------ADHERENT$IX01
ADHERENT
YES
YES
01/04/2005 10:37:40
Danscetexemple,lindexADHERENT$IX01crsurlatableADHERENTatutilisaumoinsunefoisdepuisquelindex
estsoussurveillance lindexesttoujourssoussurveillance(lacolonneEND_MONITORINGestvide).

10.Trouverdesinformationssurlesindex
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesindex :

DBA_INDEXES : informationssurlesindex

DBA_IND_COLUMNS : informationssurlescolonnesdesindex

INDEX_STATS : rsultatdudernierANALYZE INDEX ... VALIDATE STRUCTURE

DBA_SEGMENTS : informationssurlessegments(dontceuxdetypeindex)

DBA_EXTENTS:informationssurlesextensionsallouesauxsegments(dontceuxdetypeindex)

LesvuesDBA_SEGMENTSetDBA_EXTENTSonttprsenteslasectionTrouverdesinformationssurlestablespaces
etlesfichiersdedonnesduchapitreGestiondestablespacesetdesfichiersdedonnes.
LavueINDEX_STATSatprsentelasectionGestiondesindexBtree.LordreSQLANALYZE INDEX ... VALIDATE
STRUCTURE.
Lescolonnesintressantesdesdiffrentesautresvuessontprsentesciaprs.
DBA_INDEXES
INDEX_NAME
Nomdelindex.
OWNER
Nomdupropritairedelindex.
TABLE_NAME
Nomdelatablesurlaquellelindexestcr.

- 18 -

ENI Editions - All rights reserved - Algeria Educ

TABLE_OWNER
Nomdupropritairedelatable.
UNIQUENESS
Naturedelindex(UNIQUEouNONUNIQUE).
TABLESPACE_NAME
Nomdutablespacedanslequellindexeststock.
PCT_FREE
ValeurduPCTFREE.
COMPRESSION
Indiquesilacompressiondelindexestactive(ENABLEDouDISABLED).
PREFIX_LENGTH
Nombredecolonnesdansleprfixedelacompression.
LOGGING
IndiquesilemodeLOGGINGestactifounonpourlindex(YESouNO).
STATUS
Statutdelindex(VALIDouUNUSABLE).
BLEVEL *
Profondeurdelarbreauniveaudesbranches(netientpascomptedesfeuilles).0sileblocracineestgalaubloc
feuille.
LEAF_BLOCKS *
Nombredeblocsfeuillesdanslindex.
NUM_ROWS *
Nombredelignesdanslindex.
CLUSTERING_FACTOR *
Facteurderegroupementdesdonnesdanslatable.
AVG_LEAF_BLOCKS_PER_KEY *
Nombremoyendeblocsfeuillesparvaleurdelacl.
AVG_DATA_BLOCKS_PER_KEY *
Nombremoyendeblocsdedonnes(table)parvaleurdelacl.
DISTINCT_KEYS *
Nombredevaleursdistinctesdanslindex.
SAMPLE_SIZE *

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 19 -

Tailledelchantillonutilislorsducalculdesstatistiques.
LAST_ANALYZED *
Dateetheuredeladernireanalyseralisesurlindex.
*Statistiquessurlindex,calculespardfautlorsquelesstatistiquessontgnressurlatable.Cesderniressont
utilisesparloptimiseur.
DBA_IND_COLUMNS
INDEX_NAME
Nomdelindex.
OWNER
Nomdupropritairedelindex.
TABLE_NAME
Nomdelatablesurlaquellelindexestcr.
TABLE_OWNER
Nomdupropritairedelatable.
COLUMN_NAME
Nomdelacolonneutilisedanslacldelindex.
COLUMN_POSITION
Positiondelacolonnedanslacldelindex.

- 20 -

ENI Editions - All rights reserved - Algeria Educ

LesstatistiquesetloptimiseurOracle
LoptimiseurOracleestchargdedterminerleplandexcutiondesrequtes,cestdirelamaniredontOracleva
excuterlarequte.
Depuis maintenant plusieurs versions, Oracle recommande de faire fonctionner loptimiseur dans le mode CBO (Cost
BasedOptimizer Optimiseur bas sur les cots). Depuis la version 10, seul le mode CBO est support le mode RBO
(RuleBasedOptimizer Optimiseurbassurlesrgles)nestplussupport.
Pourfonctionner,loptimiseurdanslemodeCBOabesoindestatistiquessurlestables,lescolonnesetlesindex.Ces
statistiquessontcalculesaveclepackageDBMS_STATS.
Danslesversionsprcdentes,iltaitdelaresponsabilitduDBAdeprogrammerunetchepriodiquedecollectedes
statistiques,afinqueloptimiseurnetravaillepasavecdesdonnesobsoltes.
Depuis la version 10, les statistiques sont automatiquement collectes par Oracle. En version 11, cette collecte
seffectueparlintermdiairedunetchedemaintenanceautomatise(cf.OracleEnterpriseManagerDatabaseControl
duchapitreLesOutilsdadministration).
Pardfaut,cettetchedemaintenancecollectelesstatistiquessurlesobjetsdelabasededonnesquinontpasde
statistiques ou qui ont des statistiques juges obsoltes (si plus de 10% des lignes de lobjet sousjacent ont t
modifies) la procdure traite en priorit les objets qui en ont le plus besoin. Les paramtres de cette tche
automatique peuvent tre configures dans le Database Control (cf. Oracle Enterprise Manager Database Control du
chapitreLesOutilsdadministration).
VouspouvezcollecterlesstatistiquesenexcutantmanuellementcertainesprocduresdupackageDBMS_STATS :

GATHER_TABLE_STATS(owname,tabname) : statistiquessurunetable(etpardfautsurlescolonnesetindexdela
table)

GATHER_INDEX_STATS(owname,indname) : statistiquessurunindex

GATHER_SCHEMA_STATS(owname) : statistiquessurtouteslestablesetindexdunschma.

Lesparamtressontlessuivants :
ownname
Nomduschma(NULLpourleschmacourant).
tabname
Nomdelatable.
indname
Nomdelindex.
Ces procdures ont dautres paramtres dont les valeurs par dfaut sont a priori satisfaisantes (au moins dans un
premiertemps).
LesstatistiquespeuventtresconsultesdanslesvuesDBA_TABLES, DBA_TAB_ COLUMNSetDBA_INDEXES.
Exemple :
SQL> EXEC dbms_stats.gather_schema_stats(DIANE)
Procdure PL/SQL termine avec succs.
SQL> SELECT num_rows,blocks,sample_size,last_analyzed
2 FROM dba_tables WHERE table_name=ADHERENT AND owner=DIANE;
NUM_ROWS
BLOCKS SAMPLE_SIZE LAST_ANA
---------- ---------- ----------- -------9964
137
9964 20/07/08
Le Database Control permet de grer les statistiques de loptimiseur. Pour accder la page de gestion des
statistiques de loptimiseur,cliquezsurlelien Serveursurlapagedaccueil puis sur le lienGrer les statistiques de
loptimiseur(cadreOptimiseurdinterrogation).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

UtiliserleDatabaseControl
1.Lestables
DansleDatabaseControl,cliquezsurlelienSchmasurlapagedaccueilpuissurlelienTables (cadreObjetsde
basededonnes)pouraccderlapagedegestiondestables.

LasectionRechercherpermetderechercherdesobjetsselonleurtype,leurschmaouleurnom.
partirdecettepage,vouspouvezeffectuerdiversesactionssurlestables :

crerunenouvelletable(boutonCreroumenuCrercomme)

supprimerunetable(boutonSupprimeravecdesoptions)

modifierunetable(boutonModifier)

crerunindexsurunetable(menuCrerunindex)

extraireladfinitiondunetable(menuGnrerducodeDDL)

collecterlesstatistiquessurunetable(menuGrerlesstatistiquesdeloptimiseur)

ENI Editions - All rights reserved - Algeria Educ

- 1-

rorganiserunetable(menuRorganiser)

excuterleconseillersurlessegments(menuExcuterlafonctiondeconseilsurlessegments)

compacter(SHRINK)latable(menuRduirelesegment).

Encliquantsurleliendunomdetable,ouencliquantsurlesboutonsCrer,ModifierouVisualiser,vousarrivezsur
lapagededfinitiondunetable :

Cettepageproposeplusieursonglets(sousformedeliens)permettantdegrerlesdiffrentescaractristiquesdela
table.
LongletSegmentspermetdevoirlespaceutilisparlatableetcesindex :

Le graphique donne la tendance dutilisation de lespace pour le segment slectionn dans la liste et la priode
indiques.Ilpeuttreutilispourestimerlavolumtriedunetableoudunindexunechancedonne.

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

2.Lesindex
DansleDatabaseControl,cliquezsurlelienSchmasurlapagedaccueilpuissurlelienIndex(cadreObjetdebase
dedonnes)pouraccderlapagedegestiondesindex.

LasectionRechercherpermetderechercherdesobjetsselonleurtype,leurschmaouleurnom.
partirdecettepage,vouspouvezeffectuerdiversesactionssurlesindex :

crerunnouvelindex(boutonCreroumenuCrercomme)

supprimerunindex(boutonSupprimer)

modifierunindex(boutonModifier)

extraireladfinitiondunindex(menuGnrerducodeDDL)

collecterlesstatistiquessurlindex(menuGrerlesstatistiquesdeloptimiseur)

rorganiserunindex(menuRorganiser)

excuterleconseillersurlessegments(menuExcuterlafonctiondeconseilsurlessegments)

compacter(SHRINK)unindex(menuRduirelesegment).

Encliquantsurleliendunomdindex,ouencliquantsurlesboutonsCrer,ModifierouVisualiser,vousarrivezsur
lapagededfinitiondunindex :

ENI Editions - All rights reserved - Algeria Educ

- 3-


Cettepageproposeplusieursonglets(sousformedeliens)permettantdegrerlesdiffrentescaractristiquesde
lindex.LongletSegmentspermetdevoirlespaceutilisparlindex(commepourunetable).

3.Rorganiserunetableouunindex
Le menu Rorganiser disponible sur les tables, les index et les tablespace permet dexcuter un assistant de
rorganisationdustockagedesobjets.CetassistantpeutaussitreappelencliquantsurlelienRorganiserles
objetsdanslecadreObjetsdebasededonnesdelongletSchma.
Lesprincipalestapesdelassistantsontlessuivantes :
Dfinirlalistedesobjetsrorganiser
Surcettepage,vouspouvezdfinirlalistedesobjetsrorganiserencliquantsurlesboutonsAjouteretEnlever.
Les boutons Dfinir les attributset Dfinir les attributs par type permettent de spcifier les caractristiques de
stockage : nouveautablespace,tailleinitiale,PCTFREE,etc.
Dfinirlescaractristiquesdelarorganisation
Cettepagepermetnotammentdindiquersilarorganisationdoitseffectuerenligneouhorsligne.Larorganisation
en ligne privilgie la disponibilit de lobjet au dtriment de la vitesse cest linverse pour la rorganisation hors
ligne.
Rapportdimpact
Cettepagedonnedesinformationssurlesproblmespotentielsquipeuventsurveniraucoursdelarorganisation
(manque despace par exemple) si cest le cas, il faut raliser les modifications ncessaires avant de lancer
lopration.
Programmation
Cette page permet de nommer le travail, de fournir les informations didentification et de connexion, et de
programmerlexcutiondutravail(maintenantouultrieurement).
Rcapitulatif

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Cettepagedonneunrcapitulatifdutravailquivatreeffectu.EncliquantsurleboutonradioScriptcomplet,vous
pouvez consulter (et rcuprer) le script complet de la rorganisation. Cliquez sur le bouton Soumettre un travail
pourlancerlopration.
Cetassistantutiliseunedestechniquessuivantes :

rorganisationdunindex : ordreSQLALTER INDEX ... REBUILD

rorganisationdunetablehorsligne : ordreSQLALTER TABLE ... MOVE

rorganisationdunetableenligne : packageDBMS_REDEFINITION.

LersultatdutravailpeuttreconsultencliquantsurlelienTravauxdelapagedaccueil(cadreLiensassocisen
bas).

4.Leconseillersurlessegments
Le Database Control dispose dun conseiller sur les segments (Segment Advisor). Ce conseiller donne des
recommandationssurlopportunitounondecompacter(SHRINK)unsegment.
CetassistantpeuttreappelenutilisantlemenuExcuterlafonctiondeconseilsurlessegmentsdisponiblesur
les tables, les index et les tablespace ou en cliquant sur le lien Fonction de conseil sur les segmentssurlapage
Centredeconseil(accessibleparlelienCentredeconseilpartirdelapagedaccueil).
Par dfaut, cet assistant est aussi programm pour sexcuter en tche de maintenance automatise (cf. Oracle
Enterprise Manager Database Control du chapitre Les Outils dadministration). Vous serez donc rarement amen
lancerleconseillermanuellement.
SurlapagedaccueilduDatabaseControl,danslecadreRcapitulatifdelespace,pourpouvezvoirrapidementsily
adesrecommandationssurlessegments :

ENI Editions - All rights reserved - Algeria Educ

- 5-

Encliquantsurlelienassoci,vouspouvezafficherlalistedesrecommandations :

SivouscliquezsurleboutonDtails des recommandations,vouspouvezconsulterledtaildelarecommandation


slectionne :

Pour implmenter les recommandations, il vous suffit de slectionner une ou plusieurs tches dans la liste et de
cliquersurleboutonImplmenter,oudecliquerdirectementsurleboutonRduiredunetche.LeDatabaseControl
affichealorslapagesuivante :

Cettepagevouspermetdechoisiruneoptionderduction(SHRINK SPACE ouSHRINK SPACE COMPACT)etdesoumettre


letravail(boutonImplmenter).LersultatdutravailpeuttreconsultencliquantsurlelienTravauxdelapage
Serveur(cadreOracleScheduler).
Dune manire plus gnrale, les rsultats des diffrents conseillers sont visibles lorsque vous affichez la page
Centredeconseil :
- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Encliquantsurleliencorrespondantunetche,vouspouvezvisualiserlesrecommandationsduconseiller.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Labasededonnes
1.Fichierdecontrle
Lefichierdecontrlecontientdesinformationsdecontrlesurlabasededonnes :

lenomdelabasededonnes

ladate/heuredecrationdelabasededonnes

lemplacementdesautresfichiersdelabasededonnes(fichiersdedonnesetfichiersdejournalisation)

lenumrodesquenceactueldesfichiersdejournalisation

desinformationssurlespointsdereprise(checkpoint), etc.

LefichierdecontrleestautomatiquementmisjourparOraclelorsdechaquemodificationdelastructuredelabase
dedonnes(ajoutoudplacementdunfichierparexemple).LatailledufichierdecontrleestdtermineparOracle.
Lorsquuneinstanceestlancepourouvrirunebasededonnes,lefichierdecontrleestlepremierfichierouvert.Il
permetensuitelinstancedelocaliseretdouvrirlesautresfichiers delabasededonnes.Silefichierdecontrlene
peutpastretrouv(ouestendommag),labasededonnesnepeutpastreouverte,mmesilesautresfichiers
de la base de donnes sont prsents (linstance reste dans le statutNOMOUNT voir le chapitre Dmarrage et arrt).
Diffrents scnarios de restauration sont alors disponibles en fonction de la situation (prsence ou non dune
sauvegarde du fichier de contrle notamment) pour redmarrer la base de donnes, mais ce sont des scnarios
relativementcomplexes.
Pourdesraisonsdescurit,ilestdoncconseilldemultiplexerlefichierdecontrle,cestdiredenavoirplusieurs
copiesgresenmiroir(multiplexes)parOracle.Techniquement,ilestpossibledecrerunebasededonnesavec
un seul fichier de contrle mais il est vivement conseill dutiliser plusieurs copies, mme si le serveur ne comporte
quundisque(celametlabridunesuppressionaccidentelle).
Plusieurs fichiers de contrle peuvent tre spcifis lors de la cration de la base (chapitre Cration dune nouvelle
basededonnes)ouultrieurement(chapitreGestiondesfichiersdecontrleetdejournalisation).

2.Fichierdejournalisation
Lesfichiersdejournalisation(redolog)enregistrenttouteslesmodificationsapporteslabasededonnes.Ilssont
organissengroupescritsdemanirecirculaire lesinformationssauvegardessontdoncpriodiquementcrases.
Les fichiers de journalisation sont utiliss pour la rcupration de linstance aprs un arrt anormal et pour la
rcupration de mdia si un fichier de donnes est perdu ou endommag dans ce cas, ils sont appliqus une
sauvegardedefichierdedonnes,pourrejouertouteslesmodificationssurvenuesentrelasauvegardeetlincident
ayantendommaglefichier.
Les fichiers de journalisation sont organiss en groupes (au minimum 2) composs dun ou de plusieurs membres
(minimumun) ilssontcrslorsdelacrationdelabase(cf. Chapitre Crationdunenouvellebasededonnes).
lintrieur dun groupe, les membres sont crits simultanment en miroir par linstance Oracle (processus LGWR) et
contiennent la mme information. Tous les membres dun groupe ont la mme taille, dfinie lors de la cration du
groupe un fichier de journalisation contient donc une quantit maximale dinformations. De mme, le nombre de
groupesestdtermin ilnaugmentepasdynamiquement.
Lorsquungroupeestplein(cestdirelorsquelesmembressontpleins),linstanceOraclepasseaugroupesuivantet
ainsidesuitejusquaudernier lorsquelederniergroupeestplein,linstanceOraclerepasseaupremier.Lepassage
dungroupeunautreestappelbasculement(switch).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-


Lorsque linstance Oracle revient dans le premier groupe, elle crase les informations qui y sont stockes ces
informations ne sont donc plus disponibles en cas de besoin, par exemple pour une rcupration de mdia. Pour
garantir cette possibilit deffectuer des rcuprations compltes, il faut activer le mcanisme darchivage (chapitre
Sauvegardeetrcupration)quipermetdarchiverlesfichiersdejournalisation(enloccurrenceunmembredugroupe)
lorsquilssontpleins,avantquelinstancenelesrutilise.
Siungroupecomporteplusieursmembresetquundesmembresestindisponible,labasededonnespeutcontinuer
fonctionner.
Les fichiers de journalisation sont trs importants pour la scurit de la base de donnes. Il est donc conseill
dutiliserauminimumdeuxoutroismembrespargroupe(multiplexage),sipossiblesurdesdisquesdiffrents.
Les fichiers de journalisation seront abords dans les chapitres Cration dune nouvelle base de donnes (cration
initiale)etGestiondesfichiersdecontrleetdejournalisation(manipulationultrieure).

3.Fichiersdedonnes
a.Dfinitions
Les fichiers de donnes contiennent les donnes proprement dites de la base de donnes (tables et index
notamment).Ilssontlogiquementregroupsentablespaces :

Un tablespace est une unit logique de stockage compose dun ou plusieurs fichiers physiques. La quasitotalit
desoprationsdadministrationrelativesaustockageseffectueentravaillantsurletablespaceetnonsurlefichier
dedonnes.
En version 10, Oracle a introduit la notion de tablespace bigfile. Un tablespace bigfile est un tablespace qui ne
contientquunseulfichierdedonnes,maisquipeuttrebeaucoupplusgrosquunfichierdedonnestraditionnel.
Lestablespacesbigfilepermettentdegrer desvolumesdedonnesbeaucoupplusimportants,toutensimplifiantla
gestion du stockage (moins de fichiers, transparence du fichier de donnes). Par opposition, le tablespace
traditionnelestmaintenant,parfoisappeltablespacesmallfile.
Une base de donnes comporte au minimum deux fichiers de donnes appartenant deux tablespaces rservs
pourOracle(letablespaceSYSTEMetletablespaceSYSAUX,apparuenversion10).LestablespacesSYSTEMetSYSAUX
nedoiventnormalementconteniraucunedonneapplicative.
Dans la pratique, une base de donnes comportera donc dautres fichiers de donnes appartenant dautres
tablespaces.
LagestiondestablespacesetdesfichiersdedonnesestprsentedanslechapitreGestiondestablespaceset
desfichiersdedonnes.

b.Organisationdustockage

- 2-

ENI Editions - All rights reserved - Algeria Educ


Lesfichiersdedonnessontdcoupsenblocsdunetailledonne(4Ko,8Ko...).
Lespace occup par un objet dans un tablespace est dsign par le terme gnrique desegment. Il y a quatre
typesprincipauxdesegments :

lessegmentsdetable :espaceoccupparlestables

lessegmentsdindex :espaceoccupparlesindex

lessegmentsdannulation :espacetemporaireutilispourstockerlesinformationspermettantdannulerune
transaction
lessegmentstemporaires :espacetemporaireutilisnotammentlorsduntri.

Unsegmentappartientuntablespaceetestconstitudextensions(extents).Uneextensionestunensemblede
blocscontigusdansunfichierdedonnes.

DansOracleEnterpriseManager,lesextensionssontappeles"ensemblesdeblocscontigus".
Lanotionde"blocOracle"estfondamentalenousallonslaretrouverpartout.UnblocOracleestlapluspetiteunit
dentre/sortieutiliseparOracle.TouslesfichiersdedonnessontorganissenblocsOracleetontdoncunetaille
multiple de la taille du bloc. Le bloc Oracle est aussi lunit dorganisation du cache de donnes (Database Buffer
Cache) dans la SGA. Lorsquune instance Oracle lit un fichier de donnes, elle lit les blocs Oracle du fichier et les
chargedansdesblocsOracleducachededonnes.
Le segment dannulation est une structure utilise par Oracle pour stocker temporairement la version prcdente
desdonnesencoursdemodificationdansunetransaction.Silatransactionestvalide(COMMIT),lespaceoccup
seralibrsilatransactionestannule(ROLLBACK),laversionprcdentedesdonnesseraremiselaplacedela
nouvelle.
LessegmentstemporairesetlessegmentsdannulationseronttudisplusendtaildansleschapitresGestiondes
tablespacesetdesfichiersdedonnesetGestiondesinformationsdannulation.
Endehorsdestablespacesdestinsauxdonnesproprementditesdenotreapplication(tables,index),nousserons
donc amens crer deux autres tablespaces "techniques", utiliss en interne par Oracle : le tablespace
dannulation(pourlessegmentsdannulation)etletablespacetemporaire(pourlessegmentstemporaires).
Lorsquunsegment(table,index,etc.)estcr,ilestplac(explicitementparlecrateurouimplicitementparOracle)
dansuntablespacecestOracle,ensuite,quisechargedallouerdelespacecesegmentdanslundesfichiersde
donnesdutablespace.
Lorsdelacrationdunsegment,uneouplusieursextensionsluisontalloues.Lorsquecespremiresextensions
sontpleines(suitelinsertiondedonnesparexemple),unenouvelleextensionestallouecetteextensionest
situe dans le mme tablespace, mais pas forcment ct de la premire (dautressegmentsontpeuttre t
crs entretemps), ni mme dans le mme fichier de donnes (si le tablespace a plusieurs fichiers de donnes).
Lorsquecettenouvelleextensionestpleine,leprocessussereproduit.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

DanslordreSQLdecrationdusegment,ilexistedesclausesquipermettentdindiquerdansqueltablespacecrer
lesegmentetdedfinirlatailleinitialedusegment.
CesdiffrentsmcanismesserontrevusdanslechapitreGestiondestablespacesetdesfichiersdedonnes.
Depuislaversion9dOracle,ilestpossibledutiliserplusieurstaillesdeblocdanslabasededonnes :

Unetailledebloc"standard"estdfinieparleparamtredinitialisationDB_BLOCK_SIZE.
Jusqu5autrestaillesdeblocpeuventtreutilises :lesvaleurspermisessont2Ko,4 Ko,8Ko,16Koet
32Ko(certainesplatesformessontplusrestrictives).

Cette possibilit dutiliser plusieurs tailles de bloc est surtout intressante pour la fonctionnalit de transport de
tablespace. Cette fonctionnalit, apparue dans Oracle8i, permet de transporter un tablespace dune base de
donnes source vers une base de donnes cible et de le rattacher la base de donnes cible cette opration
seffectuegrcelutilitaireDataPump,avecloptionTRANSPORT_TABLESPACES.Undesprrequispourlutilisationde
cettefonctionnalitdansOracle8iestquelesdeuxbasesdoiventutiliserlammetailledebloc.Cettelimitationest
leve depuis Oracle9i puisque diffrents tablespaces dune mme base de donnes peuvent utiliser des tailles de
blocdiffrentes:untablespaceayantunetailledeblocde4Kopeuttretransportdansunebasededonnes
utilisantdesblocsde8ko.

4.Systmedestockage
Les fichiers de donnes dune base de donnes Oracle peuvent tre stocks dans un systme de fichiers (cas
classique),dansdesrawdevice(directementdansdespartitions,sanssystmedefichier)oulaidedASM(Automatic
StorageManagement).
ASM,apparuenversion10,estenquelquesorteungestionnairedevolumesspcialementconupourOracle,quiva
chercher exploiter au mieux les disques qui lui sont attribus (rpartition des entres/sorties notamment). Pour
fonctionner,ASMutiliseuneinstancespciale(instanceASM).
Lors de lutilisationdun systme de fichiers, il est conseill dutiliser plusieurs disques. Cela permet damliorer les
performancesenrpartissantlesentres/sorties,etdamliorerlascuritenmultiplexantlesfichiersdecontrleet
lesfichiersdejournalisation.Parailleurs,beaucoupdenouvellesfonctionnalitsapparuesenversion10,relativesla
scurit des donnes, aux sauvegardes et aux restaurations, sont bases sur la mise en place dune zone de
rcupration rapide (flash recovery area). Cette zone de rcupration rapide peut tre stocke dans un systme de
fichiersoulaidedASM.Danslecasdelutilisationdunsystmedefichiers,ilestconseilldutiliserundisquespar
desdisquescontenantlesdonnes,carcestladestinationpardfautdessauvegardes.

5.Notiondeschma
Letermeschmadsignelensembledesobjetsquiappartiennentunutilisateur.
Lesprincipauxtypesdobjetssontlessuivants :

Table

Vue

Synonyme

Index

Squence

ProgrammePL/SQL(procdure,fonction,package,trigger)

ChaqueutilisateurdunebasededonnesOracleaunschmapotentiel,maisseulslesutilisateurshabilitspourront
effectivementcrerdesobjetsdansceschma.Cesdiffrentesnotionsseronttudiesplusendtaildanslechapitre
Gestiondesutilisateursetdeleursdroits.
Surlesdiffrentstypesdobjetsprsentscidessus,seulslestablesetlesindexstockentdesdonnesetoccupent
de lespace de stockage dans des tablespaces. Les autres types dobjet nont quune dfinition stocke dans le
dictionnairededonnesOracle.

- 4-

ENI Editions - All rights reserved - Algeria Educ

La notion de schma est une notion purement logique. Physiquement, les objets des diffrents schmas sont
mlangs,soitdansledictionnairededonnesOracle,soitdanslestablespaces,maisOraclesaitsyretrouver.
Des schmas dexemple sont fournis par Oracle, dont le fameux (mais rduit) schma SCOTT (mot de passe TIGER,
propritairedestablesEMPetDEPT).DesschmasdexempleplusvolussontdcritsdansladocumentationOracle
DatabaseSampleSchemas.Ilspeuventtreinstallslorsdelacrationdunebasededonnesouultrieurement.

6.Rglesdenommage
UnnomdestructureOracle(table,tablespace,etc.)doitrespecterlesrglessuivantes :

contenir30caractresmaximum

doitcommencerparunelettre

peutcontenirdeslettres,deschiffresettroiscaractresspciaux(_$#)

nestpassensiblelacasse

nedoitpastreunmotrservOracle.

Ilyavidemmentdesexceptionscesrglesdenommage,notammentpourlenomdelabasededonnes
quiestlimit8caractres.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Problmescourantsetsolutions
ORA-01653: impossible dtendre la table X. de N dans le tablespace Y
ORA-01654: impossible dtendre lindex X. de N dans le tablespace Y
Explication
Unsegment(tableouindex)narrivepasstendre.
Cause(s)
Lesegment(tableouindex)narrivepasstendrecarletablespacedanslequelileststocknapassuffisamment
despacedisponibleetnepeutpasstendreluimme.
Action(s)
Ilfautaugmenterlespacedisponibledansletablespace :
soitenluiallouantunnouveaufichierdedonnes(ALTER TABLESPACE ... ADD DATAFILE ...)
soitenaugmentantlatailledunfichierdedonnesdutablespace(ALTER DATABASE DATAFILE ... RESIZE ...)
soitenautorisantunfichierdedonnesdutablespacestendreautomatiquement(ALTER DATABASE DATAFILE ...
AUTO- EXTEND ON ...).
ORA-01631: nbre max. densembles de blocs contigus (N) atteint dans table X.
ORA-01632: nbre max. densembles de blocs contigus (N) atteint dans index X.
Explication
Unsegment(tableouindex)narrivepasstendre.
Cause(s)
Lesegment(tableouindex)narrivepasstendrecarileststockdansuntablespacegrparledictionnaireetila
atteintsonnombremaximumdextensionsdfiniparMAXEXTENTS.Ceproblmenepeutpasseproduiresilesegment
eststockdansuntablespacegrlocalement(nombredextensionsillimit).
Action(s)
Utilisezuntablespacegrlocalementetchoisissezventuellementunetailledextensionadaptelavolumtriedu
segment.
ORA-01502: lindex xxx.yyy ou sa partition est inutilisable
Explication
Unindexestinutilisable(UNUSABLE)etnepeutpastreutilispourexcuterunerequte.
Cause(s)
LatableapeuttretreconstruiteparunALTER TABLE MOVE,cequiarendulesindexdelatableinutilisables.
noter que cette erreur se produit uniquement si le paramtre SKIP_UNUSABLE_INDEXES est FALSE. Sil est TRUE
(valeurpardfaut),loptimiseurnetentepasdutiliserlesindexinutilisablesetlerreurneseproduitpas parcontre,
lesperformancesrisquentdesedgraderfortement(parcourscompletdetable).
Action(s)
Reconstruisezlindex(ALTER INDEX REBUILD).

ENI Editions - All rights reserved - Algeria Educ

- 1-

SivousobtenezuneerreurORA-01630ouORA-01652lorsdelacrationoudelareconstructiondunindex,cest
quilyaunproblmeaveclesegmenttemporairencessaireautri(voirlesproblmescourantsetsolutiondu
chapitreGestiondestablespacesetdesfichiersdedonnes).

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Principes
1.Vuedensemble
Assurerlascuritdesdonnesestunedestchesprincipalesdeladministrateur.
Cettescuritestassurepar :

lamiseen uvreduneprotectiondesfichierssensiblesdelabase :

fichiersdecontrle

fichiersdejournalisation.

lamiseenplacedunestratgiedesauvegarde/restauration :

adapteauxcontraintesdelentreprise

testeetdocumente.

La protection des fichiers de contrle et des fichiers de journalisation seffectue par multiplexage (voir le chapitre
Gestiondesfichiersdecontrleetdesfichiersdejournalisation).
Lesquestionsseposerpourdfinirlastratgiesontlessuivantes :

Estilacceptabledeperdredesdonnes?

Estilpossibledarrterpriodiquementlabase?

Estilpossiblederaliserunesauvegardecompltedelabasependantlarrt?

Larponselaquestion"estilacceptabledeperdredesdonnes?"estrarement"oui".Siexceptionnellement,la
rponseest"oui",ilfautdterminerjusququellelimite : 1jour,2 jours,1semaine?
Ilestgalementncessairededterminerlanaturedelactivitsurlabase :

Lesdonnessontellesmisesjourquotidiennementparlesutilisateurs ?Cesttypiquementlecasdansune
applicationtransactionnelle.
Les donnes sontelles mises jour priodiquement (toutes les nuits, toutes les semaines) et simplement
consultesdanslajourne ?Cesttypiquementlecasavecuneapplicationdcisionnelle.

2.Larchivagedesfichiersdejournalisation
Comme nous lavons dj vu, les fichiers de journalisation constituent un journal des modifications apportes la
base.Ilssontorganissengroupescritsdemanirecirculaire : lesinformationssauvegardessontdoncpardfaut
priodiquementcrases.
Cesfichiersdejournalisationpeuventtrerappliqusunesauvegardedefichierdedonnes,pourrejouertoutes
lesmodificationssurvenuesentrelasauvegardeetunincidentayantendommaglefichier(restaurationdemdia),
condition davoir conserv tous les fichiers de journalisation ceci est possible en faisant fonctionner la base de
donnes en mode ARCHIVELOG. Ce mode de fonctionnement permet de garantir zro perte de donnes en cas
dincidentsurunfichierdedonnes.
LeprincipedercuprationenmodeARCHIVELOGestlesuivant :

ENI Editions - All rights reserved - Algeria Educ

- 1-


uninstantT0,unesauvegardedunfichierdedonnesestralise.AprsT0,lactivitdemisejoursepoursuit,
gnrantdesentresdanslesfichiersdejournalisation.Larchivagetantactiv,lesfichiersdejournalisationpleins
sontarchivs.
linstant T1, un incident se produit et le fichier de donnes est perdu. La rcupration du fichier de donnes
consiste prendre la dernire sauvegarde du fichier (qui ne contient videmment pas les modifications effectues
depuis)etappliquersurcettesauvegardelesfichiersdejournalisationarchivs(quieux,contiennentlatracedes
modifications apportes depuis la dernire sauvegarde), afin de ramener le fichier de donnes dans ltat o il se
trouvaitjusteavantlincident(pourtreplusprcis,dansltatdeladerniretransactionvalide).

3.Solutionsdesauvegardeetrcupration
Poureffectuerdessauvegardesetdesrcuprations,vousavezdeuxpossibilits :

utiliserloutilRecoveryManager(RMAN)fourniparOracle : cestlamthoderecommande

procder"lamain"avecdescommandesdusystmedexploitationetdesscriptsSQL.

RMANestunoutillignedecommandequifacilitegrandementlesoprationsdesauvegardeetdercupration,en
limitantnotammentlesrisquesdefaussemanoeuvre.RMANpeuttreutilistraversuneinterfacegraphiquedans
le Database Control. Toutes les oprations de sauvegarde et de rcupration prsentes dans cet ouvrage sont
basessurlutilisationduRecoveryManager.

4.Stratgiesdesauvegardedisponibles
Unesauvegardepeuttrecohrenteouincohrente.
Une sauvegardecohrente est une sauvegarde de la totalit de la base de donnes aprs unarrt propre de la
basededonnes(pasaprsunSHUTDOWN ABORTouunarrtanormaldelinstance) cetypedesauvegardeestaussi
souventappel"sauvegardebaseferme".Aprsunarrtpropredelabasededonnes,touteslesmodifications
onttcritesdanslesfichiersdedonnesquisontbiensynchrones.Unebasededonnesrestaurepartirdune
sauvegardecohrentepeuttreouverteimmdiatement : ilestinutiledappliquerlesfichiersdejournalisation.Cest
leseulmodedesauvegardedisponiblelorsquelabasededonnesfonctionneenmodeNOARCHIVELOG.
Unesauvegardeincohrenteestunesauvegardeeffectuealorsquelabasededonnesestouverteetquelactivit
de mise jour se poursuit pendant la sauvegarde ce type de sauvegarde est aussi souvent appel "sauvegarde
base ouverte". Les fichiers sauvegards ne sont pas synchrones du point de vue des modifications enregistres.
Lorsquune base de donnes est restaure partir dune sauvegarde incohrente, il faut appliquer les fichiers de
journalisation pour rendre les fichiers cohrents. Les sauvegardes incohrentes ne sont possibles que lorsque la
basededonnesfonctionneenmodeARCHIVELOG.
Unesauvegardepeuttrecomplte,partielleouincrmentale.Unesauvegardecomplteestunesauvegardede
latotalitdelabasededonnes.Unesauvegardepartielleestunesauvegardeincluantuniquementunepartiede

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

la base de donnes. Les sauvegardes partielles sont forcment incohrentes entre elles. Pour quelles soient
exploitablesenrestauration(cequiestnormalementlobjectif),ilfautquelabasededonnesfonctionneenmode
ARCHIVELOG. Une sauvegarde incrmentale est une sauvegarde qui ne contient que les blocs modifis depuis la
derniresauvegarde unesauvegardeincrmentalepeuttrecomplteoupartielle.
Unesauvegardecohrentecompltencessitedepouvoirarrterlabasededonnesetlasauvegarderentotalit
pendantlarrt.

5.Quellestratgiepourlemodedefonctionnementdelabase ?
Letableausuivantrsumelespossiblits :
Pertesdedonnesacceptables

Sauvegardebase
fermepossible

Oui

Non

Oui

ARCHIVELOG
NOARCHIVELOG

ARCHIVELOG

Non

ARCHIVELOG

ARCHIVELOG

LemodeARCHIVELOGestobligatoiresiaumoinsunedescontraintessuivantesexiste :

Aucunepertededonnenestautorise.

Labasededonnesnepeutpastrefermepourtresauvegarde.

LemodeNOARCHIVELOGestpossiblesi :

Despertesdedonnessontacceptables.

Labasededonnespeuttrefermepourtresauvegarde.

UnautreavantagedumodeARCHIVELOGestquelabasededonnespeutresterouvertelorsquunincidentsurvient
surunfichierdedonnesquinappartientniautablespaceSYSTEM,niautablespaceUNDOactif.

6.Quellestratgiepourlasauvegarde ?
Lapremirergleestderaliserdessauvegardesfrquentes(auminimumtouslesjours)etdeconserverplusieurs
cyclesdesauvegarde(encasdeproblmeavecunesauvegarde).
SilabasededonnesfonctionneenmodeARCHIVELOG,vouspouvezraliserdessauvegardesbasesouvertes ilny
apasderaisondesenpriver.
Siladuredesauvegardeetlatailledessauvegardesneposentpasdeproblme(mmeenconservantplusieurs
sauvegardes),vouspouvezralisersystmatiquement(touslesjours)dessauvegardescompltes.
Si la dure de sauvegarde et/ou la taille des sauvegardes posent un problme, vous pouvez raliser des
sauvegardes incrmentales et/ou des sauvegardes partielles. Dans le cas de sauvegardes partielles, vous devez
simplement tre trs rigoureux dans le suivi et veiller tout sauvegarder sur un cycle complet de sauvegardes
partielles.
Il est important de raliser des sauvegardes trs frquemment pour pouvoir procder une restauration en un
temps raisonnable : partir dune sauvegarde datant dun mois et rappliquer tous les fichiers de journalisation
archivsdepuisunmoisrisquedeservlertrslongsilabasededonnesestactivementmisejour.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Archivagedesfichiersdejournalisation
1.Vuedensemble
Activer larchivage des fichiers de journalisation seffectue en mettant la base de donnes dans le
modeARCHIVELOG : cemodepermetdegarantirquun groupe de fichiers de journalisation ne sera pas rutilis tant
quilnapastarchiv.
Depuis la version 10, placer la base de donnes en mode ARCHIVELOG dmarre automatiquement deux processus
darchivage(ARC0etARC1)lorsdelouverturedelabasededonnes danslesversionsprcdentes,ilfallaitlefaire
explicitement. Par contre, il est toujours opportun, mme en version 10, de positionner certains paramtres
dinitialisationquiconcernentlesprocessusdarchivage.
La base de donnes peut tre cre dentre de jeu en modeARCHIVELOG. Gnralement, la base de donnes est
creenmodeNOARCHIVELOGpuispasseenARCHIVELOG.Archiverlesfichiersdejournalisationgnrsparlacration
delabasededonnesprsenteunfaibleintrt(maisunvolumedarchivesimportant).

2.Modeopratoire
Lemodeopratoireestlesuivant :

SQL>
2
3
SQL>
2
3

Modifier dans le fichier de paramtres serveur les paramtres dinitialisation qui concernent les processus
darchivage
ALTER SYSTEM SET
log_archive_format=redo_%S_%R_%T.arc
SCOPE=SPFILE;
ALTER SYSTEM SET
log_archive_dest_1=LOCATION=h:\oradata\arch\HERMES
SCOPE=SPFILE;
Arrterproprementlabasededonnes(pasABORT)

SQL> SHUTDOWN IMMEDIATE

Monterlabasededonnes

SQL> STARTUP MOUNT

PasserlabasededonnesenmodeARCHIVELOG

SQL> ALTER DATABASE ARCHIVELOG;

Sauvegarder la base de donnes (permet une sauvegarde T0 du nouveau mode de fonctionnement de la


basededonnes)
Ouvrirlabasededonnes

SQL> ALTER DATABASE OPEN;

Le mode ARCHIVELOG/NOARCHIVELOG est une proprit de la base qui se modifie par lordre SQL ALTER
DATABASE. Ce mode de fonctionnement est mmoris dans le fichier de contrle de la base de donnes il
nestpasncessairedelereprciserchaquedmarrage.
LordreSQLALTER DATABASE NOARCHIVELOGpermet,aubesoin,derepasserenmodeNOARCHIVELOG.

3.Lesparamtresduprocessusdarchivage

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

LOG_ARCHIVE_FORMAT
Ceparamtredfinitleformatsouhaitpourlenomdesarchives.
Leformatdoitinclurelesvariablessuivantes :
%sou%S
Numrodesquencedufichierdejournalisation.
%tou%T
Numrodinstance(thread).
%rou%R
Identifiantderemisezrodesfichiersdejournalisation(voirlasectionRcupration).
Lorsquelenomdelavariableestenmajuscules,lenombreestcompltgauchepardes0.
Exemple :
LOG_ARCHIVE_FORMAT = "redo_%S_%R_%T.arc"
LOG_ARCHIVE_DESTetLOG_ARCHIVE_DUPLEX_DEST
Le paramtre LOG_ARCHIVE_DEST dfinit une premire destination de larchivage et le paramtre
LOG_ARCHIVE_DUPLEX_DEST une deuxime destination darchivage (duplique). Ces paramtres sont utilisables en
StandardEdition.
Syntaxe
LOG_ARCHIVE_[DUPLEX_]DEST = "chemin_local"
Exemple :
LOG_ARCHIVE_DEST = "h:\oradata\arch\HERMES"
LOG_ARCHIVE_DEST_n(nde110)
Ces paramtres dfinissent jusqu 10 destinations parallles darchivage. Ils sont utilisables uniquement en
EnterpriseEdition.
Syntaxesimplifiepourunedestinationlocale(aumoinsuneobligatoire)
LOG_ARCHIVE_DEST_n = "LOCATION=chemin_local"
Exemple :
LOG_ARCHIVE_DEST_1 = "LOCATION=h:\oradata\arch\HERMES"
Les paramtres LOG_ARCHIVE_DEST_n permettent de spcifier plusieurs destinations parallles pour les
archives parmilesdestinations,uneaumoinsdoittrelocale.Endehorsdunedestinationdisqueoubande,ilest
possiblededsignerunebasedesecourscommecible(configurationDataGuard) cettetechniqueavancepermet
davoirunebasededonnessurundeuximeserveurverslaquelleilestpossibledebasculerencasdeproblme
sur la base de donnes source : la base de donnes de secours est mise jour par transfert et application des
fichiersdejournalisationarchivs.
Dans la spcification de la destination, il ne faut pas mettre despace autour du signe = dans la clause
LOCATION.
Dautres paramtres permettent de piloter le fonctionnement des destinations multiples (destinations obligatoires,
facultatives,nombreminimumdedestinationsrussies,etc.).
Remarquessurlesdestinationsdarchivage

- 2-

ENI Editions - All rights reserved - Algeria Educ

Larchivage direct sur bande pouvant tre long (et bloquer >LGWR si larchivagedun fichier de journalisation nest
pas termin), une technique classique consiste archiver sur disque, au niveau dOracle, puis transfrer les
archivessurbandeauniveaudusystmedexploitation(parunprocessusnonOraclemettreenplace).
LesrpertoiresdedestinationnesontpascrsparOracle cestvousdelefaire.
Si aucune destination darchivage nest dfinie, mais quune zone de rcupration rapide soit spcifie (paramtre
DB_RECOVERY_FILE_DEST),lazonedercuprationrapideestutilisecommedestinationdarchivage.
ARCHIVE_LAG_TARGET
Ceparamtrepermetdedfiniruneduremaximaleensecondesentredeuxarchivages.
Unevaleurnulledsactivelafonctionnalit(valeurpardfaut).Lesvaleursautorisessontcomprisesentre60(une
minute)et7 200(2heures).Ceparamtrepermetdeforcerlarchivagedefaonpriodiqueetdoncdegarantirune
priodicitdarchivagestable,indpendantedelafrquencedebasculementdesfichiersdejournalisationquipeut
varierenfonctiondumomentdelajourne.
Exemple :
ARCHIVE_LAG_TARGET = 1800 # 30 minutes
Silnyarienarchiver,Oraclenegnrepasdarchive.
lorigine,ceparamtreestdestinaufonctionnementdelinstancedansuneconfigurationDataGuard.Danscette
configuration, le paramtre ARCHIVE_LAG_TARGET dtermine la dure maximale dinformations de journalisation qui
seraientperdues(nontransfressurlabasededonnesdesecours)encasdeplantagedelabasededonnes
principale.
Le paramtre fonctionne mme si la configuration Data Guard nest pas utilise, et mme sil ny a pas
archivage danscederniercas,leparamtreconditionnelafrquencedebasculementdesfichiersdejournalisation.

4.Trouverdesinformationssurlarchivage
DansSQL*Plus,vouspouvezutiliserlacommande ARCHIVE LOG LIST(dansuneconnexion SYSDBA)pourobtenirdes
informationssurlarchivage
SQL> CONNECT / AS SYSDBA
Connect.
SQL> ARCHIVE LOG LIST
mode Database log
mode Archive
Archivage automatique
Activ
Destination de larchive
h:\oradata\arch\HERMES
Squence de journal en ligne la plus ancienne
19
Squence de journal suivante archiver
21
Squence de journal courante
21
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlarchivage :

V$DATABASE : modedefonctionnementdelabasededonnes(colonneLOG_MODE) >

V$LOG : statutdesgroupesvisvisdelarchivage(colonneARCHIVED) <

V$ARCHIVED_LOG : informationssurlesfichiersdejournalisationarchivs

V$ARCHIVE_DEST : informationssurlesdestinationsdarchivage.

LescolonnesintressantesdelavueV$ARCHIVED_LOGsontlessuivantes :
RECID
Identifiantdelenregistrement.
NAME
Chemincompletdelarchive.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

SEQUENCE#
Numrodesquencedufichierdejournalisationcorrespondant.
FIRST_CHANGE#
PluspetitnumroSCNcritdanslarchive.
FIRST_TIME
DateetheuredupluspetitnumroSCN.
NEXT_CHANGE#
PlusgrandnumroSCNcritdanslarchive.
NEXT_TIME
DateetheureduplusgrandnumroSCN.
COMPLETION_TIME
Dateetheuredelarchivage.
LescolonnesintressantesdelavueV$ARCHIVE_DESTsontlessuivantes :
DEST_NAME
Nomdeladestination.
DESTINATION
Chemindeladestination.
STATUS
Statutdeladestination(VALID,ERROR,etc.).
ERROR
Messagederreur(encasderreur).
Exemple :
SQL> SELECT log_mode FROM v$database;
LOG_MODE
-----------ARCHIVELOG
SQL> SELECT group#,sequence#,status,archived
2 FROM v$log;
GROUP# SEQUENCE# STATUS
ARC
---------- ---------- ---------------- --1
25 INACTIVE
YES
2
26 CURRENT
NO
3
24 INACTIVE
YES
SQL> SELECT sequence#,name FROM v$archived_log;
SEQUENCE# NAME
---------- ---------------------------------------------------20 H:\ORADATA\ARCH\HERMES\REDO_00020_0545650779_001.ARC
...
SQL> SELECT destination,status,error FROM v$archive_dest
2 WHERE dest_name=LOG_ARCHIVE_DEST_1;

- 4-

ENI Editions - All rights reserved - Algeria Educ

DESTINATION
--------------------------------------------------------STATUS
ERROR
--------- ----------------------------------------------h:\oradata\arch\HERMES
ERROR
ORA-19504: chec de cration du fichier ""

5.Problmecourantetsolution
Larchivagepeuttrebloqulorsquilyaunproblmeavecladestinationdarchivage :

plusdespacedisponible

destinationinaccessible.

CelapeutconduireunblocagedeLGWRsitouslesfichiersdejournalisationenligneontbesoindtrearchivs.
UnetellesituationestdtectablegrcelavueV$ARCHIVE_DEST(colonneSTATUS)oupardesmessagesdanslefichier
desalertesdelinstance :
Sun Aug 3 12:43:25 2008
Errors in file d:\oracle\admin\hermes\bdump\hermes_arc1_1504.trc:
ORA-19504: chec de cration du fichier "H:\ORADATA\ARCH\HERMES\
REDO_00029_0545650779_001.ARC"
ORA-27044: impossible dcrire le bloc den-tte du fichier
OSD-04008: chec de Writefile() ; criture impossible dans le fichier
O/S-Error: (OS 112) Espace insuffisant sur le disque.
Pourdbloquerlasituation,ilsuffitdersoudreleproblmequiexistesurladestinationdarchivage,parexempleen
dplaantdesarchivesversuneautredestinationafindelibrerdelespace.
Sivousnepouvezpasrsoudreleproblmeavecladestinationdarchivage,modifieztemporairementladestination
darchivage :
ALTER SYSTEM SET
log_archive_dest_1=LOCATION=d:\temp
SCOPE=MEMORY;
Ilpeuttrencessaireensuitedexcuter lordreSQL ALTER SYSTEM ARCHIVE LOG START pour relancer le processus
darchivage.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

PrsentationduRecoveryManager
1.Introduction
RMANestunoutillignedecommandequipermetderaliserdessauvegardesetdesrcuprationsdune base de
donnesappelebasededonnescible(targetdatabase).
RMANutiliseunrfrentiel(repository)pourstockerdesinformationssursaconfiguration,lessauvegardesralises,
lastructuredelabasecible,lesfichiersdejournalisationarchivs,etc.
Ce rfrentiel est toujours stock dans le fichier de contrle de la base cible. La dure de conservation des
informations
dans
le
fichier
de
contrle
est
dtermine
par
le
paramtre
dinitialisation
CONTROL_FILE_RECORD_KEEP_TIME(7jourspardfaut).
Lerfrentielpeutaussitrestockdansuncataloguedercupration(recoverycatalog)quisematrialiseparun
schma dans une autre base de donnes. Un seul catalogue de rcupration peut tre utilis pour centraliser les
rfrentiels RMAN de plusieurs bases de donnes cibles. Employer un catalogue de rcupration spar est
intressantcarlesinformationsdesauvegardesontprservessitouslesfichiersdecontrledelabaseciblesont
perdus.
Les fichiers de contrle sont donc encore plus importants lorsque vous utilisez RMAN sans catalogue de
rcupration.Sivousperdeztouslesfichiersdecontrledelabasecible,RMANnaplusdinformationssur
les sauvegardes disponibles. Si vous repartez dune sauvegarde de fichier de contrle, RMAN naura pas
dinformationssurlessauvegardesralisesaprslasauvegardedufichierdecontrle.Sivousnutilisezpasde
catalogue de rcupration, vous avez galement intrt augmenter la valeur du paramtre
CONTROL_FILE_RECORD_KEEP_TIME(aumoins1015jours).
Si vous dfinissez une zone de rcupration rapide (flash recovery area), laide des paramtres
DB_RECOVERY_FILE_DESTetDB_RECOVERY_FILE_DEST_SIZE,vouspouvezbnficierdesfonctionnalitsdesauvegardeet
derestaurationautomatiquessurdisqueproposesparRMAN.Encomplment,vouspouvezdfinirunepolitiquede
conservation (retention policy) indiquant combien de temps une sauvegarde doit tre conserve. RMAN se charge
alorsdegrerlespacedelazonedercuprationrapideensupprimant,sincessaire,lessauvegardesobsoltesou
lessauvegardesrecopiessurbande.
Pour chaque opration de sauvegarde, copie, restauration, RMAN utilise un canal (channel). Un canal est une
connexion entre le client RMAN et un processus serveur de la base de donnes cible qui accde un priphrique
(disqueoubande).
Une sauvegarde RMAN peut se faire sous la forme dune copie image (image copy) ou dun jeu de sauvegarde
(backup set). Une copie image est une copie lidentique du fichier (analogue une copie par une commande du
systmedexploitation).Unjeudesauvegardecontientunouplusieursfichierssauvegards.Unjeudesauvegarde
comprend un ou plusieurs fichiers chaque fichier dun jeu est appel lment de sauvegarde (backup piece). Par
dfaut,unjeudesauvegardecomprendunseullmentdesauvegarde,maisilestpossibledelimiterlatailledeces
lments danscecas,unjeudesauvegardepeutcontenirplusieurslmentsdesauvegardesilatailletotaledela
sauvegardeestsuprieurelalimite.LejeudesauvegardeaunformatpropritaireRMAN.
Pourraliserdessauvegardessurbande,RMANsinterfaceavecunlogicieldegestiondemdiafourniparlevendeur
dusystmedesauvegarde.
RMANoffreuntrsgrandnombredefonctionnalitsetdoptionsetpeuttreutilisdediffrentesmanires.Danscet
ouvrage, nous prsenterons les fonctionnalits de base de RMAN, ncessaires et suffisantes pour mettre en place
des stratgies de sauvegarde/rcupration simples, adaptes un grand nombre de cas. Nous supposerons
notamment quune zone de rcupration rapide a t dfinie, ce qui permet de simplifier un grand nombre
doprations,etquaucuncataloguedercuprationsparnatmisenplace.
LesfonctionnalitsdebasedeRMANsontdcritesdansladocumentation OracleDatabaseBackupandRecovery
UsersGuide.

2.LancerRMAN
PourlancerRMAN,ilsuffitdexcuterlacommandermanlinvitedusystmedexploitation.
Syntaxe
rman [liste_options]
Lesoptionssuivantespeuventtreutilises :

ENI Editions - All rights reserved - Algeria Educ

- 1-

TARGET [=] connexion


Chanedeconnexionlabasededonnescible.
CATALOG [=] connexion
Chanedeconnexionlabasededonnesducataloguedercupration.
CMDFILE [=] fichier
CheminversunfichiercontenantdescommandesRMANexcuter.
LOG [=] fichier
CheminversunfichierjournaldelactivitRMAN.
APPEND
Indiquequelefichierjournaldoittreouvertenmodeajout.
USING valeur [...]
Dfinit une ou plusieurs valeurs pour des variables de substitution qui peuvent tre utilises dans un fichier de
commandesRMAN.DanslefichierdecommandeRMAN,lesvariablesdesubstitutionsontdfiniesparlasyntaxe&n
(ventuellementsuividunpoint),ntantunentier.

Les principes de connexion la base cible sont les mmes quavec SQL*Plus : utilisation par dfaut des
variables denvironnement (ORACLE_SID, LOCAL, TWO_TASK), utilisation dun nom de service rseau, etc. Les
variablesdenvironnement commeNLS_DATE_FORMATetNLS_LANG influent aussi sur le format des dates et la langue
desmessagesaffichsparRMAN.Parailleurs,laconnexionlabasecibleseffectueimplicitementAS SYSDBA.
Exemple :

LancerRMANsansseconnecter

> rman
Recovery Manager: Release 11.1.0.6.0 - Production
on Lun. Aot 4 07:37:14 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
RMAN>

Lancer RMAN en se connectant la base cible (utilisation des variables denvironnement et authentification
SYSDBAparlesystmedexploitation)

> rman target /


Recovery Manager: Release 11.1.0.6.0 - Production
on Lun. Aot 4 07:48:22 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connect la base de donnes cible : H E R M E S ( D B I D = 3 5 3 5 8 9 2 6 4 7 )

Lancer RMAN en se connectant la base cible (utilisation dun nom de service rseau et authentification
SYSDBAparunfichierdemotdepasse)

> rman target sys/wX#12@hermes


...

LancerRMANetexcuterunfichierdecommande(quieffectuelaconnexion)

> rman cmdfile=backup.rcv log=backup.log append


...
Sivousnutilisez pas loptionCMDFILE,RMANestlancenmodeinteractif ilafficheuneinviteetvouspouvezsaisir

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

descommandes.AvecloptionCMDFILE,RMANestlancenmodebatch ilexcutelescommandescontenuesdansle
fichierdecommandepuisquitte.
ChaquebasededonnespossdeunidentifiantuniqueappelDBID.LeDBIDdelabasecibleestaffichpar
RMAN lorsque vous vous connectez. Vous avez intrt noter ce DBID quelque part, il peut en effet se
rvlerutilepourcertainesoprations.

3.Quelquescommandesutiles
Certaines commandes RMAN doivent se terminer par un pointvirgule, dautres non (pointvirgule optionnel). Les
commandes RMAN ncessitant un pointvirgule peuvent tre saisies sur plusieurs lignes, les autres non. Les
commandesRMANsontsaisiesindiffremmentenmajusculesouenminuscules.
LescommandessuivantespeuventtreutilisesdansRMAN :
@fichier
Excuteunfichierdecommande.
@@fichier
Excuteunfichierdecommandedanslemmerpertoirequelefichierdecommandeactuel.
SET ECHO ON | OFF
Activeoudsactivelchodescommandes.
SPOOL LOG TO fichier [APPEND]
critlasortieRMANdansunfichier.
SPOOL LOG OFF
ArrtelcrituredelasortieRMANdansunfichier.
STARTUP [option]
Dmarrelabasededonnes lesoptionssontlesmmesquedansSQL*Plus.
SHUTDOWN [option]
Arrtelabasededonnes lesoptionssontlesmmesquedansSQL*Plus.
ALTER DATABASE MOUNT | OPEN ;
Monteououvreunebasededonnes.
CONNECT CATALOG connexion
tablituneconnexionlabasededonnesducatalogue.
CONNECT TARGET connexion
tablituneconnexionlabasededonnescible.
HOST [commande] ; HOST ["commande"] ;
Excute une commande du systme dexploitation ou ouvre une session du systme dexploitation (si aucune
commandenestspcifie).
SQL requte ; SQL "requte" ;

ENI Editions - All rights reserved - Algeria Educ

- 3-

ExcuteunerequteSQLsurlabasededonnescible.Larequtenedoitpasseterminerparunpointvirgule si
ellecontientdesapostrophes,ellesdoiventtredoubles.
EXITouQUIT
QuitteRMAN.
ExempledescriptRMAN:
# ceci est un commentaire
SPOOL LOG TO d:\rman.log
SET ECHO ON
CONNECT TARGET /
SHUTDOW MOUNT
SQL "ALTER DATABASE ARCHIVELOG";
ALTER DATABASE OPEN;
SPOOL LOG OFF
SET ECHO OFF
Si vous souhaitez placer un commentaire en fin de ligne, vous devez terminer la commande par un pointvirgule
(mmesilepointvirguleestoptionnelpourlacommande).
Parailleurs,ilestpossibledegrouperdescommandesRMANdansunblocdlimitpardesaccoladesetdexcuterce
blocaveclacommandeRUN :
RUN
{
...
}
Certaines commandes (ALLOCATE CHANNEL,SET) excutes lintrieurdun bloc ont une porte limite au bloc. Par
ailleurs,siunecommandedublocchoue,lexcutiondublocsarrte.
CertainescommandesRMANdoiventtreexcuteslintrieurdunbloc(ALLOCATE CHANNELparexemple) dautres
nepeuventpastreexcutesdansunbloc(SPOOLparexemple).

4.ConfigurerRMAN
RMANdisposedeplusieursrglagespersistantsutilisspardfautlorsdesdiffrentesoprations.
LaconfigurationactuellepeuttrevisualiseenexcutantlacommandeSHOW ALL.
Exemple :
RMAN> SHOW ALL ;
utilisation du fichier de contrle de la base
de donnes cible au lieu du catalogue de rcupration
les paramtres de configuration RMAN de la base
de donnes ayant le db_unique_name HERMES sont les suivants :
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO %F; #
default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM AES128; # default
CONFIGURE COMPRESSION ALGORITHM BZIP2; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO D:\APP\ORACLE\PRODUCT\11.1.0\DB_1\
DATABASE\SNCFHERMES.ORA; # default
Lecommentaire# defaultindiquequeleparamtreestgalsavaleurpardfaut.

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Lacommande CONFIGURE permet de modifier les rglages persistants la commande SHOW ALL montre la valeur des
rglagesenutilisantlasyntaxedelacommandeCONFIGURE.
Lesprincipauxrglagessontlessuivants :
Configurerlescanauxetlespriphriques
Par dfaut, le priphrique utilis est le disque (paramtre DEFAULT DEVICE TYPE), la destination par dfaut des
sauvegardestantlazonedercuprationrapide.Sicettedernirenestpasdfinie,RMANutiliseunedestination
pardfautquidpenddelaplateforme.
Sivoussouhaitezconfigurerladestinationdesauvegarde,vouspouvezutiliserlacommandesuivante :
CONFIGURE CHANNEL DEVICE TYPE DISK options ;
Laclauseoptionspeutprendreuneouplusieursvaleursdont :
FORMAT format
Cheminetformatdenomdefichierpourlasauvegarde.
MAXPIECESIZE taille [K|M|G]
Taillemaximaledeslmentsdesauvegarde.Aucunelimitepardfaut.
Exemple :
CONFIGURE CHANNEL DEVICE TYPE DISK
FORMAT h:\backup\%U
MAXPIECESIZE 2G ;
Danscetexemple,latailledeslmentsdesauvegardeestlimite2Go.Silatailledelasauvegardeestsuprieure
2Go,lejeudesauvegardecontiendraplusieurslmentsdesauvegarde.
Loptionformatcomprenduncheminetunformatdefichier.Leformatdefichierutilisegnralementuneouplusieurs
desvariablessuivantes :
%U
Nomdefichieruniquedontlacompositiondpenddelanaturedelasauvegarde :
%u_%p_%cpourunlmentdesauvegarde
data-D-%d_id-%I_TS-%N_FNO-%f_%upourunecopieimagedunfichierdedonnes
arch-D_%d-id-%I_S-%e_T-%h_A-%a_%upourunecopieimagedunfichierdejournalisationarchiv
cf-D_%d-id-%I_%upourunecopieimagedufichierdecontrle.
%d
Nomdelabasededonnes.
%I
Identifiantdelabasededonnes(DBID).
%h
Numrodactivationdelabasededonnes.
%N
Nomdutablespace.
%f
Numrodefichierdedonnes.

ENI Editions - All rights reserved - Algeria Educ

- 5-

%e
Numrodesquencedufichierdejournalisationarchiv.
%h
Numrodinstance(thread)dufichierdejournalisationarchiv.
%s
Numrodujeudesauvegarde(backupset).
%p
Numrodellmentdesauvegarde(backuppiece)lintrieurdunjeudesauvegarde.
%c
Numro de copie de llment de sauvegarde (cas dune sauvegarde multiplexe). 1 si la sauvegarde nest pas
multiplexe.
%u
Chaneuniquede8caractresbasesurlenumrodujeudesauvegardeoudelacopieimageetdeladate/heure
delasauvegarde/copie.

Sivousutilisezdesformatspersonnaliss,assurezvousquelenomdefichiergnrestunique,souspeine
dcraserdautressauvegardes.
Dans la commande CONFIGURE CHANNEL DEVICE TYPE DISK, une option non spcifie est remise sa valeur par
dfaut lavaleurprcdentenestpasconserve.
Pourmodifierlataillemaximaledeslmentsdesauvegarde,enremettantleformatpardfaut,vouspouvezutiliser
lacommandesuivante :
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 4G ;
Pourrevenirlaconfigurationpardfaut,vouspouvezemployerlacommandesuivante :
CONFIGURE CHANNEL DEVICE TYPE DISK CLEAR ;
Configurerlapolitiquedeconservation
Lapolitiquedeconservationpeuttredfinieentermesdefentrederestaurationouderedondance.
Une fentre de restauration indique jusqu combien de jours dans le pass vous souhaitez pouvoir revenir. Une
redondanceindiquecombiendesauvegardesdechaquefichierdoiventtreconserves cestlapolitiquepardfaut
(avecuneredondancede1).
Pourdfinirlapolitiquedeconservation,utilisezunedescommandessuivantes :

Fentrederestauration

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS ;

Redondance

CONFIGURE RETENTION POLICY TO REDUNDANCY n ;


Lorsquelazonedercuprationrapideestutilise,RMANsupprimeautomatiquementlessauvegardesobsoltes(sil
a besoin de place), en sappuyant sur la politique de conservation par dfaut et sur la taille alloue la zone de
rcuprationrapide(paramtreDB_RECOVERY_FILE_DEST_SIZE).
Pourrevenirlaconfigurationpardfaut,vouspouvezutiliserlacommandesuivante :

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

CONFIGURE RETENTION POLICY CLEAR ;


Configurerlasauvegardeautomatiquedufichierdecontrle
Lasauvegardeautomatiquedufichierdecontrlepeuttreactivegrcelacommandesuivante :
CONFIGURE CONTROLFILE AUTOBACKUP ON ;
Lorsque la sauvegarde automatique du fichier de contrle est active, le fichier de contrle est, par dfaut,
sauvegarddanslazonedercuprationrapide.
Si vous souhaitez dfinir une destination de sauvegarde par dfaut spcifique, vous pouvez utiliser la commande
suivante :
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO format ;
Loptionformatnepeutetnedoitinclurequelavariable%F(nomuniquebassurlidentifiantdelabasededonnes,
ladateetunnumrodesquencehexadcimal).RemplacezTO formatparCLEARpourrevenirauformatpardfaut.
Activer la sauvegarde automatique du fichier de contrle active aussi la sauvegarde automatique du fichier de
paramtres serveur. Lorsque la sauvegarde automatique est active, ces deux fichiers sont automatiquement
sauvegards chaque fois quune modification de structure de la base de donnes ou une sauvegarde RMAN est
enregistredanslefichierdecontrle.
Activerlasauvegardeautomatiquedufichierdecontrleestvivementconseill,surtoutsivousnutilisezpas
de catalogue de rcupration spar pour RMAN. En cas de perte de tous les fichiers de contrle, RMAN
pourrarestaurercesdernierspartirdunesauvegardeautomatique.

5.Utilisationdelazonedercuprationrapide
Oracle conseille vivement dutiliser une zone de rcupration rapide pour bnficier dun certain nombre de
fonctionnalitsautomatiquesrelativesauxoprationsdesauvegardeetdercupration.
Siunezonedercuprationrapideestconfigure,elleestutilisecommedestinationpardfautdessauvegardeset
de plusieurs autres fichiers (par exemple, les fichiers de journalisation archivs si aucune destination darchivage
nestdfinie).
Le quota despace allou la zone de rcupration rapide (paramtre DB_RECOVERY_ FILE_DEST_SIZE) doit tre
spcifi avec soin, en tenant compte de la taille des fichiers qui y sont stocks (sauvegardes notamment) et de la
politiquedeconservationdessauvegardes.
Du point de vue de la scurit, il est vivement conseill dutiliser un disque spar pour la zone de
rcuprationrapide.
Les fichiers gnrs par Orale dans la zone de rcupration rapide sont stocks dans diffrents sousrpertoires,
avecdesformatsdenomdefichiersspcifiques.Cesontdesfichiers"grsparOracle"(OracleManagedFiles).
Lesdiffrentsrpertoiressontdfinissouslaformesuivante :

<DB_UNIQUE_NAME>/<type>[/<date>](Unix/Linux)

<DB_UNIQUE_NAME>\<TYPE>[\<date>](Windows).

Avec :
<DB_UNIQUE_NAME>
NomuniquedelabasededonnestelquedfiniparleparamtreDB_UNIQUE_NAME(pardfautgalauparamtre>
DB_NAME).
<type>
Sousrpertoire correspondant au type de fichier : archivelog (fichier de journalisation archiv), autobackup
(sauvegardeautomatiquedufichierdecontrleetdufichierdeparamtresserveur),backupset(jeudesauvegarde),

ENI Editions - All rights reserved - Algeria Educ

- 7-

controlfile(copieimagedefichierdecontrle),datafile(copieimagedefichierdedonnes).
<TYPE>
Identique<type>maisenmajuscules.
<date>
Sousrpertoire correspondant la date (au format AAAA_MM_JJ). Nexiste pas pour les rpertoires controlfile et
datafile.
LesrglesdenommagedesfichiersgrsparOraclesontlessuivantes :
Typedefichier

Format

Fichierdejournalisationarchiv

o1_mf_<i>_<s>_<u>_.log

Copieimagedefichierdedonnes

o1_mf_<t>_<u>_.dbf

Copieimagedefichierdecontrle

o1_mf_<a>_<u>_.ctl

Jeudesauvegarde

o1_mf_<c>_<a>_<u>_.bkp

Sauvegardeautomatique

o1_mf_s_<h>_<u>_.bkp

Avec :
<t>
nomdutablespace
<u>
chanede8caractresquigarantitlunicit
<g>
numrodegroupepourlesfichiersdejournalisation
<i>
numrodinstance(thread)pourlesfichiersdejournalisationarchivs
<s>
numrodesquencepourlesfichiersdejournalisationarchivs
<a>
nomdonnlasauvegarde(optionTAGdelacommandeBACKUP)
<c>
chanede5caractrescorrespondantaucontenudujeudesauvegarde
<h>
horodatagedelasauvegardeautomatique(nombredesecondescoulesdepuisunedateinternefixe).
Exemple :
H:\ORADATA\FLASH_RECOVERY_AREA\HERMES
ARCHIVELOG

- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

2008_08_05
O1_MF_1_35_49HPDHY8_.ARC
AUTOBACKUP
2008_08_05
O1_MF_S_661934919_49HPX9N0_.BKP
BACKUPSET
2008_08_05
O1_MF_NNNDF_TAG20080805T064838_49HPX6TV_.BKP
CONTROLFILE
O1_MF_TAG20080805T065123_49HQ2C9R_.CTL
DATAFILE
O1_MF_TEST_49HQ0498_.DBF
La mme zone de rcupration rapide peut tre partage par plusieurs bases de donnes, sous rserve que ces
derniresaientunnomuniquedebasededonnes(paramtreDB_UNIQUE_NAME)diffrent.

6.LacommandeVALIDATE
LacommandeVALIDATEpeuttreutilisedansdiffrentessituations(titreprventif,avantunesauvegarde,avant
unerestauration,etc.)pourdtecterdventuelsproblmesdecorruptionoudefichiersmanquants.
Syntaxesimplifie
VALIDATE quoi ;
Laclausequoipeutprendreunedesvaleurssuivantes(nonexhaustif) :
DATABASE
Vrification de la totalit de la base de donnes (fichiers de donnes, fichiers de contrle et fichier de paramtre
serveur).
TABLESPACE liste_noms
Vrificationdunouplusieurstablespaces.
DATAFILE liste_numros_ou_noms
Vrification dunouplusieursfichiersdedonnes.
CURRENT CONTROLFILE
Vrificationdufichierdecontrlecourant.
SPFILE
Vrificationdufichierdeparamtresserveur.
ARCHIVELOG ALL
Vrificationdetouslesfichiersdejournalisationarchivs(ALLpeuttreremplacpardiffrentesclausespermettant
deslectionnerlesfichiersdejournalisationarchivsvrifier).
BACKUPSET liste_cls
Vrificationdunouplusieursjeuxdesauvegarde.
RECOVERY AREA
Vrificationdetouslesfichiersstocksdanslazonedercuprationrapide.
Exemples
VALIDATE DATABASE ;

ENI Editions - All rights reserved - Algeria Educ

- 9-

VALIDATE DATAFILE 1,E:\ORADATA\HERMES\DATA01.DBF ;


VALIDATE TABLESPACE system,sysaux ;
VALIDATE BACKUPSET 47,52 ;

- 10 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Sauvegarde
1.Gnralits
LacommandeBACKUPpermetdeffectuerunesauvegarde.Pourquecettecommandefonctionne,ilfautquelabasede
donnessoitmonteououvertecarRMANabesoindaccderaufichierdecontrledelabasecible,notammentpour
y enregistrer lexistence de la sauvegarde. Les sauvegardes base ouverte ne sont possibles que si la base de
donnes fonctionne en mode ARCHIVELOG. Si la base de donnes fonctionne en mode NOARCHIVELOG, il faut au
pralablearrterlabasededonnes(proprement)puislamonter :
SHUTDOWN IMMEDIATES
TARTUP MOUNT
BACKUP ... ;
RMANpeutsauvegarderdesfichiersdedonnes,desfichiersdecontrle,desfichiersdejournalisationarchivs,le
fichier de paramtres serveur ou des lments de sauvegarde (dune sauvegarde prcdente). Comme indiqu
prcdemment,unesauvegardeRMANpeuttreralisesouslaformedunecopieimage(imagecopy)oudunjeu
desauvegarde(backupset).Pardfaut,lasauvegardeseffectuedansunjeudesauvegarde.
LorsqueRMANeffectueunesauvegardedefichiersdedonnesdansunjeudesauvegarde,ilnesauvegardepasles
blocsjamaisutilissdesfichiers,cequipermetdegagnerdelaplace.Encomplment,ilestpossibledecompresserle
jeudesauvegarde celaralentitlgrementlasauvegarde,consommeunpeudeCPU,maisdiminuelatailledela
sauvegarde de manire importante (typiquement, division par 5). Ces deux fonctionnalits ne sont pas disponibles
danslecasdunecopieimage(copiebitbitdufichierdorigine).
LasyntaxegnraledelacommandeBACKUPestlasuivante :
BACKUP [comment] quoi [option]

LacommandeBACKUPproposeuntrsgrandnombredoptions.Danscetouvrage,nousneprsenteronsque
lesoptionslespluscourammentutilises.
Laclausecommentpeutprendreuneouplusieursdesvaleurssuivantes :
INCREMENTAL LEVEL n [CUMULATIVE]
Indiquequelasauvegardeestunesauvegardeincrmentale.
VALIDATE
Indique simplement de vrifier que la sauvegarde peut tre ralise (teste la prsence des fichiers et leur non
corruption).CetteoptionestquivalentelutilisationdelacommandeVALIDATE.
AS COPYouAS [COMPRESSED] BACKUPSET
Indiquesilfautfaireunesauvegardesouslaformedunecopieimageoudunjeudesauvegarde,ventuellement
compress.
Laclausequoipeutprendreuneouplusieursdesvaleurssuivantes :
DATABASE
Sauvegardedelatotalitdelabasededonnes.
TABLESPACE cible
Sauvegardedunouplusieurstablespaces.
DATAFILE cible
Sauvegardedunouplusieursfichiersdedonnes.
CURRENT CONTROLFILE
ENI Editions - All rights reserved - Algeria Educ

- 1-

Sauvegardedufichierdecontrlecourant.
SPFILE
Sauvegardedufichierdeparamtresserveur.
ARCHIVELOG cible
Sauvegardedesfichiersdejournalisationarchivs.
Laclauseoptionpeutprendreuneouplusieursdesvaleurssuivantes :
INCLUDE CURRENT CONTROLFILE
Inclurelefichierdecontrlecourantdanslasauvegarde.
PLUS ARCHIVELOG
Inclurelesfichiersdejournalisationarchivsdanslasauvegarde.
DELETE [ALL] INPUT
Supprimerleslmentssauvegards(valableuniquementpourunesauvegardedefichiersdejournalisationarchivs
ouunesauvegardedejeudesauvegarde).
FORMAT [=] format
Spcifierunformatpourlasauvegarde(cheminetformatdenomdefichier).
TAG [=] nom
Associerunnomlasauvegarde.
NOT BACKED UP clause_depuis
Indiquerdenesauvegarderqueleslmentsquinontpastsauvegardsuncertainnombredefoisoudepuisun
certaintemps.
DanslacommandeBACKUP,laseuleclauseobligatoireestlaclausequoiquiindiquecequilfautsauvegarder.Toutes
lesautresclausessontoptionnellesetontdesvaleurspardfaut.
Certaines valeurs par dfaut proviennent de la configuration persistante de RMAN. Cest le cas notamment de la
destinationdelasauvegardeetduformatdunomdesfichiers(canalpardfaut).LoptionFORMATdelacommande
BACKUP permet de spcifier une destination diffrente pour la sauvegarde. Sauf modification de la configuration, la
sauvegarde sur disque seffectue par dfaut dans un jeu de sauvegarde non compress (quivalent loption AS
BACKUPSET). Pour effectuer une sauvegarde dans un jeu de sauvegarde compress, il faut utiliser loption AS
COMPRESSED BACKUPSET(BACKUP AS COMPRESSED BACKUPSET ...). Pour effectuer une sauvegarde sous la forme dune
copieimage,ilfaututiliserloptionAS COPY(BACKUP AS COPY ...).
Avec loption VALIDATE, la commande BACKUP neffectue en fait aucune sauvegarde elle vrifie simplement quune
sauvegarde pourrait tre ralise, cestdire que les fichiers sauvegarder sont bien accessibles et ne sont pas
corrompus.
LoptionTAG permet dassocier un nom la sauvegarde, ce qui permet par la suite didentifier facilement des
sauvegardesoudescatgoriesdesauvegarde.CenomestinclusdanslesnomsdefichiersgnrsparRMANlors
dunesauvegardedanslazonedercuprationrapide.
LoptionNOT BACKED UPproposedeuxsyntaxes :

NOT BACKED UP SINCE TIME = date

NOT BACKED UP n TIMES.

Lapremiresyntaxepermetdenesauvegarderqueleslmentsquinontpastsauvegardsdepuisuncertain
temps.Loptiondatepeuttreuneconstanteconformeauformatdedatepardfaut(NLS_DATE_FORMATdelasession

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

RMAN)ouuneexpression(dutypeSYSDATE-1).Ladeuximesyntaxepermetdenesauvegarderqueleslments
quinontpastsauvegardsuncertainnombredefois cettesyntaxenepeuttreutilisequepourlesfichiersde
journalisationarchivs.
Lesautresclausessontdtaillesdanslespointssuivants.
Lorsdechaquesauvegarde,RMANaffichedenombreusesinformationssurlesoprationseffectues.
Exemple
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE TAG=DBF;
Dmarrage de backup dans 05/08/08
utilisation du canal ORA_DISK_1
canal ORA_DISK_1 : dmarrage de lensemble de sauvegarde compress de tous
les fichiers de donnes
canal ORA_DISK_1 : insertion du(des) fichier(s) de donnes dans lensemble
de sauvegarde
fichier de donnes en entre, numro=00001,
nom=E:\ORADATA\HERMES\SYSTEM01.DBF
fichier de donnes en entre, numro=00002,
nom=E:\ORADATA\HERMES\SYSAUX01.DBF
fichier de donnes en entre, numro=00003,
nom=E:\ORADATA\HERMES\UNDOTBS01.DBF
fichier de donnes en entre, numro=00005,
nom=E:\ORADATA\HERMES\DATA01.DBF
fichier de donnes en entre, numro=00006,
nom=E:\ORADATA\HERMES\INDX01.DBF
fichier de donnes en entre, numro=00004,
nom=E:\ORADATA\HERMES\DEFTBS01.DBF
canal ORA_DISK_1 : dmarrage de llment 1 dans 05/08/08
canal ORA_DISK_1 : lment 1 termin dans 05/08/08
descripteur dlment=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\BACKUPSET\
2008_08_05\O1_MF_NNNDF_DBF_49HRPOC7_.BKP balise=DBF commentaire=NONE
canal ORA_DISK_1 : ensemble de sauvegarde termin, temps coul : 00:00:55
Fin de backup dans 05/08/08
Dmarrage de Control File and SPFILE Autobackup dans 05/08/08
descripteur dlment=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\AUTOBACKUP\
2008_08_05\O1_MF_S_661936812_49HRRFXS_.BKP commentaire=NONE
Fin de Control File and SPFILE Autobackup dans 05/08/08
Danslecompterendudunesauvegarde,noustrouvonslesinformationssuivantes :

les fichiers sauvegards (par exemple "fichier de donnes en entre" pourunesauvegardedefichierde


donnes)
lenomcompletdufichierdesauvegardegnr(parexemple"descripteurdlment="pourunlmentde
sauvegarde)
le fait quil y ait eu ou non une sauvegarde automatique du fichier de contrle et du fichier de paramtres
serveur.

Lesfichiersdedonnestemporaires(fichiersdedonnesdestablespacestemporairesgrslocalement)ne
sontpassauvegards(cestinutile).

2.Sauvegardedelatotalitdelabasededonnes
Poursauvegarderlatotalitdelabase,ilsuffitdutiliserloptionDATABASEdanslacommandeBACKUP :
BACKUP DATABASE ;
RMAN utilise les informations du fichier de contrle de la base cible pour dfinir la liste des fichiers de donnes
sauvegarder.Encomplment,ilsauvegardelefichierdecontrleetlefichierdeparamtresserveur(voirciaprs).
La commande BACKUP VALIDATE DATABASE peut tre utilise pour vrifier que la base de donnes est en "bon
tat"(aucunfichierinaccessible,aucunfichiercorrompu).
ENI Editions - All rights reserved - Algeria Educ

- 3-

3.Sauvegardedetablespacesoudefichiersdedonnesindividuels
Pour sauvegarder individuellement quelques tablespaces ou quelques fichiers de donnes, vous pouvez utiliser les
optionsTABLESPACEet/ouDATAFILEdanslacommandeBACKUP.
Exemple :
BACKUP TABLESPACE data,indx ;
BACKUP DATAFILE 1,2,E:\ORADATA\HERMES\DEFTBS01.DBF ;
BACKUP TABLESPACE system DATAFILE 5 ;
Lesoptions TABLESPACEet DATAFILEpeuventtreutilisessimultanmentdanslammecommande.Untablespace
est dsign par son nom et un fichier de donnes par son numro ou par son nom. Lors de la sauvegarde dun
tablespace, RMAN utilise les informations du fichier de contrle de la base cible pour dfinir la liste des fichiers de
donnesdutablespaceetlessauvegarder.

4.Sauvegardedufichierdecontrleetdufichierdeparamtresserveur
Lefichierdecontrleetlefichierdeparamtresserveursontsauvegardsautomatiquementdansdeuxcas :

Lorsquelasauvegardeautomatiquedufichierdecontrleatactive.

Lorsquelefichierdedonnesnumro1(lepremierfichierdedonnesdutablespaceSYSTEM)estsauvegard.

Dans les autres cas, le fichier de contrle peut tre explicitement sauvegard en utilisant les options CURRENT
CONTROLFILEouINCLUDE CURRENT CONTROLFILEdanslacommandeBACKUP.Demme,lefichierdeparamtresserveur
peuttreexplicitementsauvegardenutilisantloptionSPFILE.
Exemple :
BACKUP TABLESPACE data,indx INCLUDE CURRENT CONTROLFILE ;
BACKUP CURRENT CONTROLFILE ;
BACKUP AS COPY CURRENT CONTROLFILE ;BACKUP SPFILE ;
Silasauvegardeautomatiquedufichierdecontrleatactive,lefichierdecontrleoulefichierdeparamtres
serveursontsauvegardsendoublelorsquilssontexplicitementsauvegards.
Lefichierdecontrleetlefichierdeparamtresserveursontsauvegardsdansunjeudesauvegardespar.
La sauvegarde automatique du fichier de contrle est plus intressante quune sauvegarde manuelle,
notamment car RMAN peut la restaurer automatiquement en cas de besoin (ce nest pas le cas avec une
sauvegarde manuelle). De plus, dans cette configuration, le fichier de contrle est automatiquement sauvegard
lorsquelaconfigurationdesfichiersdelabasededonneschange.

5.Sauvegardedesfichiersdejournalisationarchivs
Si les fichiers de journalisation ne sont pas archivs en double sur des disques spars, ou ne sont pas archivs
danslazonedercuprationrapide(quidoitnormalementtreundisquespar),ilestvivementconseilldeles
sauvegarder cesonteuxeneffetquipermettentdegarantirunerestaurationcomplte.
Les fichiers de journalisation archivs peuvent tre sauvegards en utilisant les options ARCHIVELOG ou PLUS
ARCHIVELOGdanslacommandeBACKUP.
Exemple :
BACKUP ARCHIVELOG ALL ;<$IRMAN;BACKUP ARCHIVELOG>
BACKUP ARCHIVELOG FROM TIME SYSDATE-1 DELETE ALL INPUT ;
BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG FROM TIME SYSDATE-7
NOT BACKED UP 2 TIMES ;
BACKUP DATABASE PLUS ARCHIVELOG ;
BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT ;

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Dans les deux cas, si les fichiers de journalisation sont archivs vers plusieurs destinations, une seule copie est
sauvegardepourchaquenumrodesquencedejournalisation.
LacommandeBACKUP ARCHIVELOG ciblepermetdesauvegarderlesfichiersdejournalisationdsignsparlaclause
cible.Laclausecibleoffrediffrentespossibilitsparmilesquelles :
ALL
Touslesfichiersdejournalisationarchivs.Nepeutpastrecombineavecdautresoptions.
FROM TIME date
Touslesfichiersdejournalisationarchivsdepuisunecertainedate.
UNTIL TIME date
Touslesfichiersdejournalisationarchivsavantunecertainedate.
TIME BETWEEN date1 AND date2
Touslesfichiersdejournalisationarchivsentredeuxdates.
Silacommandeinclutlefichierdejournalisationleplusrcent(optionALLouabsencedoptionUNTIL)etquelabase
dedonneestouverte,RMANcommencepararchivertouslesfichiersdejournalisationenlignequinontpasencore
t archivs (et donc notamment le courant). De cette manire, toute lactivit de journalisation gnre avant le
dbutdelacommandeestsauvegarde.
La commande BACKUP ... PLUS ARCHIVELOG permet de sauvegarder les fichiers de journalisation en plus dautres
lments(maisdansunjeudesauvegardespar).Cettecommandeeffectuelesoprationssuivantes :

archivagedufichierdejournalisationcourant
sauvegarde de tous les fichiers de journalisation archivs (quivalent la commande BACKUP ARCHIVELOG
ALL)

sauvegardedesautreslments

denouveau,archivagedufichierdejournalisationcourant

sauvegardedesfichiersdejournalisationarchivsgnrsdepuisledbutdelasauvegarde.

De cette manire, toutes les sauvegardes de fichiers de donnes effectues pendant lopration (dans un tat
incohrent)sontexploitablescartouslesfichiersdejournalisationncessairesonttsauvegards.
UtilisationdeloptionNOTBACKEDUP
LoptionNOT BACKED UPpeuttreutiliseenplus,pournesauvegarderquelesfichiersdejournalisationarchivsqui
nontpasdjtsauvegardsuncertainnombredefoisoudepuisuncertaintemps.
UtilisationdeloptionDELETE[ALL]INPUT
Loption DELETE [ALL] INPUT peut tre utilise pour supprimer les fichiers de journalisation archivs qui viennent
dtresauvegards.
Si les fichiers de journalisation sont archivs dans une seule destination, il ny a pas de diffrence entre loption
DELETE INPUTetloptionDELETE ALL INPUT.
Silesfichiersdejournalisationsontarchivsversplusieursdestinations,ilyaunediffrenceentrelesdeuxoptions :

DELETE INPUTsupprimeuniquementlacopiedufichierdejournalisationquiatutilispourlasauvegarde.

DELETE ALL INPUTsupprimetouteslescopiesdufichierdejournalisationsauvegard.

ENI Editions - All rights reserved - Algeria Educ

- 5-

6.Sauvegardeincrmentale
Avec RMAN, il est possible de raliser des sauvegardes incrmentales, de la totalit de la base de donnes, de
tablespacesindividuelsoudefichiersdedonnesindividuels.Lobjectifestdenesauvegarderquelesblocsquiont
t modifis depuis la dernire sauvegarde. Les sauvegardes incrmentales prsentent comme principal intrt de
rduirelatailledessauvegardes,notammentlorsquelactivitdemisejourestrelativementfaiblesurlabasede
donnes.
Pour raliser une sauvegarde incrmentale, il suffit dinclure loption INCREMENTAL LEVEL n [CUMULATIVE] dans la
commandeBACKUP.
Exemple :
BACKUP INCREMENTAL LEVEL 0 DATABASE TAG=dbinc0 ;
BACKUP INCREMENTAL LEVEL 1 DATABASE TAG=dbinc1 ;
Unesauvegardeincrmentalepeuttredeniveau0oudeniveau1,diffrentielleoucumulative :

Une sauvegarde incrmentale de niveau 0 sauvegarde toujours, tous les blocs utiliss des fichiers de
donnes. Elle est quivalente une sauvegarde complte (mais une sauvegarde complte nest pas
considreparRMANcommeunesauvegardeincrmentaledeniveau0).
Une sauvegarde incrmentale diffrentielle de niveau 1 sauvegarde tous les blocs modifis depuis la
derniresauvegardeincrmentaledeniveau0ou1.Cestlecomportementpardfaut.

Unesauvegardeincrmentalecumulativedeniveau1sauvegardetouslesblocsmodifisdepuisladernire
sauvegardeincrmentaledeniveau0.

Les sauvegardes incrmentales cumulatives sont plus intressantes pour la rapidit de rcupration (moins de
sauvegardesintermdiairesappliquer),maisncessitentplusdespacedisque.
Lorsdunesauvegardeincrmentaledeniveau1,RMANestobligdeliretouslesblocsutilisspourtrouverceuxqui
ont t modifis et doivent donc tre sauvegards. En consquence, la dure de la sauvegarde nest pas
sensiblementrduiteparrapportunesauvegardedeniveau0(pasdegainsurlalecture,simplegainsurlcriture).
Sivoussouhaitezrduireladuredelasauvegarde,vouspouvezactiverlafonctionnalitdetracedesblocsmodifis
(block change tracking).Lorsquecettefonctionnalitestactive,Oraclegardeunetracedesblocsmodifisdansun
fichier.Lorsdunesauvegardeincrmentaledeniveau1,RMANnaplusbesoindeparcourirtouslesblocsutiliss il
emploielefichierdetracedesblocsmodifispouridentifierlesblocssauvegarder.
Pouractiverlafonctionnalitdetracedesblocsmodifis,vouspouvezutiliserlordreSQLsuivant(cenestpasune
commandeRMAN) :
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE fichier;
fichierdonnelechemincompletetlenomdufichierdetrace.

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

ExempledactivationpartirdeRMANenutilisantlacommandeSQL :
RMAN> SQL "ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE
F:\oradata\HERMES\block_change_tracking.trc";
Il ny a pas de recommandation particulire concernant lemplacement du fichier vous pouvez le placer dans
lenvironnementdelabasededonnesoudanslazonedercuprationrapide.
Lefichierdetracedesblocsmodifisnestpasspcialementvolumineux Oracleannonceunetaillede1/30000dela
tailledetouslesblocstracer,indpendantedelafrquencedemisejour.Lefichieraunetailleminimumde10Mo
etgrossitparpasde10Mo.
LavueV$BLOCK_CHANGE_TRACKING<donnedesinformationssurlatracedesblocsmodifis :
SQL> SELECT * FROM v$block_change_tracking;
STATUS
FILENAME
BYTES
---------- ------------------------------------------- --------ENABLED
F:\ORADATA\HERMES\BLOCK_CHANGE_TRACKING.TRC 11599872
Silefichierdetraceestperduouendommag,labasededonnesnepourrapastreouverte(elleresteraentat
MOUNT). Pour ouvrir la base, il faut dsactiver la trace, et ventuellement la ractiver si vous souhaitez continuer
utiliserlafonctionnalit.Ilnexistepasdepossibilitdesauvegardeetderestaurationdufichierdetrace.
Pourdplacerlefichierdetrace,vouspouvezutiliserlordreSQLALTER DATABASE RENAME FILE,basemonte.
Pourdsactiverlafonctionnalitdetracedesblocsmodifis,vouspouvezutiliserlordreSQLsuivant :
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
Aprsactivationdelatrace,lapremiresauvegardeincrmentaledeniveau0devraparcourirtouslesblocsutiliss
carlefichierdetracenerefltepasencorelestatutdesblocs.Ilenestdemmeaprsunerecrationdufichierde
trace.
Employer ou non un fichier de trace des blocs modifis ne change rien aux commandes utiliser pour raliser des
sauvegardesincrmentales.Silafonctionnalitestactive,RMANlexploite sinonilsenpasse.
Il existe une autre fonctionnalit intressante concernant les sauvegardes incrmentales : la possibilit de raliser
une sauvegarde sous forme de copie image et de mettre cette copie image jour par application rgulire de
sauvegardesincrmentales(IncrementallyUpdatedBackup).Pourensavoirplus,consultezladocumentationOracle
DatabaseBackupandRecoveryUsersGuide.

7.Exemplesdescnario
a.Prambule
Lesscnariosprsentsicisappuientsurdeuxhypothses :

Unezonedercuprationrapideestutilise.

Lasauvegardeautomatiquedesfichiersdecontrleatactive.

b.Sauvegardecompltebaseferme(cohrente)
Lescommandessuivantespermettentderaliserunesauvegardecompltebaseferme(donccohrente) :
SHUTDOWN IMMEDIATE ;
STARTUP MOUNT ;
BACKUP DATABASE ;
SQL "ALTER DATABASE OPEN" ;

#
#
#
#

arrter la base
monter la base
sauvegarder la base
ouvrir la base

CettesauvegardeestunexempletypiquedecequiestfaitlorsquelabasefonctionneenmodeNOARCHIVELOG.

c.Sauvegardecompltebaseouverte(incohrente)

ENI Editions - All rights reserved - Algeria Educ

- 7-

La commande suivante permet de raliser une sauvegarde complte base ouverte (donc incohrente), avec
sauvegarde des fichiers de journalisation archivs, et suppression des fichiers de journalisation archivs
sauvegards :
BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
CettesauvegardenepeuttreeffectuequelorsquelabasefonctionneenmodeARCHIVELOG.

d.Sauvegardepartiellebaseouverte
Danscescnario,latotalitdelabaseestsauvegardeentroisfoissurtroisjours :

Sauvegarde1 : fichiersdedonnes1et2

BACKUP DATAFILE 1,2 PLUS ARCHIVELOG DELETE ALL INPUT;

Sauvegarde2 : fichiersdedonnes3et4

BACKUP DATAFILE 3,4 PLUS ARCHIVELOG DELETE ALL INPUT;

Sauvegarde3 : lereste

BACKUP DATABASE NOT BACKED UP SINCE TIME=SYSDATE-3


PLUS ARCHIVELOG DELETE ALL INPUT;
Sur le principe, cest une variante du scnario prcdent. La commande pour la troisime sauvegarde permet de
sauvegardertoutcequinapastsauvegarddepuistroisjours,ycompristoutnouveaufichierdedonnes.
Ilesttechniquementpossiblederaliserdessauvegardespartielles,baseferme,maiscessauvegardesnesont
exploitablesquesilabasededonnesfonctionneenmodeARCHIVELOG.Donc,autantlesraliserbaseouverte.

e.Sauvegardeincrmentale
Danscescnario,dessauvegardesincrmentalescumulativessontralisessuruncycledunesemaine :

Dimanche : sauvegardeincrmentaledeniveau0

BACKUP INCREMENTAL LEVEL 0 DATABASE ;

Lundiausamedi : sauvegardeincrmentalecumulativedeniveau1

BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE ;


Danscetexemple,noussupposonsquelabasededonnesfonctionneenmodeARCHIVELOG,cequinouspermetde
raliser la sauvegarde base ouverte pour tre tout fait rigoureux, il faudrait en plus soccuper des fichiers de
journalisationarchivs(ajouteruneclausePLUS ARCHIVELOGparexemple).
Ce type de sauvegarde peut aussi tre ralis si la base de donnes fonctionne en mode NOARCHIVELOG, en
ajoutantlescommandessuivantes :
SHUTDOWN IMMEDIATE ;
STARTUP MOUNT ;
BACKUP INCREMENTAL... ;
SQL "ALTER DATABASE OPEN" ;

- 8-

openmirrors.com

#
#
#
#

arrter la base
monter la base
sauvegarder la base ici
ouvrir la base

ENI Editions - All rights reserved - Algeria Educ

LerfrentielRMAN
1.Trouverdesinformationssurlessauvegardes
a.LacommandeLIST
LacommandeLISTpermetdinterrogerlerfrentielRMANpourafficherdesinformationssurlessauvegardesetles
fichiersdejournalisationarchivs.
Syntaxe1
LIST cible [ BY FILE | SUMMARY ] [ filtre_sauvegarde ];
- cible
{ BACKUP | COPY } [ OF objets ]
BACKUPSET
- objets
DATABASE
DATAFILE liste_numros_ou_noms
TABLESPACE liste_noms
CONTROLFILE
SPFILE
ARCHIVELOG { ALL | filtre_archive }
- filtre_archive
FROM TIME date
UNTIL TIME date
TIME BETWEEN date1 AND date2
- filtre_sauvegarde
TAG [=] nom
COMPLETED { AFTER date1
| BEFORE date2
| BETWEEN date1 AND date2 }
Syntaxe2
LIST { BACKUPSET | BACKUPPIECE } { liste_cls | TAG [=] nom };
Syntaxe3
LIST ARCHIVELOG { ALL | filtre_archive } [info_sauvegarde];
- info_sauvegarde
BACKED UP n TIMES TO DEVICE TYPE [DISK | media]

Touteslesoptionspossiblesnesontpasprsentesici.

Premiresyntaxe
LapremiresyntaxepermetdafficherdesinformationssurlessauvegardesenregistresdanslerfrentielRMAN.
Pardfaut,lescommandesLIST BACKUP,LIST COPYetLIST BACKUPSETlistenttousleslmentsenregistrsdansle
rfrentielRMAN.
Dans le cas des commandes LIST BACKUP et LIST COPY, il est possible de spcifier un ou plusieurs objets pour
nafficherquelessauvegardesdesobjetsenquestion.
Exemple :
LIST
LIST
LIST
LIST
LIST
LIST

BACKUP
BACKUP
BACKUP
BACKUP
BACKUP
BACKUP

OF
OF
OF
OF
OF
OF

DATABASE ; # nimporte quel fichier de la base


DATAFILE 1,E:\ORADATA\HERMES\DATA01.DBF ;
TABLESPACE system,sysaux ;
CONTROLFILE SPFILE ;
ARCHIVELOG ALL ;
ARCHIVELOG UNTIL TIME SYSDATE-1 ;

ENI Editions - All rights reserved - Algeria Educ

- 1-

Ledernierexemplelistelessauvegardesdesfichiersdejournalisationarchivsilyaplusdunjour,quellequesoit
la date de la sauvegarde (peut dater de moins dun jour) il ne faut pas confondre le filtre de date darchivage
(optionfiltre_archive)etlefiltrededatedesauvegarde(optionfiltre_sauvegarde).
Loption filtre_sauvegarde permet de filtrer la liste grce un critre portant sur la sauvegarde : date de la
sauvegardeet/ounomassocilasauvegarde(optionTAGdelacommandeBACKUP).
Exemple :
LIST BACKUP
LIST BACKUP
LIST BACKUP
LIST BACKUP
COMPLETED

TAG=DBINC0 ;
COMPLETED AFTER SYSDATE-1 ;
TAG=DBINC0 COMPLETED AFTER SYSDATE-1 ;
OF ARCHIVELOG UNTIL TIME SYSDATE-1
AFTER SYSDATE-1 ;

Le dernier exemple liste les sauvegardes des fichiers de journalisation archivs il y a plus dun jour mais
sauvegardsilyamoinsdunjour.
Les commandes LIST BACKUP OF et LIST BACKUPSET listent les sauvegardes par jeu de sauvegarde, avec un
affichagedtailldonnantlecontenudechaquesauvegarde.
Exemple(extrait)
RMAN> LIST BACKUP OF DATABASE;
Liste des ensembles de sauvegarde
===================
BS Key Type LV Size
Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ --------------17
Full
75.78M
DISK
00:00:45
05/08/08
BP Key: 17
Status: AVAILABLE Compressed: YES Tag:
TAG20080805T080633
Piece Name: H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\BACKUPSET\
2008_08_05\O1_MF_NNNDF_TAG20080805T080633_49HVH9KL_.BKP
Liste des fichiers de donnes dans lensemble de sauvegarde 17
File LV Type Ckp SCN
Ckp Time Name
---- -- ---- ---------- -------- ---1
Full 410531
05/08/08 E:\ORADATA\HERMES\SYSTEM01.DBF
2
Full 410531
05/08/08 E:\ORADATA\HERMES\SYSAUX01.DBF
3
Full 410531
05/08/08 E:\ORADATA\HERMES\UNDOTBS01.DBF
4
Full 410531
05/08/08 E:\ORADATA\HERMES\DEFTBS01.DBF
5
Full 410531
05/08/08 E:\ORADATA\HERMES\DATA01.DBF
6
Full 410531
05/08/08 E:\ORADATA\HERMES\INDX01.DBF
Lacolonne"ClBS"donnelenumro(cl)attribuparRMANaujeudesauvegarde.
LoptionSUMMARYpermetdobtenirunaffichagersum(pasdedtailsurlecontenudessauvegardes),organispar
jeudesauvegarde.
LoptionBY FILEpermetdobtenirunaffichagersum,organisparfichiersauvegard.
Deuximesyntaxe
La deuxime syntaxe permet dafficher des informations sur des jeux de sauvegarde (BACKUPSET)oulmentsde
sauvegarde(BACKUPPIECE)prcis(soitparunelistedecls,soitparlenomassocilasauvegardegrceloption
TAGdelacommandeBACKUP).
Exemples
LIST BACKUPSET 8;
LIST BACKUPSET TAG=DBINC0 ;
LIST BACKUPPIECE 76 ;
Lacldunlmentdesauvegarde("ClBP")nestpasforcmentgalelacldujeudesauvegarde("ClBS"),
car un jeu de sauvegarde peut avoir plusieurs lments de sauvegarde, ce qui gnre un dcalage dans la
numrotation.
Troisimesyntaxe
Latroisimesyntaxepermetdafficherdesinformationssurlesfichiersdejournalisationarchivsconsidrscomme
disponiblesparRMAN,cestdirenonsupprimsparRMAN(avecloptionDELETE INPUT).

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Exemples
LIST
LIST
LIST
TO
LIST
TO

ARCHIVELOG ALL ; # tous


ARCHIVELOG FROM TIME SYSDATE-1/24 ; # dans la dernire heure
ARCHIVELOG ALL BACKED UP 2 TIMES
DEVICE TYPE DISK ; # archives sauvegardes 2 fois sur disque
ARCHIVELOG ALL BACKED UP 0 TIMES
DEVICE TYPE DISK ; # archives jamais sauvegardes sur disque

b.LacommandeREPORT
LacommandeREPORTpermetderaliserdesinterrogationsplusvoluessurlerfrentielRMAN.
IlexistetroisutilisationsprincipalesdelacommandeREPORT :

listerleslmentsquincessitentunesauvegarde

listerlessauvegardesobsoltes

afficherlalistedesfichiersdedonnesdelabasededonnes.

Listerleslmentsquincessitentunesauvegarde
Syntaxe
REPORT NEED BACKUP [condition] [objets];<$IRMAN;REPORT NEED BACKUP>
- condition
DAYS [=] n
INCREMENTAL [=] n
RECOVERY WINDOW OF n DAYS
REDUNDANCY [=] n
- objets
DATABASE
DATAFILE liste_numros_ou_noms
TABLESPACE liste_noms
Pardfaut,lacommandeREPORT NEED BACKUPaffichelalistedesfichiersquincessitentunesauvegarde,entenant
comptedelapolitiquedeconservationconfigure(CONFIGURE RETENTION POLICY).
LoptionconditionpermetdeprciserlecritrequelacommandeREPORTdoitutiliserpourdterminersiunfichiera
besoindtresauvegard.Lesconditionspossiblessont :
DAYS [=] n
Fichiers de donnes qui ncessitent plus de n jours dapplication de fichiers de journalisation archivs pour tre
rcuprsencasdincident.
INCREMENTAL [=] n
Fichiersdedonnesquincessitentplusde napplicationsdesauvegardesincrmentalespourtrercuprsen
casdincident.
RECOVERY WINDOW OF n DAYS
Unefentredercuprationparticulire(mmesyntaxequedanslacommandeCONFIGURE RETENTION POLICY).
REDUNDANCY [=] n
Uneredondanceparticulire(mmesyntaxequedanslacommandeCONFIGURE RETENTION POLICY).
Loptionobjetspermetdesintresserdestablespacesoudesfichiersdedonnesprcis.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Avantdexcutercettecommande,ilpeuttreutiledexcuterlacommandeCROSSCHECK(voirplusloin)pour
mettrejourlestatutdessauvegardesdanslerfrentielRMAN.

Listerlessauvegardesobsoltes
Syntaxe
REPORT OBSOLETE [condition];
- condition
RECOVERY WINDOW OF n DAYS
REDUNDANCY [=] n
Pardfaut,lacommandeREPORT OBSOLETEaffichelessauvegardesobsoltesentenantcomptedelapolitiquede
conservationconfigure(CONFIGURE RETENTION POLICY).
Loption condition permet de prciser le critre que la commande REPORT doit utiliser pour dterminer si une
sauvegardeestobsolte.LasyntaxeestlammequedanslacommandeCONFIGURE RETENTION POLICY.
Avantdexcutercettecommande,ilpeuttreutiledexcuterlacommandeCROSSCHECK(voirplusloin)pour
mettrejourlestatutdessauvegardesdanslerfrentielRMAN.

Afficherlalistedesfichiersdedonnesdelabasededonnes
Syntaxe
REPORT SCHEMA ;

2.GrerlerfrentielRMAN
a.LacommandeCROSSCHECK
La commande CROSSCHECK permet de vrifier que les informations enregistres dans le rfrentiel RMAN
correspondent bien des fichiers qui existent physiquement. Un dcalage peut se produire si un fichier est
directement supprim au niveau du systme dexploitation. La commande CROSSCHECK met jour le statut de
llmentdanslerfrentielRMANmaisnesupprimerien(nifichierphysique,nienregistrementdanslerfrentiel).
Lesstatutspossiblessontlessuivants :
EXPIRED
Lobjetnapasttrouvauniveaudusystmedexploitation.
AVAILABLE
LobjetestdisponibleetpeuttreutilisparRMAN.
UNAVAILABLE
LobjetnestpasdisponibleetnepeutpastreutilisparRMAN(suitelutilisationdelacommande CHANGE ...
UNAVAILABLEvoirladocumentationOracle).
Un enregistrement qui a t marqu EXPIRED lors dun CROSSCHECK peut repasser AVAILABLE lors dun nouveau
CROSSCHECK sil na t que temporairement inaccessible. Vous pouvez aussi utiliser la commande CHANGE ...
AVAILABLEpourremettrelestatut AVAILABLEunenregistrementsilefichierphysiqueestdenouveauaccessible
(voirladocumentationOracle).
Syntaxe1
CROSSCHECK cible [ filtre_sauvegarde ] ;
- cible
{ BACKUP | COPY } [ OF objets ]
BACKUPSET
- objets
- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

DATABASE
DATAFILE liste_numros_ou_noms
TABLESPACE liste_noms
CONTROLFILE
SPFILE
ARCHIVELOG { ALL | filtre_archive }
Syntaxe2
CROSSCHECK { BACKUPSET | BACKUPPIECE } { liste_cls | TAG [=] nom };
Syntaxe3
CROSSCHECK ARCHIVELOG { ALL | filtre_archive };

Touteslesoptionspossiblesnesontpasprsentesici.
Les variantes de syntaxe et options sont les mmes que pour la commande LIST.Le statut est affich dans le
rsultat de la commande LIST. La commande LIST EXPIRED, variante de la commande LIST, permet de lister les
lmentsquiontlestatutEXPIRED.
Exemple1
RMAN> CROSSCHECK BACKUP ;
utilisation du canal ORA_DISK_1
lment de sauvegarde vrifi : repr comme tant EXPIRED
descripteur dlment de sauvegarde=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\
BACKUPSET\2008_08_05\O1_MF_NNNDF_TAG20080805T080633_49HVH9KL_.BKP RECID=17
STAMP=661939593
lment de sauvegarde vrifi : repr comme tant AVAILABLE
descripteur dlment de sauvegarde=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\
AUTOBACKUP\2008_08_05\O1_MF_S_661939648_49HVK1Z7_.BKP RECID=18 STAMP=661939649
2 objets contre-vrifis
RMAN> LIST EXPIRED BACKUP ;
Liste des ensembles de sauvegarde
===================
BS Key Type LV Size
Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ --------------17
Full
75.78M
DISK
00:00:45
05/08/08
BP Key: 17
Status: EXPIRED
Compressed: YES Tag: TAG20080805T080633
Piece Name: H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\BACKUPSET\
2008_08_05\O1_MF_NNNDF_TAG20080805T080633_49HVH9KL_.BKP
...
Exemple2
RMAN> CROSSCHECK ARCHIVELOG ALL ;
canal libr : ORA_DISK_1
canal affect : ORA_DISK_1
canal ORA_DISK_1 : SID=186 type dunit=DISK
chec de la validation du journal darchivage
nom de journal darchivage=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\
ARCHIVELOG\2008_08_05\O1_MF_1_40_49HWKM2G_.ARC RECID=12 STAMP=661940692
validation russie du journal darchivage
nom de journal darchivage=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\
ARCHIVELOG\2008_08_05\O1_MF_1_41_49HWKN89_.ARC RECID=14 STAMP=661940692
...
RMAN> LIST EXPIRED ARCHIVELOG ALL ;
Liste des copies des journaux darchivage dont le nom est db_unique_name
HERMES
========================================================================
Key
Thrd Seq
S Low Time
------- ---- ------- - -------12
1
40
X 05/08/08
ENI Editions - All rights reserved - Algeria Educ

- 5-

Name: H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ARCHIVELOG\
2008_08_05\O1_MF_1_40_49HWKM2G_.ARC

b.LacommandeDELETE
La commande DELETE peut tre utilise pour supprimer des sauvegardes. Elle supprime les fichiers physiques et
lenregistrementdanslerfrentielRMAN.
LacommandeDELETEproposedeuxvariantesprincipalespour :

supprimerdessauvegardesoudesfichiersdejournalisationspcifiques

supprimerlessauvegardesobsoltes.

Supprimerdessauvegardesoudesfichiersdejournalisationspcifiques
Syntaxe1
DELETE [FORCE] [NOPROMPT] [EXPIRED] cible [ filtre_sauvegarde ] ;
- cible
{ BACKUP | COPY } [ OF objets ]
BACKUPSET
- objets
DATABASE
DATAFILE liste_numros_ou_noms
TABLESPACE liste_noms
CONTROLFILE
SPFILE
ARCHIVELOG { ALL | filtre_archive }
- filtre_archive
FROM TIME date
UNTIL TIME date
TIME BETWEEN date1 AND date2
- filtre_sauvegarde
TAG [=] nom
COMPLETED { AFTER date1
| BEFORE date2
| BETWEEN date1 AND date2 }
Syntaxe2
DELETE [FORCE] [NOPROMPT] [EXPIRED] { BACKUPSET | BACKUPPIECE }
{ liste_cls | TAG [=] nom };
Syntaxe3
DELETE [FORCE] [NOPROMPT] [EXPIRED] ARCHIVELOG { ALL | filtre_archive }
[info_sauvegarde];
- info_sauvegarde
BACKED UP n TIMES TO DEVICE TYPE [DISK | media]
LesvariantesdesyntaxeetoptionssontlesmmesquepourlacommandeLIST.
Loption EXPIRED permet de supprimer les lments marqus EXPIRED dans le rfrentiel RMAN (ventuellement,
combinedautrescritres).
Pardfaut,RMANlistelesfichiersquilsapprtesupprimeretdemandeconfirmationdelasuppression.Loption
NOPROMPT permet de supprimer la demande de confirmation (mais la liste des fichiers supprims est toujours
affiche).
La commande DELETE gnre une erreur sil nexiste pas de concordance entre le rfrentiel et les fichiers
physiques :

- 6-

openmirrors.com

UnfichierestmarquEXPIREDdanslerfrentielmaisexistephysiquement.

ENI Editions - All rights reserved - Algeria Educ

UnfichierestmarquAVAILABLEdanslerfrentielmaisnexistepasphysiquement.

Pourrsoudreceproblme,vouspouvezauchoix :

excuterlacommandeCROSSCHECKpourmettrejourlestatutdesfichiersdanslerfrentiel

utiliserloptionFORCEdelacommandeDELETE

utiliser la commande CHANGE ... UNCATALOG pour supprimer du rfrentiel une rfrence un fichier qui
nexisteplus(voirladocumentationOracle).

Rflchissezbienavantdesupprimerquoiquecesoit.
Exemplesdappel
# supprimer les sauvegardes ayant un certain nom
DELETE BACKUP OF DATABASE TAG=DBINC0 ;
# supprimer les sauvegardes du fichier de paramtres serveur
# ralises il y a plus de 7 jours
DELETE NOPROMPT BACKUP OF SPFILE COMPLETED BEFORE SYSDATE-7 ;
# supprimer toutes les sauvegardes marques EXPIRED
DELETE EXPIRED BACKUP ;
# supprimer tous les fichiers de journalisation archivs gnrs
# il y plus dun jour et sauvegard trois fois sur disque
DELETE ARCHIVELOG UNTIL TIME SYSDATE-1 BACKED UP 3 TIMES TO DISK ;
Supprimerlessauvegardesobsoltes
Syntaxe2
DELETE [FORCE] [NOPROMPT] OBSOLETE [ condition ] ;
- condition
RECOVERY WINDOW OF n DAYS
REDUNDANCY [=] n
Lorsquelacommandeestappelesansoption,RMANsupprimelessauvegardesobsoltesentenantcomptedela
politiquedeconservationconfigure(CONFIGURE RETENTION POLICY).
Loption condition permet de prciser le critre que la commande DELETE doit utiliser pour dterminer si une
sauvegardeestobsolte.LasyntaxeestlammequedanslacommandeCONFIGURE RETENTION POLICY.
Si vous utilisez une zone de rcupration rapide, RMAN supprimera automatiquement les sauvegardes obsoltes
(comptetenudelapolitiquedeconservationconfigure),maisuniquementsilmanquedeplace.

c.LacommandeCATALOG
LacommandeCATALOGpermetdindiquerRMANlexistencedefichiersdejournalisationarchivsoudlmentsde
sauvegardequinesontpasenregistrsdanslerfrentielRMAN.
Cettesituationpeutseproduiredansplusieurscas :

VousavezutilislacommandeDELETEmauvaisescientetvousaveztoujourslefichierphysique.
Vousavezeffectuunercuprationavecunesauvegardedufichierdecontrle,quinecontientdoncpas
lesinformationssurcequiatfaitavecRMANdepuislasauvegardeenquestion.
Vousavezrecrlefichierdecontrle(ilnecontientplusrien).
Un enregistrement a t supprim du fichier de contrle du fait de la valeur du paramtre
CONTROL_FILE_RECORD_KEEP_TIME,maislefichierphysiqueexistetoujoursetvousenavezbesoinpourune
rcupration.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Vousavezdplacunfichierphysique.

Syntaxe
CATALOG { ARCHIVELOG | BACKUPPIECE } liste_fichiers ;
CATALOG { RECOVERY AREA | DB_RECOVERY_FILE_DEST } [NOPROMPT] ;
CATALOG START WITH chemin [NOPROMPT] ;
Lapremiresyntaxepermetdecataloguerdesfichiersprcis.Sivouscataloguezunlmentdjcatalogu,RMAN
supprimelanciennerfrenceavantdecrerlanouvelle.
Ladeuximesyntaxepermetdecataloguertouslesfichiersstocksdanslazonedercuprationrapide(RECOVERY
AREAetDB_RECOVERY_FILE_DESTsontsynonymes).
Latroisimesyntaxepermetdecataloguertouslesfichiersdontlenomcompletcommenceparunecertainechane
decaractres(nepeutpascontenirdecaractresjoker).
Avec les deux dernires syntaxes, RMAN demande confirmation avant de cataloguer un fichier loption NOPROMPT
permetdesupprimerlademandedeconfirmation.Parailleurs,RMANnecataloguepaslesfichiersdjcatalogus.

- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Rcupration
1.Vuedensemble
Lastratgiedercuprationdpenddeplusieursfacteurs :

Delanaturedu(des)fichier(s)endommag(s)ouperdu(s) :

fichierdedonnes

fichierdecontrle

fichierdeparamtresserveur

fichierdejournalisation.

Dumodedefonctionnementdelabase :

ARCHIVELOG

NOARCHIVELOG.

Dessauvegardesdisponibles.

Quefaireencasdeproblme?
1.identifierlanatureduproblme
2. dfinir le mode opratoire en tenant compte du mode de fonctionnement de la base et des sauvegardes
disponibles.

Surtout,nevousprcipitezpasetnhsitezpasvousfaireaiderparlesupportOracle.
Depuis la version 11, Oracle propose un conseiller pour la rcupration des donnes (leData Recovery Advisor)qui
permet de diagnostiquer et rsoudre facilement les incidents (perte ou corruption) des donnes sur disque. Ce
nouveloutilestprsentdanslasectionDataRecoveryAdvisor.
Dans la suite du document, les termes "perdu" et "endommag" seront indiffremment utiliss pour dsigner
lincident danslapratique,quelefichiersoitperduousimplementendommag,lesprocduresderestaurationsont
lesmmes.
Une opration de rcupration seffectue essentiellement avec RMAN. Pour certaines tapes, SQL*Plus peut tre
ncessaire, essentiellement pour interroger quelques vues du dictionnaire de donnes une connexion AS SYSDBA
serancessairesilabasenestpasouverte.
Un conseil, avant de commencer toute opration de rcupration, ralisez si possible une sauvegarde
compltedelabaseendommage.Celapeutfournirunpointderetourencasdaggravationdelasituation
par une mauvaise manipulation. Au minimum, ralisez une sauvegarde du fichier de contrle et des fichiers de
journalisationenligne(parsimplecopieauniveaudusystmedexploitation).
Dans une opration de "restauration" ou de "rcupration", il existe en fait deux tapes bien prcises et bien
distinctes :

Ltapederestauration(restore)consisteextrairedunesauvegardelesfichiersncessaires.
Ltape de rcupration (recover) consiste appliquer les fichiers de journalisation aux fichiers rcuprs de la
sauvegarde.

Pourtrerigoureux,ilfaudraitdoncvoqueruneoprationde"restaurationetrcupration".

ENI Editions - All rights reserved - Algeria Educ

- 1-

2.Principesgnrauxdelarcupration
a.EnmodeNOARCHIVELOG
EnmodeNOARCHIVELOG,lemodeopratoireestonnepeutplussimple :

restaurerladerniresauvegardecompltedelabase

redmarrerlabase.

Touteslesmodificationsapportesdepuisladerniresauvegardesontperdues.
Apriori,larestaurationenmodeNOARCHIVELOG ne permet pas de ramener la base de donnes ltatoellese
trouvait juste avant lincident elle permet juste de ramener la base de donnes ltat o elle se trouvait au
momentdelasauvegarde.
Nanmoins,danscertainessituations,ilpeuttrepossibledercuprertoutoupartiedesmodificationsapportes
depuisladerniresauvegarde.
Lobjectifdesindicationsdonnesciaprsestdemontrerquetoutnestpasforcmentperdu.Encasde
problmeenmodeNOARCHIVELOG,ilnefautpashsiterappelerlesupportOraclepourtenteraveceuxde
raliser la rcupration la plus complte possible. Par contre, pour tre certain de garantir une rcupration
compltedanstouteslessituations(etsimplifierleprocessusdercupration),ilfautfairefonctionnerlabaseen
modeARCHIVELOG.
Lessituationssontlessuivantes :

Uncyclecompletdebasculementdesfichiersdejournalisationnapaseulieudepuislasauvegarde.
Le fichier de donnes perdu nest pas critique pour la base de donnes (nappartient pas au tablespace
SYSTEM,niautablespacedannulation actif), ni pour lapplication (ce nestpasletablespaceprincipalde
lapplication).
Touslesfichiersdecontrlesontperdusmaislesautresfichiers(donnesetjournalisation)sontintacts.

Si les fichiers de journalisation nont pas subi un cycle complet de basculements depuis la sauvegarde utilise,
touteslesmisesjoureffectuesdepuislasauvegardeenquestionsontencore"disponibles"danslesfichiersde
journalisation.Danscecas,ilfautraliserunercuprationcommesilabasededonnestaitenmodeARCHIVELOG
(voirlesscnarioscorrespondants).
Silefichierdedonnesperdunestpascritiquepourlabasededonnesnipourlapplication,etqueleproblme
soitsurvenualorsquelabasededonnestaitarrte,lasituationestpluttfavorablecarlesfichiersquirestent
sontcohrentsentreeux : siceproblmedefichiernexistaitpas,leprochaindmarragenencessiteraitpasde
rcuprationdelinstance.
Danscecas,ilestpossible :

DedmarrerlabasededonnesentatMOUNT

SQL> CONNECT / AS SYSDBA


SQL> STARTUP MOUNT

DemettrelesfichiersdedonnsconcernsOFFLINEavecloptionDROP

SQL> ALTER DATABASE DATAFILE


2 e:\oradata\HERMES\indx01.dbf OFFLINE DROP;

Douvrirlabasededonnes

SQL> ALTER DATABASE OPEN;

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Desupprimerletablespace

SQL> DROP TABLESPACE indx;

Puisderecrerletablespace(etventuellementsoncontenu)

SQL> CREATE TABLESPACE indx ... ;


SQL> CREATE INDEX ... ;
larrive,letablespaceestsupprim : cettetechniquenestdoncpasapplicablesilefichierdedonnesperduest
critique pour la base de donnes ou pour lapplication. Elle est, par contre, envisageable pour des tablespaces
contenantuniquementdesindex(lesdonnes,elles,nesontpasperdues).
Si le problme est survenu alors que la base tait en fonctionnement, la situation est plus problmatique car les
fichiersdedonnesrestantsnesontpeuttrepascohrentsetilnexistepasvraimentdemoyensdelesavoir.
Sils ne sont pas cohrents, Oracle aura besoin des fichiers de journalisation en ligne pour les rendre cohrents
(cestlarcuprationdelinstance"classique").Silesfichiersdejournalisationsontprsents,ousiseulslesfichiers
dejournalisation INACTIVE sont perdus, la technique prsente prcdemment pourra tre utilise si les fichiers
de journalisationCURRENT ouACTIVE sont perdus, la technique ne pourra pas tre employe (il faut repartir de la
derniresauvegarde).
Touslesfichiersdecontrlesontperdus.Danscettesituationcritiqueetdlicate,pourlaquelleilexistediffrentes
possibilitsdercupration,ladocumentationOraclerecommandedecontacterlesupportOracle.

b.EnmodeARCHIVELOG
EnmodeARCHIVELOG,lemodeopratoiredebasepourunepertedefichier(s)dedonnesestlesuivant :

restaurerladerniresauvegardedechaquefichierperdu

appliquerlesfichiersdejournalisation(archivespuisceuxenligne)

redmarrerlabase(silarcuprationnapastfaitebaseouverte).

Toutes les modifications apportes depuis les sauvegardes utilises sont rcupres. La rcupration est dite
complte.
Ce type de rcupration est simple et ne pose pas de problme sil reste au moins un fichier de contrle, un
membre par groupe de fichier de journalisation et que toutes les archives de fichiers de journalisation sont
disponibles.
Surlabasedecescnario,diffrentessituationspeuventconduireunercuprationincomplte :

volontairement,poursarrteravantunordreSQLmalencontreux
involontairement,sidesfichiersdejournalisationsontperdus(unearchiveoutoutungroupedefichiersde
journalisationenligne).

DanslaterminologieOracle,unercuprationincomplteestappelepointintimerecovery.
Sitouslesfichiersdecontrlesontperdus,sitoutungroupedefichiersdejournalisationestperdu,ousilmanque
unearchivedefichiersdejournalisation,larcuprationcomplteseraplusdlicateetdanscertainscasimpossible
(par exemple, sil manque une archive de fichier de journalisation) une rcupration incomplte reste alors
possibleetlabasenestpasrameneltatoellesetrouvaitjusteavantlincidentmaisuntatantrieur.
Danscertainessituations(suppressiondetablemalencontreuseparexemple),larcuprationincompltepeuttre
volontaire lencore,labasededonnesnestpasrameneltatoellesetrouvaitjusteavantlincidentmais
untatantrieur.
Quellequesoitloriginedelarcuprationincomplte,toutcequiatfait,aprslemomentquicorrespondltat
dercuprationdelabase,estperduetdoittrereprislamain : dansunesquencedapplicationdesfichiersde
journalisation,Oraclenepeutpas"sauter"quelquesordrespuiscontinuer.
Lorsdelarestaurationdessauvegardes,silessauvegardessontpartielles,ilfautprendrelasauvegardelaplus
rcentedechaquefichierendommag.

ENI Editions - All rights reserved - Algeria Educ

- 3-

3.Lesincidentssurlesfichiersdecontrleetdejournalisation
Les incidents sur les fichiers de contrle et les fichiers de journalisation peuvent tre classs en deux
catgories : "peugraves"et"trsgraves".
Incidentspeugraves :

pertedunouplusieursfichiersdecontrle,dumomentquilenresteaumoinsun

pertedunouplusieursfichiersdejournalisation,dumomentquilenresteaumoinsunpargroupe.

Incidentsplusgravesetpluscomplexestraiter :

pertedetouslesfichiersdecontrle : moyennementgravesilesautresfichierssontintacts
pertedetouslesmembresdungroupedefichiersdejournalisation : lagravitdpenddustatutdugroupe
perdu(CURRENT,ACTIVE,INACTIVE).

Cessituationssontvitessilonmultiplexecorrectementlesfichiersdecontrleetlesfichiersdejournalisation.La
perte de tous les fichiers de contrle nest pas la situation la plus complexe traiter, sil existe des sauvegardes
rcentes du fichier de contrle et si les autres fichiers (particulirement, les fichiers de journalisation) sont
intacts danscecas,unercuprationcomplteestpossible.
Lapertedetouslesmembresdungroupedefichiersdejournalisationestbienpluscomplexetraiter lasituation
dedpartdoittreanalyseavecsoin(statutdugroupeperdu,tatdesautresfichiers,etc.),afindechoisirlebon
modeopratoire.Pourlessituationscomplexes,ilestvivementconseilldesefaireaiderparlesupportOracle.

4.Identifierlanatureduproblme
a.Messagederreurconcernantlesfichiersdecontrle
Lesmessagesderreurslesplusfrquentssurlesfichiersdecontrlesontlessuivants :
ORA-00204: erreur lors
du fichier de contrle
ORA-00205: erreur lors
de contrle; consultez
ORA-00206: erreur lors
du fichier de contrle

de la lecture (bloc, nbre blocs)


de lidentification du fichier
le journal des alertes
de lcriture (bloc, nbre blocs)

Cesmessagesindiquentquaumoinsunfichierdecontrleestendommagouperdu ilfautconsulterlefichierdes
alertes de linstance pour en savoir plus, notamment pour dterminer les fichiers endommags et en dduire les
fichiers intacts, sil en reste. En cas de problme sur un fichier de contrle, linstance sarrte. Au redmarrage,
linstanceresteentatNOMOUNT.

b.Messagederreurconcernantlesfichiersdejournalisation
Lesmessagesderreurlesplusfrquentssurlesfichiersdejournalisationsontlessuivants :
ORA-00313: chec douverture des membres du groupe de journaux n, thread p
ORA-00315: journal n, thread p, numro de thread x incorrect
dans en-tte
ORA-00316: le journal n dans le thread p, type x dans len-tte,
nest pas un fichier journal
ORA-00317: le type de fichier x dans len-tte nest pas un fichier journal
ORA-00318: journal n, thread p, taille x de fich. attendue
ne correspond pas y
ORA-00319: journal n du thread p a un tat de rinitialisation incorrect
ORA-00320: impossible lire en-tte de fichier du journal n thread p
ORA-00321: fichier n, thread p, impossible de mettre jour len-tte
du fichier journal

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

CesmessagessaccompagnentdunouplusieursmessagesORA-00312donnantlenomdufichier :
ORA-00312: journal en ligne n thread p : fichier
Encasdeproblmesurtoutungroupedefichiersdejournalisation,linstancesarrte.Auredmarrage,linstance
resteentatMOUNT.
Encasdeproblme,ilfautconsulterlefichierdalertedelinstanceetlefichierdetraceduprocessusLGWR.

c.Messagederreurconcernantlesfichiersdedonnes
Ilyadenombreuxmessagesderreurpossiblesconcernantlesfichiersdedonnes,parexemple :
ORA-01157: impossible didentifier ou de verrouiller le fichier
de donnes n - voir le fichier de trace DBWR
CesmessagessaccompagnentdunouplusieursmessagesORA-01110donnantlenomdufichier :
ORA-01110: fichier de donnes n : fichier
EnmodeNOARCHIVELOG,silabasededonnesestouverteetquunproblmeseproduisesurunfichierdedonnes,
linstancesarrte.EnmodeARCHIVELOG,ilenestdemmemaisuniquementsilefichierdedonnesincriminestun
fichierdutablespaceSYSTEMouunfichierdedonnesdutablespacedannulationactif.
Audmarrage,linstanceresteentatMOUNT.
En cas de problme, il faut consulter le fichier dalerte de linstance et le fichier de trace du processus DBWR.
Dautresfichiers,euxaussiendommags,peuventtrecits.
Lorsquelabasededonnesestmonteououverte,vouspouvezinterrogerlavueV$RECOVER_FILEpourdterminer
lalistedesfichiersdedonnessurlesquelsilexisteunproblme.
LescolonnesintressantesdelavueV$RECOVER_FILEsontlessuivantes :
FILE#
Identifiantdufichier(jointuresurV$DATAFILE.FILE#pourrcuprerdesinformationscomplmentairessurlefichier).
ONLINE_STATUS
Statutdufichier(ONLINEouOFFLINE).
ERROR
Naturedelerreur.VidesilerreurestinconnueetOFFLINE NORMALsilefichieresthorslignesanserreur(pasbesoin
derestaurationdanscecas).
Exemple
SQL> SELECT file#,error,online_status FROM v$recover_file;
FILE# ERROR
ONLINE_
---------- ------------------------------ ------5 FILE NOT FOUND
ONLINE
Surcetexemple,lefichierdedonnes5doittrerestaur.
La commande VALIDATE
endommags.

DATABASE peut aussi tre utilise pour identifer les fichiers de donnes perdus ou

5.LescommandesRMAN
a.Introduction
DansRMAN,lesoprationsderestaurationetdercuprationvontseffectuerrespectivementaveclescommandes
RESTOREetRECOVER.

ENI Editions - All rights reserved - Algeria Educ

- 5-

LacommandeRESTOREpermetderestaurerlesfichierspartirdessauvegardes.LacommandeRECOVERpermetde
procderunercuprationcomplteouincomplte.
Lasyntaxegnraledecesdeuxcommandesestdutype :
{ RESTORE | RECOVER } cible [options] ;
Votreprincipaleresponsabilit,lorsquevousutilisezcescommandes,estdebienchoisirlacibleenfonctiondela
nature du problme. Ensuite, RMAN se charge normalement de tout : identifier les sauvegardes utiliser, et en
extraire les fichiers requis identifier les fichiers de journalisation archivs ncessaires et les extraire dune
sauvegardesilsonttsauvegardspuissupprims.
Lesoptionsdecesdeuxcommandesneserontncessairesquepourtraiterdescasparticuliers : sauvegardenon
disponible, volont de revenir un instant dans le pass (rcupration incomplte), etc. Dans la grande majorit
descas,vousnedevriezpasenavoirbesoin.
Les principes de fonctionnement gnraux de ces commandes vont dabord tre prsents, puis nous verrons
commentlesutiliserdansdiffrentsscnariosderestauration.
Les commandes RESTORE et RECOVER proposent un trs grand nombre doptions. Dans cet ouvrage, nous
prsenteronsuniquementlesoptionslespluscourammentutilises.

b.LacommandeRESTORE
LasyntaxesimplifiedelacommandeRESTOREestlasuivante :
RESTORE cibles [options]
- cibles
DATABASE
DATAFILE liste_numros_ou_noms
TABLESPACE liste_noms
CONTROLFILE [TO destination] [FROM AUTOBACKUP | sauvegarde]
SPFILE [TO destination] [FROM AUTOBACKUP | sauvegarde]
ARCHIVELOG { ALL | filtre_archive }
- filtre_archive
FROM TIME date
UNTIL TIME date
TIME BETWEEN date1 AND date2
- options
PREVIEW [SUMMARY]
VALIDATE
Loptionciblespermetdindiquercequilconvientderestaurer.LoptionDATABASEpermetderestaurerlatotalitde
labasededonnes ellenedoittreutilisequesivoussouhaitezoudevezeffectivementrestaurerlatotalitde
labasededonnes.EnmodeARCHIVELOG,siunfichierdedonnesestendommag,vousnedevrezrestaurerque
lefichierenquestion,enutilisantlesoptionsDATAFILEouTABLESPACE.
Loption PREVIEW est intressante pour lister les sauvegardes dont RMAN a besoin pour raliser lopration de
restauration correspondante. Loption SUMMARY permet dobtenir un affichage rsum. Laffichage est le mme
quaveclacommandeLIST.
Loption VALIDATE permet de tester si la restauration correspondante peut tre ralise. RMAN accde aux
sauvegardes et vrifie quil peut en extraire les fichiers ncessaires. Il existe aussi une commande VALIDATE
BACKUPSETquipermetdetesterdesjeuxdesauvegardespcifiques(voirladocumentationOracle).

c.LacommandeRECOVER
LasyntaxesimplifiedelacommandeRECOVERestlasuivante :
RECOVER cible [options]
- cible
DATABASE
DATAFILE liste_numros_ou_noms
TABLESPACE liste_noms
- options
DELETE ARCHIVELOG [MAXSIZE taille [K|M|G]]

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Loption cible permet dindiquer ce quil convient de rcuprer : la base de donnes dans sa totalit, ou des
tablespacesoufichiersdedonnesspcifiques.
Lors de lopration de rcupration, RMAN recherche les fichiers de journalisation archivs dont il a besoin, en
premier lieu sur le disque. Les fichiers de journalisation archivs manquants sont automatiquement restaurs
partirdesauvegardes,verslerpertoiredarchivagedfiniparleparamtreLOG_ARCHIVE_DEST_1(oversuneautre
destinationvoirlacommandeSET ARCHIVELOG DESTINATIONdansladocumentation).
la fin de lopration, les fichiers de journalisation archivs restaurs ailleurs que dans la zone de rcupration
rapide, ne sont pas supprims par dfaut. Loption DELETE ARCHIVELOG permet de supprimer les fichiers de
journalisation archivs restaurs qui ne sont plus ncessaires, au fur et mesure de leur application. Loption
MAXSIZEpermetaubesoin,delimiterlespaceutilisparRMANpourlesfichiersdejournalisationarchivsrestaurs.
Sicetteoptionestspcifie,RMANprocderalarestaurationdesfichiersdejournalisationarchivsenplusieurs
tapes,pournepasdpasserlatailleindique.Assurezvousquelatailleindiqueestsuprieurelatailledes
fichiersdejournalisationarchivs,sinonvousobtiendriezuneerreur.
Larcuprationpeututiliserdessauvegardesincrmentalesoudesfichiersdejournalisationarchivs.SiRMANale
choix,ilutiliseenprioritlessauvegardesincrmentales.

6.Scnariosdercupration
a.Prsentation
Danscetouvrage,nousallonsprsenterlesscnariosdercuprationdebasesuivants :

rcuprationdufichierdeparamtresserveur

rcuprationdunfichierdecontrle

rcuprationdunfichierdejournalisation

rcuprationcompltedelatotalitdelabasededonnesenmodeARCHIVELOG

rcuprationcompltedunepartiedelabasededonnesenmodeARCHIVELOG

rcuprationdetouslesfichiersdecontrleenmodeARCHIVELOG

rcuprationincomplteenmodeARCHIVELOG

rcuprationenmodeNOARCHIVELOG.

Encomplment,nousvoqueronsdeuxcasparticuliers :

rcuprationunemplacementdiffrent

tablespacetemporairegrlocalement.

Dansuncasdercuprationrel,vousserezpeuttreamenscombinerplusieursdecesscnariosdebase.Par
exemple, si vous avez perdu un fichier de contrle et un tablespace, et si vous tes en mode ARCHIVELOG, vous
appliquerezlesscnariossuivants,danslordre :

rcuprationdunfichierdecontrle

rcuprationcompltedunepartiedelabasededonnesenmodeARCHIVELOG.

En rgle gnrale, si vous avez perdu le fichier de paramtres serveur, un fichier de contrle et/ou un fichier de
journalisation,vousdevezdabordrsoudrecesproblmesavantdetraiterlecasdesfichiersdedonnes.
Touscesscnariossontbasssurleshypothsessuivantes :

ENI Editions - All rights reserved - Algeria Educ

- 7-

Vousavezactivlasauvegardeautomatiquedufichierdecontrleetdufichierdeparamtresserveur.

Vousutilisezunezonedercuprationrapide.

VousnutilisezpasdebasededonnesannexepourstockerlecatalogueRMAN.

Quelquesoitlescnario,silefichierestenfaitsimplementtemporairementinaccessible(contrleurdisque
enpanneparexemple),unerestaurationnestpasncessaire ilsuffitdecorrigerleproblmepourrendre
lefichierdenouveaudisponibleetderedmarrerlabase.Unerestaurationestnanmoinsenvisageablesilnest
paspossibledattendrequeleproblmesoitcorrig.

b.Rcuprationdufichierdeparamtresserveur
Encasdepertedufichierdeparamtresserveur,vousavezdeuxpossibilits :

Lerecrerpartirdunfichierdeparamtrestexte(voirlechapitre7).

LercuprerpartirdunesauvegardeRMAN.

PourlercuprerpartirdunesauvegardeautomatiqueRMANsituedanslazonedercuprationrapide,lemode
opratoireestlesuivant :

Dmarrerlinstancesansmonterlabasededonnes(notezqueRMANvautiliserunfichierdeparamtres
"temporaire"pourdmarrerlinstance)

RMAN> STARTUP NOMOUNT


chec du dmarrage : ORA-01078: failure in processing system parameters
LRM-00109: impossible douvrir le fichier de paramtres
D:\APP\ORACLE\PRODUCT\11.1.0\DB_1\DATABASE\INITHERMES.ORA
dmarrage de linstance Oracle sans fichier de paramtres
pour extraction de SPFILE
instance Oracle dmarre
Total System Global Area (SGA)
159019008 octets
Fixed Size
1331852 octets
Variable Size
67112308 octets
Database Buffers
88080384 octets
Redo Buffers
2494464 octets

Restaurer le fichier de paramtres serveur partir dune sauvegarde automatique en spcifiant


lemplacementdelazonedercuprationrapideetlenom(oulenomunique)delabasededonnes

RMAN> RESTORE SPFILE FROM AUTOBACKUP


2>
DB_RECOVERY_FILE_DEST H:\oradata\flash_recovery_area
3>
DB_NAME HERMES;
Dmarrage de restore dans 05/08/08
utilisation du canal ORA_DISK_1
destination de la zone de rcupration : H:\oradata\flash_recovery_area
nom de base de donnes (ou nom unique de base de donnes) utilis pour
la recherche : HERMES
canal ORA_DISK_1 : AUTOBACKUP H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\
AUTOBACKUP\2008_08_05\O1_MF_S_661968988_49JR5XWS_.BKP trouv
dans la zone de rcupration
canal ORA_DISK_1 : recherche de AUTOBACKUP effectue le : 20080805
canal ORA_DISK_1 : restauration du fichier SPFILE partir
de AUTOBACKUP H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\AUTOBACKUP\
2008_08_05\
O1_MF_S_661968988_49JR5XWS_.BKP
canal ORA_DISK_1 : restauration de SPFILE depuis AUTOBACKUP termine
Fin de restore dans 05/08/08

- 8-

openmirrors.com

Redmarrerlinstanceetouvrirlabasededonnes

ENI Editions - All rights reserved - Algeria Educ

RMAN> SHUTDOWN
...
RMAN> STARTUP
...
Si la sauvegarde automatique nest pas stocke dans la zone de rcupration rapide, le mode opratoire est
diffrent. Il faut positionner le DBID correspondant la base de donnes (SET DBID ), spcifier le format utilis
pourlessauvegardesautomatiques(SET CONTROLFILE AUTOBACKUP FORMAT )avantderestaurerlasauvegardepar
unRESTORE SPFILE FROM AUTOBACKUP(sansautreoption).
Il est aussi possible de restaurer le fichier de paramtre serveur en spcifiant la sauvegarde utiliser : RESTORE
SPFILE FROM sauvegarde.

c.Rcuprationdunfichierdecontrle
Danslecasovousavezperduunouplusieursfichiersdecontrle,maisquilvousenresteencoreaumoinsun,
vousnedevezpasrepartirdunesauvegardedefichierdecontrle.Vousallezsimplementdupliquerundesfichiers
decontrlerestantspourremplacerlesfichiersperdus.
Noussupposonsquelinstanceestarrte.
Lemodeopratoireestlesuivant :

utiliserlefichierdalerte de linstancepouridentifierlesfichiersdecontrleendommagsouperduseten
dduirequilrestebienaumoinsunfichierdecontrlevalide
dupliqueruneversionvalidedufichierdecontrlepourlamettrelaplacedu(des)fichier(s)decontrle
endommag(s)
redmarrerlabasededonnes(STARTUP).

Si un fichier de contrle est dupliqu un autre emplacement que lemplacement dorigine, il faut modifier le
paramtre CONTROL_FILES dans le fichier de paramtres serveur. Au lieu de redmarrer directement la base de
donnes,ilfaudraprocderdelamaniresuivante :

Dmarrerlinstance,sansmonterlabasededonnes

SQL> STARTUP NOMOUNT

ModifierleparamtreCONTROL_FILESdanslefichierdeparamtresserveur :

SQL> ALTER SYSTEM SET CONTROL_FILES=


2 f:\oradata\HERMES\control01.ctl,
3 h:\oradata\HERMES\control02.ctl -- changement
4 SCOPE=SPFILE;

Redmarrerlinstance

SQL> SHUTDOWN IMMEDIATE


SQL> STARTUP
LaduplicationduneversionvalidedufichierdecontrlepeutseffectuerdansRMAN,laidedunevariantedela
commandeRESTORE CONTROLFILE.Exemple :
RMAN> RESTORE CONTROLFILE FROM F:\oradata\HERMES\control01.ctl ;
Lacommandetraitedunseulcouptouslesfichiersdecontrlemanquantsensebasantsurlavaleurduparamtre
CONTROL_FILES.
Ilestgalementpossiblededmarrertemporairementavecmoinsdefichiersdecontrle danscecas,ilseraaussi
ncessairedemodifierlaparamtreCONTROL_FILESdanslefichierdeparamtresserveur.

d.Rcuprationdunfichierdejournalisation

ENI Editions - All rights reserved - Algeria Educ

- 9-

Sivousavezperduunouplusieursfichiersdejournalisation,maisquilvousenresteaumoinsunpargroupe,vous
navez pas besoin de raliser de restauration ou de rcupration de la base de donnes. Vous allez simplement
recrerlesfichiersdejournalisationperdus.
Lemodeopratoireestlesuivant :

Identifier le (les) fichier(s) de journalisation endommag(s) dans le fichier dalerte de linstance, dans le
fichierdetracedeLGWRoudanslavueV$LOGFILE.
Supprimerlemembreendommag

SQL> ALTER DATABASE DROP LOGFILE MEMBER nom_fichier;

Ajouterunnouveaumembreaugroupeconcern

SQL> ALTER DATABASE ADD LOGFILE MEMBER nom_fichier


2 TO GROUP numro;

Ritrerlesdeuxoprationsprcdentesavectouslesmembresendommags.

LesfichiersdejournalisationendommagsontunecolonneSTATUSINVALIDdanslavueV$LOGFILE.
Lefichierdejournalisationajoutpeuttremisunautreemplacement silestremisaummeemplacementque
le prcdent, il faudra peuttre au pralable supprimer physiquement lancien fichier (sil est prsent, le mettre
simplementdectaucaso)ouutiliserlaclauseREUSEdanslordreSQL.
Vousnepourrezpassupprimerlemembresilappartientaugroupecourant.Danscecas,ilfautchangerdegroupe
courantenexcutantlordreSQL ALTER SYSTEM SWITCH LOGFILE.CetordreSQLnepeuttreexcutquesilabase
de donnes est ouverte. Si la base de donnes est ferme, et quelle ne puisse pas tre ouverte tout de suite,
vouspouvezreporterlacorrectionduproblmeplustardouvouscontenterderecrerlemembre lasuppression
pourraavoirlieuplustard,unefoislabasededonnesouverte.
Ilpeuttrepossibleaussidefonctionnertemporairementavecmoinsdemembresdansungroupedefichiersde
journalisation.

e.RcuprationcompltedelatotalitdelabasededonnescenmodeARCHIVELOG
Cescnariometlhypothsequevousavezperdutouslesfichiersdedonnes.Linstanceestarrte.
Lemodeopratoireestlesuivant :

Monterlabasededonnes

RMAN> STARTUP MOUNT

Restaurerlabasededonnes

RMAN> RESTORE DATABASE ;


Dmarrage de restore dans 05/08/08
...
Fin de restore dans 05/08/08

Rcuprerlabasededonnes

RMAN> RECOVER DATABASE ;


Dmarrage de recover dans 05/08/08
...
Fin de recover dans 05/08/08

Ouvrirlabasededonnes

RMAN> ALTER DATABASE OPEN ;


Si vous nutilisez pas la zone de rcupration rapide pour larchivage, vous pouvez spcifier loption DELETE
ARCHIVELOG dans la commande RECOVE pour supprimer les fichiers de journalisation archivs restaurs au fur et
- 10 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

mesuredeleurapplicationetventuellementlimiterlespaceutilisparcesfichiers.

f.RcuprationcompltedunepartiedelabasededonnesenmodeARCHIVELOG
Cescnariometlhypothsequevousavezperduunouplusieursfichiersdedonnes(maispastous).
Cetteoprationpeuttreralisebasefermeoubaseouverte,selonlanatureduproblme.

Si un fichier de donnes du tablespace SYSTEM, ou un fichier du tablespace dannulation actif est perdu,
linstance sest arrte et vous ne pourrez pas ouvrir la base de donnes sans rcuprer les fichiers en
question.
Sil sagitdun autre fichier de donnes, la base de donnes peut rester ouverte. Par contre, si elle tait
ferme,ellenepeutpastreouverte.

Rcuprationbasededonnesferme
Danscetexemple,lefichierdedonnesdutablespaceSYSTEMestperdu linstanceestarrte.
Lemodeopratoireestlesuivant :

Monterlabasededonnes :

RMAN> STARTUP MOUNT


instance Oracle dmarre
...

RestaurerlesfichiersdedonnessouhaitssoitparunRESTORE TABLESPACE,soitparunRESTORE DATAFILE

RMAN> RESTORE TABLESPACE system ;

RcuprerlesfichiersdedonnessoitparunRECOVER TABLESPACE,soitparunRECOVER DATAFILE

RMAN> RECOVER TABLESPACE system ;

Ouvrirlabasededonnes

RMAN> ALTER DATABASE OPEN ;


Rcuprationbasededonnesouverte
Danscetexemple,lefichierdedonnesdutablespaceINDXestperdu(fichierdedonnesnumro6).
Si la base de donnes est ferme, mais que vous souhaitiez raliser la rcupration base ouverte (pour que les
utilisateurspuissentrecommencertravailler),commencezparlapremirepartiedumodeopratoire.Silabasede
donnesestdjouverte,passezdirectementladeuximepartiedumodeopratoire.
Lapremirepartiedumodeopratoireestlasuivante :

Monterlabasededonnes

RMAN> STARTUP MOUNT

MettreOFFLINElesfichiersdedonnesperdus

RMAN> SQL "ALTER DATABASE DATAFILE 6 OFFLINE";

Ouvrirlabasededonnes

RMAN> ALTER DATABASE OPEN;


Ladeuximepartiedumodeopratoireestlasuivante :

ENI Editions - All rights reserved - Algeria Educ

- 11 -

PasserOFFLINElestablespacesconcerns vousdevezutiliserloptionIMMEDIATE,carunfichierdedonnes
nestpasaccessible

RMAN> SQL "ALTER TABLESPACE indx OFFLINE IMMEDIATE";

RestaurerlesfichiersdedonnessouhaitssoitparunRESTORE TABLESPACE,soitparunRESTORE DATAFILE

RMAN> RESTORE DATAFILE 6 ;

RcuprerlesfichiersdedonnessoitparunRECOVER TABLESPACE,soitparunRECOVER DATAFILE

RMAN> RECOVER DATAFILE 6 ;

PasserONLINElestablespacesconcerns

RMAN> SQL "ALTER TABLESPACE indx ONLINE";

g.RcuprationdetouslesfichiersdecontrleenmodeARCHIVELOG
Dans ce scnario, nous supposons que nous avons perdu tous les fichiers de contrle ainsi quun fichier de
donnes.Ilnesagitpasdunecatastrophecarnousdisposonsdesauvegardesautomatiquesdufichierdecontrle
(dans la zone de rcupration rapide) et les fichiers de journalisation en ligne sont disponibles. Linstance est
arrte.
Lemodeopratoireestlesuivant :

Dmarrerlinstancesansmonterlabasededonnes

RMAN> STARTUP NOMOUNT

Restaurer les fichiers de contrle partir dune sauvegarde automatique (dans la zone de rcupration
rapide).

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;

Monterlabasededonnes

RMAN> ALTER DATABASE MOUNT ;

Restaurerlesfichiersdedonnesperdus(djvu)

RMAN> RESTORE DATAFILE 5 ;

Rcuprer la base de donnes (pas uniquement les fichiers de donnes car nous repartons dune
sauvegardedefichiersdecontrle)

RMAN> RECOVER DATABASE ;

OuvrirlabasededonnesavecloptionRESETLOGS(obligatoire)

RMAN> ALTER DATABASE OPEN RESETLOGS ;

Vousobtenezunenouvelle"incarnation"delabasededonnes

RMAN> LIST INCARNATION OF DATABASE ;


Liste des incarnations de base de donnes
DB Key Inc Key DB Name DB ID
------- ------- -------- ---------------1
1
HERMES
3535892647
2
2
HERMES
3535892647

- 12 -

openmirrors.com

STATUS
------PARENT
CURRENT

Reset SCN
---------1
460308

ENI Editions - All rights reserved - Algeria Educ

Reset Time
---------16/07/08
05/08/08

Dans la commande RESTORE


CONTROLFILE
FROM
AUTOBACKUP, vous pouvez spcifier les options
DB_RECOVERY_FILE_DESTetDB_NAME(ouDB_UNIQUE_NAME)silesvaleursactuellesnesontpascorrectes.Parcontre,si
lasauvegardeautomatiquedufichierdecontrlenestpasstockedanslazonedercuprationrapide,lemode
opratoireestdiffrent.IlfautpositionnerleDBIDcorrespondantlabasededonnes(SET DBID ),spcifierle
format utilis pour les sauvegardes automatiques (SET CONTROLFILE AUTOBACKUP FORMAT ) avant de restaurer la
sauvegardeparunRESTORE CONTROLFILE FROM AUTOBACKUP.
Lorsquevousrepartezdunesauvegardedefichierdecontrle,RMANeffectueautomatiquementunCROSSCHECKet
un CATALOG RECOVERY AREA pour mettre jour le rfrentiel dans les fichiers de contrle (qui ne sont pas jour
puisquilsproviennentdunesauvegarde),enfonctiondelaralitphysiquedesfichiers.
Parailleurs,vousdevezouvrirlabasededonnesavecloptionRESETLOGS.Mmesilarcuprationestcomplte,
Oracle considre que cest une nouvelle vie de la base de donnes, une nouvelle incarnation de la base de
donnes.Lesnumrosdesquencedesfichiersdejournalisationvontrepartirdezro.
Dans les versions prcdentes dOracle, toutes les sauvegardes et tous les fichiers de journalisation archivs
antrieurslouvertureenmodeRESETLOGStaientpratiquementinexploitables.
Depuis la version 10, ce nest plus le cas. Lors dune ouverture en mode RESETLOGS, Oracle associe un numro
dactivation la "nouvelle" base de donnes. Ce numro dactivation est utilis par Oracle diffrents endroits,
dont le nom des fichiers de journalisation archivs (variable %r dans le paramtre LOG_ARCHIVE_FORMAT). De cette
manire,Oracleestcapabledassociernimportequelfichieruneincarnationdelabasededonnes.
LenumrodactivationcourantpeuttreconsultdanslacolonneINCARNATION#delavueV$DATABASE.Lhistorique
des incarnations dune base de donnes peut tre consult dans la vue V$DATABASE_INCARNATION. Dans RMAN, la
commandeLIST INCARNATIONdonnelalistedesincarnationsdelabasededonnes.
Danslefichierdesalertesdelinstance,voustrouverezaussidesmessagesdutype :
RESETLOGS after complete recovery through change 460307
Resetting resetlogs activation ID 3535886503 (0xd2c158a7)
Tue Aug 05 18:09:16 2008
Setting recovery target incarnation to 2

LanotiondincarnationdebasededonnesestlundessujetslespluscomplexesdOracle.

h.RcuprationincomplteenmodeARCHIVELOG
Cescnariovaillustrerlatechniquedercuprationincomplte,enpartantdunesituationcatastrophe : toutest
perdu(fichierdeparamtresserveur,fichiersdecontrle,fichiersdedonnesetfichiersdejournalisationenligne).
Linstanceestarrte.
Unercuprationincomplteestncessairedansplusieurscas :

pertedetouslesfichiersdejournalisationenligne(cestlecasdanscescnario)

pertedunfichierdejournalisationarchiv,ncessaireunercupration

retouravantunordreSQLmalencontreux(DROP TABLE,DROP TABLESPACE,DROP USER,etc.).

Danstouslescas,ilfaudraidentifierlepointderetoursouhaitparunedate/heure,unnumroSCNouunnumro
desquencedefichierdejournalisation.
la fin de la rcupration, il faudra, l encore, ouvrir la base de donnes avec loption RESETLOGS : cest une
nouvelleincarnationdelabasededonnes.
Cescnarioestunecombinaisondescnariosdjtudis.
Lemodeopratoireestlesuivant :

Dmarrerlinstancesansmonterlabasededonnes(RMANutiliseunfichierdeparamtres"temporaire"car
lefichierdeparamtresserveurestperdu) :

RMAN> STARTUP NOMOUNT


chec du dmarrage : ...
dmarrage de linstance Oracle sans fichier de paramtres ...
instance Oracle dmarre

ENI Editions - All rights reserved - Algeria Educ

- 13 -

...

Restaurerlefichierdeparamtresserveurpartirdunesauvegardeautomatique(stockedanslazonede
rcuprationrapidepourcetexemple) :

RMAN> RESTORE SPFILE FROM AUTOBACKUP


2>
DB_RECOVERY_FILE_DEST H:\oradata\flash_recovery_area
3>
DB_NAME HERMES;

Redmarrerlinstance sans monter la base de donnes (dmarrage avec le fichier de paramtres serveur
restaur) :

RMAN> STARTUP NOMOUNT FORCE

Restaurer les fichiers de contrle partir dune sauvegarde automatique (stocke dans la zone de
rcuprationrapidepourcetexemple) :

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP ;

Monterlabasededonnes :

RMAN> ALTER DATABASE MOUNT ;

Restaureretrcuprerlabasededonnes :

RMAN> RESTORE DATABASE ;


...
RMAN> RECOVER DATABASE ;
Dmarrage de recover dans 06/08/08
...
RMAN-03002: chec de la commande recover 08/06/2008 07:37:00
RMAN-06054: la rcupration aprs dfaillance matrielle requiert
un journal inconnu : thread 1, squence 7 et SCN de dbut 475124

OuvrirlabasededonnesavecloptionRESETLOGS :

RMAN> ALTER DATABASE OPEN RESETLOGS ;


Danscescnario,aveclemodeopratoireutilisici,ilestnormalquelacommande RECOVERsetermineavecune
erreurpuisquilmanqueunfichierdejournalisation.Aupralable,lacommandeRESTOREaeffectuautomatiquement
un CROSSCHECK et un CATALOG RECOVERY AREA pour mettre jour le rfrentiel (notamment les fichiers de
journalisationarchivsdisponibles)danslesfichiersdecontrle lacommandeRECOVERestdonc,alleleplusloin
possible avec les lments sa disposition. Avant douvrir la base dans le modeRESETLOGS, assurezvous que le
numrodesquencedudernierfichierdejournalisationappliquestconformevosattentes.
Danslecasonoussouhaitonsprciserexplicitementlepointderetour,ilestpossibledutiliseruneclauseUNTIL
danslescommandesRESTOREetRECOVER cetteclauseoffreplusieursoptions :
UNTIL SCN [=] n
JusquunnumroSCN(noncompris).
UNTIL SEQUENCE[=] n
Jusquunnumrodesquencedunfichierdejournalisation(noncompris).
UNTIL TIME [=]date
Jusqu une date/heure (non comprise). Peut tre spcifi sous la forme dune constante (au format de date
courant)ouuneexpressiondutypeSYSDATE-1ou"TO_DATE()".
DansunblocRUN,ilestaussipossibledutiliserlacommandeSET UNTILavantdexcuterlescommandesRESTOREet
RECOVER :

- 14 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

RUN
{
SET UNTIL ... ;
RESTORE DATABASE ;
RECOVER DATABASE ;}

i.RcuprationenmodeNOARCHIVELOG
Dans ce scnario, nous supposons que nous avons perdu tout ou partie de la base de donnes et que cette
dernirefonctionneenmodeNOARCHIVELOG.
Danscecas,normalement,laseulesolutiondercuprationconsisteramenerlabasededonnesltatoelle
se trouvait lors de la dernire sauvegarde complte base ferme, cette dernire pouvant tre une sauvegarde
incrmentale.
Nanmoins,commenouslavionsindiquprcdemment,ilestpeuttreenvisageablederaliserunercupration
compltesilesfichiersdejournalisationsontdisponiblesetquilnyaitpaseuuncyclecompletdebasculementdes
fichiers de journalisation depuis la dernire sauvegarde. Vous pouvez alors tenter une restauration de type
ARCHIVELOG(pointse.ouf.) :

restaurationdesfichiersdedonnesendommags

rcuprationdesfichiersdedonnesendommags.

Si la rcupration ne signale pas derreur,cest gagn. Par contre, si la rcupration signale une erreur du type
suivant,lasituationestaprioridsespre :
journal darchivage introuvable
journal darchivage, thread=1, squence=7
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: chec de la commande recover 08/06/2008 07:37:00
RMAN-06054: la rcupration aprs dfaillance matrielle requiert un
journal inconnu : thread 1, squence 7 et SCN de dbut 475124
Dans ce cas, il ne reste plus qu raliser une rcupration en mode NOARCHIVELOG, laide du mode opratoire
suivant :

Dmarrerlinstancesansmonterlabasededonnes

RMAN> STARTUP NOMOUNT

Restaurer les fichiers de contrle partir dune sauvegarde automatique (stocke dans la zone de
rcuprationrapidepourcetexemple)

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;

Monterlabasededonnes

RMAN> ALTER DATABASE MOUNT ;

Restaurerlabasededonnes

RMAN> RESTORE DATABASE;

Si vous utilisez des sauvegardes incrmentales cohrentes (base ferme) de la totalit de la base de
donnes,lacommandeRESTOREprcdenteauraramenladerniresauvegardedeniveau0.Vouspouvez
alors raliser une rcupration (RECOVER) avec loption NOREDO, pour que RMAN applique les sauvegardes
incrmentales de niveau 1 postrieur la sauvegarde de niveau 0, sans appliquer les fichiers de
journalisation.

RMAN> RECOVER DATABASE NOREDO;

ENI Editions - All rights reserved - Algeria Educ

- 15 -

OuvrirlabasededonnesavecloptionRESETLOGS(obligatoire)

RMAN> ALTER DATABASE OPEN RESETLOGS ;


Lencore,vousobtenezunenouvelleincarnationdelabasededonnes cestnormalpuisquevoustrerevenu
uninstantdonndupass.

j.Rcuprationunemplacementdiffrent
Dans certains cas, il peut tre impossible de restaurer les fichiers de donnes dans larborescence dorigine. Il
faudraalorsutiliserdeuxcommandessupplmentairesdansleprocessusderestauration :

Avant la restauration (RESTORE) : SET NEWNAME FOR DATAFILE pour indiquer RMAN le nouvel emplacement
dunfichierdedonnes

SET NEWNAME FOR DATAFILE ancien_chemin | numro_fichier


TO nouveau_chemin ;

Aprslarestauration(RESTORE)etavantlarcupration(RECOVER) : SWITCH DATAFILEpourmettrejourle


fichierdecontrle(quivalentlordreSQLALTER DATABASE RENAME FILE)

SWITCH DATAFILE ALL ;


CesdeuxcommandesdoiventtreexcutesdansunblocRUN.
Exemplepourrestaurerunfichierdedonnesunautreemplacement
RUN
{
# si linstance est arrte, la dmarrer
# et monter la base de donnes
STARTUP MOUNT
#
# si la base de donnes est ouverte,
# mettre le tablespace OFFLINE
# SQL "ALTER TABLESPACE data OFFLINE IMMEDIATE" ;
#
SET NEWNAME FOR DATAFILE e:\oradata\HERMES\data01.dbf
TO f:\oradata\HERMES\data01.dbf ;
RESTORE TABLESPACE data ;
SWITCH DATAFILE ALL ;
RECOVER TABLESPACE data ;
# si la base de donnes est monte, louvrir
ALTER DATABASE OPEN ;
#
# si la base de donnes est ouverte,
# mettre le tablespace ONLINE
# SQL "ALTER TABLESPACE data ONLINE" ;
}

k.Casparticulierdutablespacetemporairegrlocalement
LesfichiersdedonnesdestablespacestemporairesgrslocalementnesontjamaissauvegardsparRMANetne
peuventdoncpastrerestaurs.
Sivousperdezunfichierdedonnesduntablespacetemporairegrlocalement,vousnaveznormalementriende
particulierfairecarOraclelerecre,sibesoin,automatiquementlorsdelouverturedelabasededonnes.Dans
lefichierdalertedelinstance,voustrouverezalorsdesmessagesdutypesuivant :
2008-08-07 06:58:51.171000 +02:00
Re-creating tempfile E:\ORADATA\HERMES\TEMP01.DBF
Pour vrifier que les fichiers de donnes des tablespaces temporaire grs localement sont bien prsents, vous
pouvezinterrogerlavueV$TEMPFILEouexcuterlacommandeRMANREPORT SCHEMA.

- 16 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

En cas de besoin, vous pouvez explicitement recrer les fichiers de donnes des tablespaces grs localement.
Exemple :
SQL> ALTER TABLESPACE temp
2 ADD TEMPFILE e:\oradata\HERMES\temp01.dbf SIZE 100M
3
AUTOEXTEND ON NEXT 100M MAXSIZE 1G;

7.DataRecoveryAdvisor
a.Vuedensemble
Le Data Recovery Advisor est un outil qui permet de simplifier et dautomatiser le diagnostic et la rsolution des
problmes(perteoucorruption)surlesfichiersdelabasedonnes.Cetoutilestapparuenversion11.
LeconseillerpeuttreutilisenlignedecommandedansRMANouavecuneinterfacegraphiquedansleDatabase
Control(cf.UtiliserleDatabaseControl).
Danslaterminologieduconseiller,unchec(failureenanglais)surunfichierestidentifiparunnumrouniqueet
estcaractrisparunstatut(OPENouCLOSED)etunepriorit(LOW,HIGHouCRITICAL).
LestatutestOPENtantqueleproblmenapastrsolu ilpasseCLOSEDensuite.
La priorit estCRITICAL lorsque la base de donnes est totalement indisponible et HIGH si elle est partiellement
indisponible danslesdeuxcas,ilconvientdersoudreleproblmerapidement.LaprioritLOWnestpasattribue
parleconseiller.Parcontre,sivousjugezquuneprioritHIGHapeudimpactsurlefonctionnementdelabasede
donnesetnencessitepasdetraitementimmdiat,vouspouvezdescendremanuellementlaprioritLOW.
Lesinformationsrelativesauxchecssontstockesdanslerfrentieldediagnosticautomatique.Pourfonctionner,
leDataRecoveryAdvisorncessitequelinstancesoitdmarre(maislabasededonnepeutnepastremonte
cequipermetdediagnostiqueretrsoudrelesincidentssurlesfichiersdecontrle).

b.Utilisation
DansRMAN,lestapespourdiagnostiqueretrsoudrelesproblmeslaideduconseillersontlessuivantes :

Afficherleschecsactuels(statutOPEN) : LIST FAILURE.

Dterminerlesactionseffectuerpourrsoudrele(s)problme(s) : ADVISE FAILURE.

Rsoudrele(s)problme(s) : REPAIR FAILURE.

Retourner ltape 1 pour confirmer que les problmes ont t rsolus ou voir sil reste encore des
problmes.

Au pralable, il est possible dexcuter la commande VALIDATE DATABASE pour vrifier la totalit de la base de
donnes(maisilfautquelabasededonnessoitmonte).
EncomplmentdescommandesLIST FAILURE,ADVISE FAILURE etREPAIR FAILURE,ilexisteunecommandeCHANGE
FAILUREquipermetdemodifierlestatutoulapriorit.Cettecommande,moinsutile,nestpasprsentedanscet
ouvrage(voirladocumentation"OracleDatabaseBackupandRecoveryReference").
LapremiretapeconsistedoncafficherleschecsactuelsaveclacommandeLIST FAILURE.
Syntaxesimplifie
LIST FAILURE [quoi] [DETAIL] ;
Laclausequoipeutprendreuneouplusieursdesvaleurssuivantes : ALL,CRITICAL,HIGH,LOW,CLOSEDouunnumro
dchec.
Par dfaut, la commande LIST FAILURE affiche tous les checs de statut OPEN et de priorit CRITICAL ou HIGH.
Loption CLOSED permet dafficher les checs de statut CLOSED. Les options CRITICAL, HIGH,LOW ouALL permettent
dafficherleschecsayantuneprioritdonne(ALL=touteslespriorits).
Poursimplifier,leschecsdemmenaturesontregroupsdansunseulchec"parent"etseulscesdernierssont
affichs par dfaut par la commande LIST FAILURE. Pour afficher tous les checs "enfants", vous pouvez utiliser
ENI Editions - All rights reserved - Algeria Educ

- 17 -

loptionDETAIL.
Exemple
RMAN> LIST FAILURE ;
utilisation du fichier de contrle de la base de donnes
cible au lieu du catalogue de rcupration
Liste des checs de base de donnes
=========================
ID dchec Priority Status Time Detected Summary
---------- -------- ------ ------------- ------565
HIGH
OPEN
07/08/08
Un ou plusieurs fichiers de
donnes non systme sont absents
RMAN> LIST FAILURE 565 DETAIL;
utilisation du fichier de contrle de la base de donnes cible
au lieu du catalogue de rcupration
Liste des checs de base de donnes
=========================
ID dchec Priority Status
Time Detected Summary
---------- -------- ------ ------------- ------565
HIGH
OPEN
07/08/08
Un ou plusieurs fichiers
de donnes non systme sont absents
Impact : Voir limpact des checs des enfants
Liste des checs enfant de lID dchec parent 565
ID dchec Priority Status Time Detected Summary
---------- ------ ------ ------------- ------1859
HIGH
OPEN
07/08/08
Le fichier
de donnes 6: E:\ORADATA\HERMES\INDX01.DBF est absent
Impact : Il se peut que certains objets dans
le tablespace INDX soient indisponibles
1853
HIGH
OPEN
07/08/08
Le fichier
de donnes 5: E:\ORADATA\HERMES\DATA01.DBF est absent
Impact : Il se peut que certains objets dans
le tablespace DATA soient indisponibles
Surcetexemple,unproblmeatdtectsurdeuxfichiersdedonnes.
Pour gnrer et afficher les actions effectuer pour traiter les checs, vous devez utiliser la commande ADVISE
FAILURE.
Syntaxesimplifie
ADVISE FAILURE [quoi] ;
La clause quoi peut prendre une ou plusieurs des valeurs suivantes : ALL, CRITICAL, HIGH, LOW ou un numro
dchec.
La commande ADVISE FAILURE sans option peut tre utilise uniquement si une commande LIST FAILURE a t
excuteaupralabledanslasessionRMAN.Danscecas,lacommandeADVISE FAILUREaffichedesinformationsde
rsolution pour tous les checs de statut OPEN et de priorit CRITICAL ouHIGH enregistrs dans le rfrentiel de
diagnosticautomatique.
Les options de la clause quoi permettent dafficher les informations de rsolution pour un sousensemble
dchecs lasignificationdesdiffrentesoptionsdecetteclauseestlammequepourlacommandeLIST FAILURE.
Exemple
RMAN> ADVISE FAILURE ;
Liste des checs de base de donnes
=========================
ID dchec Priority Status Time Detected Summary
---------- -------- ------ ------------- ------565
HIGH
OPEN
07/08/08
Un ou plusieurs fichiers
de donnes non systme sont absents
...
analyse des options de rparation automatique ; cette opration
peut prendre un certain temps
canal affect : ORA_DISK_1
canal ORA_DISK_1 : SID=208 type dunit=DISK
analyse des options de rparation automatique termine
Actions manuelles obligatoires

- 18 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

========================
aucune action manuelle nest disponible
Actions manuelles facultatives
=======================
1. Si le fichier E:\ORADATA\HERMES\DATA01.DBF a t renomm ou dplac
involontairement, restaurez-le
2. Si le fichier E:\ORADATA\HERMES\INDX01.DBF a t renomm ou dplac
involontairement, restaurez-le
Options de rparation automatique
========================
Option Repair Description
------ -----------------1
Restaurez et rcuprez le fichier de donnes 5; Restaurez
et rcuprez le fichier de donnes 6
Stratgie : La rparation comprend une rcupration aprs dfaillance
matrielle sans perte de donnes
Script de rparation : d:\app\oracle\diag\rdbms\hermes\hermes\hm\
reco_499244267.hm
Aprsavoiraffichdesinformationssurleschecstrouvs(rsultatdelacommandeLIST FAILURE),lacommande
ADVISE FAILUREaffichetroissections :
Actions manuelles obligatoires : cette section liste les oprations qui doivent obligatoirement tre faites
manuellement pour rsoudre le problme. Des actions manuelles obligatoires peuvent, par exemple, tre
ncessaires si une sauvegarde ou un fichier de journalisation archiv requis par la rparation automatique sont
manquants.
Actionsmanuellesfacultatives:cettesectionlistelesoprationsmanuellesfacultativesquipeuventpermettrede
rsoudre le problme. Par exemple, si un fichier de donnes est manquant, le conseiller suggre que ce fichier a
peuttre t involontairement renomm ou dplac et quil peut donc tre restaur sans devoir repartir dune
sauvegarde.
Options de rparation automatique : cette section liste les diffrentes options de rparation automatique. Pour
chaqueoption,lacommandeafficheunnumro,unedescription,unestratgie(avecousanspertededonnes)et
le chemin du script qui contient les commandes de rparation. Les options correspondant une stratgie sans
pertededonnessonttoujoursproposesenpremier.
PourrparerautomatiquementleschecsidentifisparleDataRecoveryAdvisor,vouspouvezutiliserlacommande
REPAIR FAILURE.
Syntaxe
REPAIR FAILURE [USING ADVISE OPTION numro] [PREVIEW] [NOPROMPT];
Par dfaut, la commande REPAIR FAILURE excute les actions de la premire option de rparation automatique,
identifieparlacommandeADVISE FAILURElaplusrcenteexcutedanslasessionRMAN siaucunecommande
ADVISE FAILUREnatexcutedanslasessionRMAN,uneerreurestretourne.
Loption USING ADVISE OPTION permet dappliquer une option de rparation automatique spcifique, identifie par
sonnumrodoption.
LoptionPREVIEWpermetdenepasexcuterlesactions,maissimplementdelesprvisualiserlcran.
LoptionNOPROMPTpermetdesupprimerlademandedeconfirmation,lorsdelexcutioneffectivedelacommande.
Exemple
RMAN> REPAIR FAILURE PREVIEW ;
Stratgie : La rparation comprend une rcupration aprs dfaillance
matrielle sans perte de donnes
Script de rparation : d:\app\oracle\diag\rdbms\hermes\hermes\hm\
reco_499244267.hm
contenu du script de rparation :
# restore and recover datafile
restore datafile 5, 6;
recover datafile 5, 6;
RMAN> REPAIR FAILURE NOPROMPT ;
Stratgie : La rparation comprend une rcupration aprs dfaillance
matrielle sans perte de donnes
Script de rparation : d:\app\oracle\diag\rdbms\hermes\hermes\hm\
reco_499244267.hm
contenu du script de rparation :

ENI Editions - All rights reserved - Algeria Educ

- 19 -

# restore and recover datafile


restore datafile 5, 6;
recover datafile 5, 6;
excution du script de rparation
Dmarrage de restore dans 07/08/08
...
Fin de restore dans 07/08/08
Dmarrage de recover dans 07/08/08
...
Fin de recover dans 07/08/08
rparation de lchec termine
base de donnes ouverte
Lors de lexcution effective des actions de rparation, RMAN affiche le rsultat des diffrentes commandes
excutes(RESTORE,RECOVER,etc.).

c.Considrations
LeData Recovery Advisor est un outil trs puissant qui permet de diagnostiquer et rsoudre un grand nombre de
problmessurlesfichiersdecontrle,lesfichiersdejournalisationoulesfichiersdedonnes.
LeseulproblmequeleDataRecoveryAdvisornesaitpasrsoudreestlapertedufichierdeparamtresserveur.Si
besoin,vousdevrezrestaurermanuellementlefichierdeparamtreserveur(cf.Rcupration)
Avantdutiliserleconseiller,assurezvousquelinstanceabiendmarravecunfichierdeparamtresjour.Sice
nest pas le cas, le conseiller risque de signaler un faux problme sur les fichiers de contrle si la valeur du
paramtreCONTROL_FILESnestpascorrecte.VouspouveznotammentrencontrercettesituationsiRMANadmarr
linstanceavecunfichierdeparamtre"temporaire"(messagedmarrage de linstance Oracle sans fichier de
paramtres pour extraction de SPFILE).
Dans le cas o tous les fichiers de contrle sont perdus, le Data Recovery Advisor commencera par signaler ce
problme et ne sera pas forcment en mesure didentifier tout de suite dautres problmes (sur les fichiers de
donnesparexemple).Vousdevrezdonc,dabordtraiterleproblmesurlesfichiersdecontrle(LIST FAILURE,puis
ADVISE FAILURE puis REPAIR FAILURE) avant de faire de nouveau appel au conseiller pour identifier les autres
problmesventuels(LIST FAILURE)etsibesoin,lesrsoudre(ADVISE FAILUREpuisREPAIR FAILURE).
Cettesituationpeutseproduiredanslescnariocatastropheovousavezperdulatotalitdelabasededonnes
(touslesfichiersdecontrle,touslesfichiersdejournalisationettouslesfichiersdedonnes).
Lencore,utiliserunezonedercuprationrapide,etfairedessauvegardesautomatiquesdufichierdecontrle
verscettezonedercuprationrapide,facilitelarsolutiondesproblmesparleDataRecoveryAdvisor.
Silasituationlexige(rcuprationincomplteourcuprationpartirdunesauvegardedesfichiersdecontrle),
leDataRecoveryAdvisorouvriralabasededonnesdanslemodeRESETLOGS.

- 20 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Lestechniquesdeflashback
1.Vuedensemble
LestechniquesdeflashbacksontunensembledefonctionnalitsproposesparOraclequipermettentdevoirltat
passdesdonnes,ouderamenerunetableoulatotalitdelabasededonnesdanslepass.
Lesfonctionnalitsproposessontlessuivantes :

Flashback Query: permet de lire les donnes telles quelles taient un instant dans le pass (apparu en
version9).
Flashback Version Query : permet de voir toutes les versions dune ligne sur un certain intervalle de temps
(apparuenversion10).
FlashbackTransactionQuery:permetdevoirlesmodificationsralisesparuneouplusieurstransactionssur
uncertainintervalledetemps(apparuenversion10).
Flashback Transaction: permet dannuler les modifications dune transaction, et de ses transactions
dpendantes(apparuenversion11).
Flashback Data Archive (Oracle Total Recall) : permet de conserver sur le long terme, toutes les modifications
apportesunetable(apparuenversion11).
FlashbackTable : permetderamenerunetabledansltatoelletait,uncertainmomentdanslepass
(apparuenversion10).
FlashbackDrop:permetderamenerlatabledansltatoelletait,justeavantsasuppression(apparuen
version10).
Flashback Database : permet de ramener la totalit de la base de donnes dans ltat o elle tait un
certainmomentdanslepass(apparuenversion11).

Seule la fonctionnalit Flashback Query est disponible dans toutes les ditions de la base de donnes (et donc
notammentenStandardEdition).
LafonctionnalitFlashback Data Archive(OracleTotalRecall)estuneoptiondelEnterpriseEditionetncessitedonc,
unelicencesupplmentaire.Cettefonctionnalitnestpasprsentedanscetouvrage.
LesautresfonctionnalitsdeflashbackncessitentlEnterpriseEdition,maissansoptionsupplmentaire.
Cesfonctionnalitsutilisentdestechniquesdiffrentesmaispourrpondreaummeobjectif : rcupreruneerreur
dutilisation.
Lesfonctionnalitsdeflashbackderequte(FlashbackQuery,FlashbackVersionQueryetFlashbackTransactionQuery),
etlafonctionnalitdeflashbackdetable,utilisentlesinformationsdannulationpourrevenirenarrire.Leparamtre
UNDO_RETENTION et le tablespace dannulation doivent donc tre correctement dimensionns, si vous souhaitez
pouvoirretournerloindanslepass.
La fonctionnalit deflashback de transaction (FlashbackTransaction) utilise les fichiers de journalisation (en ligne et
archivs,donclabasededonnesdoitfonctionnerdanslemodeARCHIVELOG).Cettefonctionnalit,unpeuavance,
nestpasprsentedanscetouvrage.
Lafonctionnalitdeflashbackdebasededonnes(FlashbackDatabase)utiliseunfichierjournalspcifique,diffrent
desfichiersdejournalisation.
Lafonctionnalitdeflashbackavantsuppressiondunetable(FlashbackDrop)utiliselefaitquelestockagedunetable
nestpasphysiquementsupprimlorsquelatableestsupprime.

2.Niveauligne
FlashbackQuery

ENI Editions - All rights reserved - Algeria Educ

- 1-

Pourlirelesdonnestellesquellestaientuninstantdonndupass,vouspouvezutiliserloptionAS OFsurune
tableprsentedanslaclauseFROMdunerequteSELECT.
Syntaxe
nom_table AS OF { TIMESTAMP | SCN } expression
LoptionTIMESTAMPpermetderetourneruninstantdonndupassenindiquantunedateetuneheure dansce
cas, lexpression doit tre de type TIMESTAMP. Loption SCN permet de retourner un instant donn du pass en
indiquantunnumroSCN danscecas,lexpressiondoittreunnombre.
Exemple
-- situation de dpart
SQL> SELECT prenom FROM adherent WHERE numero = 1;
PRENOM
---------------------------------------Sbastien
SQL> SELECT TO_CHAR(SYSDATE,DD/MM/YYYY HH24:MI:SS) "SYSDATE",
2
dbms_flashback.get_system_change_number "SCN"
3 FROM dual;
SYSDATE
SCN
-------------------- ---------08/08/2008 11:28:00
176032
SQL> -- un peu plus tard
SQL> UPDATE adherent SET prenom = Olivier WHERE numero = 1;
1 ligne mise jour.
SQL> COMMIT;
Validation effectue.
SQL> -- un peu plus tard
SQL> SELECT TO_CHAR(SYSDATE,DD/MM/YYYY HH24:MI:SS) "SYSDATE",
2
dbms_flashback.get_system_change_number "SCN"
3 FROM dual;
SYSDATE
SCN
-------------------- ---------08/08/2008 11:28:20
176123
SQL> SELECT prenom
2 FROM adherent AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL 30 SECOND
3 WHERE numero = 1;
PRENOM
---------------------------------------Sbastien
SQL> SELECT prenom
2 FROM adherent AS OF SCN 176032
3 WHERE numero = 1;
PRENOM
---------------------------------------Sbastien
SQL> SELECT prenom FROM adherent WHERE numero = 1;
PRENOM
---------------------------------------Olivier
LafonctionGET_SYSTEM_CHANGE_NUMBERdupackageDBMS_FLASHBACKretournelenumroSCNcourant.Ilfautle
privilgeEXECUTEsurlepackagepourlutiliser.
Ladonneluedanslepasspeuttreutilisepourraliserunemisejourdansleprsent :
SQL> UPDATE adherent
2 SET nom = (SELECT prenom FROM adherent AS OF SCN 176032
3
WHERE numero = 1)
4 WHERE numero = 1;
FlashbackVersionQuery

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Pourlirelesdiffrentesversionsdunelignesuruncertainintervalledetemps,vouspouvezutiliserloptionVERSIONS
BETWWENsurunetableprsentedanslaclauseFROMdunerequteSELECT.
Syntaxe
nom_table VERSIONS BETWEEN { TIMESTAMP | SCN }
{ expression1 | MINVALUE } AND { expression2 | MAXVALUE }
LasignificationdesoptionsTIMESTAMPetSCNestlammequedanslaclauseAS OF. MINVALUEetMAXVALUEpermettent
dobtenirlaplusancienneligneetlaplusrcente.Encomplment,vouspouvezutiliserplusieurspseudocolonnesqui
vousdonnerontdesinformationssurlesdiffrentesversionsdelaligne :
VERSIONS_STARTTIME
Date/heurededbutdevaliditdelaversiondelaligne.
VERSIONS_STARTSCN
NumroSCNdedbutdevaliditdelaversiondelaligne.
VERSIONS_ENDTIME
Date/heuredefindevaliditdelaversiondelaligne.
VERSIONS_ENDSCN
NumroSCNdefindevaliditdelaversiondelaligne.
VERSIONS_XID
Identifiantdelatransactionloriginedelaversiondelaligne.
VERSIONS_OPERATION
Oprationloriginedelaversiondelaligne : IpourINSERT,UpourUPDATEetDpourDELETE.
Exemple
SQL> BEGIN
2
INSERT INTO adherent(numero,prenom) VALUES(24,Olivier);
3
COMMIT;
4
UPDATE adherent SET prenom = David WHERE numero = 24;
5
COMMIT;
6
DELETE FROM adherent WHERE numero = 24;
7
COMMIT;
8 END;
9 /
Procdure PL/SQL termine avec succs.
SQL> SELECT versions_startscn, versions_endscn,
2
versions_xid, versions_operation,
3
prenom
4 FROM adherent VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
5 WHERE numero = 24
6 ORDER BY versions_startscn;
VERSIONS_STARTSCN VERSIONS_ENDSCN VERSIONS_XID
V PRENOM
----------------- --------------- ---------------- - ---------177002
177003 030012000D010000 I Olivier
177003
177004 020019000E010000 U David
177004
01000D0008010000 D David

UnenouvelleversionduneligneestcrelorsdunCOMMIT.

FlashbackTransactionQuery
ENI Editions - All rights reserved - Algeria Educ

- 3-

Pourvoirlesmodificationsralisesparuneouplusieurstransactionssuruncertainintervalledetemps,vouspouvez
interrogerlavueFLASHBACK_TRANSACTION_QUERY.Cettevuedonnedesinformationssurtouteslestransactionsdela
basededonnespouvantfairelobjetdunflashback.Lesprincipalescolonnesdecettevuesontlessuivantes :
XID
Identifiantdelatransaction.
START_SCN
NumroSCNdedbutdelatransaction.
START_TIMESTAMP
Date/heurededbutdelatransaction.
COMMIT_SCN
NumroSCNduCOMMITdelatransaction(videpourlatransactionencours).
COMMIT_TIMESTAMP
Date/heureduCOMMITdelatransaction(videpourlatransactionencours).
LOGON_USER
Compteutilisateurdelasession.
OPERATION
Oprationralisedanslatransaction : INSERT,UPDATE,DELETE.
TABLE_NAME
Nomdelatableconcerneparlopration.
TABLE_OWNER
Propritairedelatableconcerneparlopration.
ROW_ID
ROWIDdelaligneconcerneparlopration.
UNDO_SQL
OrdreSQLpermettantdannulerlopration.
Vouspouvezinterrogercettevuedediffrentesmanires :

parlenomdunetablesurlaquellevousaveznotunproblme

parleROWIDdunelignesurlaquellevousaveznotunproblme

par un identifiant de transaction relev en analysant les diffrents versions dune ligne (pseudocolonne
VERSIONS_XID).

Exemple
SQL> SELECT xid, start_scn,commit_scn, logon_user, undo_sql
2 FROM flashback_transaction_query
3 WHERE table_name=ADHERENT AND table_owner=DIANE
- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

4
AND operation =DELETE AND start_timestamp > SYSDATE-1;
XID
START_SCN COMMIT_SCN LOGON_USER
---------------- ---------- ---------- --------------UNDO_SQL
----------------------------------------------------------------...
030006000D010000 176702 176712 DIANE
insert into "DIANE"."ADHERENT"("NUMERO","NOM","PRENOM","SEXE","DATE_
NAISSANCE","TELEPHONE","REF_CATEGORIE") values (22,NULL,
Olivier,NULL,NULL,NULL,NULL);
030006000D010000 176702 176712 DIANE
insert into "DIANE"."ADHERENT"("NUMERO","NOM","PRENOM","SEXE","DATE_
NAISSANCE","TELEPHONE","REF_CATEGORIE") values (21,HEURTEL
,NULL,NULL,NULL,NULL,NULL);
...
Sur cet exemple, nous recherchons toutes les transactions qui ont fait un DELETE sur la table ADHERENT du schma
DIANE, la dernire journe. Les deux lignes affiches appartiennent la mme transaction (mmeXID). La colonne
UNDO_SQLdonnelordreSQLquipeuttreutilispourrcrerlaligne.

3.Niveautable
FlashbackTable
Pourramenerunetableltatoelletaitunmomentdonndupass,vouspouvezutiliserlordreSQLFLASHBACK
TABLE.
Syntaxe
FLASHBACK nom_table [,] TO instant
[ENABLE TRIGGERS] ;
instant
{ TIMESTAMP | SCN } expression
| RESTORE POINT nom
LasignificationdesoptionsTIMESTAMPetSCNestlammequedanslaclauseAS OF.LoptionRESTORE POINTpermetde
revenir un point de retour cr au pralable avec lordre SQL CREATE RESTORE POINT les points de retour sont
visiblesdanslavueV$RESTORE_POINT.LoptionENABLE TRIGGERSpermetdautoriserledclenchementdestriggersqui
existentetquisontactuellementactifs pardfaut,ilsnesontpasdclenchs.
Pourralisercetteopration,ilfaut :

avoirleprivilgeobjetFLASHBACKsurlatableouleprivilgesystmeFLASHBACK ANY TABLE


dtenir les privilges objet SELECT, INSERT, et ALTER sur la table (ou les privilges systme ANY
correspondants)
queledplacementdelignessoitautorissurlatable(ROW MOVEMENT).

Exemple
-- je supprime toutes les lignes dune table
SQL> DELETE FROM diane.adherent;
20 lignes supprimes.
SQL> COMMIT;
Validation effectue.
SQL> SELECT COUNT(*) FROM diane.adherent;
COUNT(*)
---------0
-- 5 minutes plus tard, je maperoit de mon erreur ...
SQL> FLASHBACK TABLE diane.adherent

ENI Editions - All rights reserved - Algeria Educ

- 5-

2 TO TIMESTAMP SYSTIMESTAMP - INTERVAL 5 MINUTE;


FLASHBACK TABLE diane.adherent TO TIMESTAMP SYSTIMESTAMP - INTERVAL
5 MINUTE
*
ERROR at line 1:
ORA-08189: opration Flashback impossible sur la table : le mouvement
de ligne nest pas activ
-- il faut autoriser le dplacement de lignes
SQL> ALTER TABLE diane.adherent ENABLE ROW MOVEMENT;
Table modifie.
SQL> FLASHBACK TABLE diane.adherent
2 TO TIMESTAMP SYSTIMESTAMP - INTERVAL 5 MINUTE;
Flashback terrmin.
SQL> SELECT COUNT(*) FROM diane.adherent;
COUNT(*)
---------20
-- cest cool ...
FlashbackDrop
Depuis la version 10, lorsquune table est supprime, elle ne lest pas compltement, sauf si vous utilisez loption
PURGEdelordreSQLDROP TABLE elleestplacedansune"corbeille".Danslesgrandeslignes,unetablesupprime
estenfaitrenommeparOracle,etlespaceassocinestpasrcuprimmdiatement(bienquilapparaissedansla
vueDBA_FREE_SPACE) Oraclefaitlammechoseaveclesdpendancesdelobjet,notammentlesindex.Lespacede
stockage des objets se trouvant dans la corbeille nest pas rutilis, sauf en cas de manque despace dans le
tablespace.
SiOracleabesoindallouerunenouvelleextensiondansuntablespace,etquilnyaitplussuffisammentdeplace,
Oraclercupreralespacecorrespondantauxobjetsdelacorbeille,encommenantparlesobjetslesplusanciens
(FIFO : FirstInFirstOut).Oracleralisecettercuprationavantdefairegrandirlefichierdedonnesdutablespace
siceluicialapropritAUTOEXTEND.
La "corbeille" se matrialise tout simplement par une table du dictionnaire de donnes qui peut tre interroge
laidedesvuesUSER_RECYCLEBINetDBA_RECYCLEBIN,oulaidedelacommandeSQL*PlusSHOW RECYCLEBIN(interroge
lavueUSER_ RECYCLEBIN).
LescolonneslesplusintressantesdelavueDBA_RECYCLEBINsontlessuivantes :
OWNER
Nomdupropritairedelobjet.
OBJECT_NAME
Nomdelobjetdanslacorbeille.
ORIGINAL_NAME
Nomdoriginedelobjet.
TYPE
Typedelobjet(TABLE,INDEX,TRIGGER,etc.).
TS_NAME
Nomdutablespacedanslequellobjeteststock.
CREATETIME
Datedecrationdelobjet.
DROPTIME

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Datedesuppressiondelobjet.
CAN_UNDROP
Indiquesilobjetpeuttresortidelacorbeille(YESouNO).
CAN_PURGE
Indiquesilobjetpeuttredfinitivementsupprim(YESouNO).
SPACE
Nombredeblocsutilissparlobjet.
Encomplment,lesvuesDBA_INDEXESetDBA_TABLEScontiennentunecolonneDROPPEDindiquantsilatableoulindex
estsupprim(YESouNO).
Pour"annuler"lasuppressiondunetable,vouspouvezutiliserunevariantedelordreSQLFLASHBACK TABLE.
Syntaxe
FLASHBACK TABLE nom_table TO BEFORE DROP [RENAME TO nouveau_nom] ;
Dans la commande FLASHBACK TABLE, vous pouvez utiliser le nom dorigine de lobjet ou le nom de lobjet dans la
corbeille.
Si plusieurs tables dans la corbeille ont le mme nom dorigine (table supprime, puis recre puis de nouveau
supprime),etquevousutilisiezlenomdorigine,Oracleressortiradelacorbeilleladerniretablesupprimeportant
cenom(LIFO : LastInFirstOut).Pourressortirspcifiquementuneversionplusancienne,vouspouvezutiliserlenom
uniquegnrparOraclepourplacerlatabledanslacorbeille.
Lorsquevoussortezunetabledelacorbeille,vouspouvezluiattribuerunnouveaunom,cequiestpratiquesiune
tableportantlemmenomexistedansleschma.Lesobjetsassocissontgalementressortisdelacorbeille,mais
ilsgardentlenomquilsavaientdanslacorbeille.
Lespace utilis par les objets stocks dans la corbeille peut tre explicitement et dfinitivement rcupr grce
lordreSQLPURGE.
Syntaxe

Purgerunetableouunindex(aveclenomdorigineoulenomdanslacorbeille,etunprincipeFIFOsivous
utilisezlenomdorigineetqueplusieursobjetsportentcenom)

PURGE { INDEX | TABLE } nom ;

Purgerlestablesetlesindexduntablespace,envouslimitantventuellementauxobjetsdunschma

PURGE TABLESPACE nom_tablespace [USER nom_utilisateur] ;

Purgertouteslestablesetlesindexdelutilisateurcourant

PURGE RECYCLEBIN ;

Purgertouteslestablesetlesindex

PURGE DBA_RECYCLEBIN ;
Vouspouveznoterlesrestrictionssuivantes :

LestablessupprimesparunDROP TABLESPACEouunDROP USERnesontpasplacesdanslacorbeille.

IlnyapasdecorbeillepourletablespaceSYSTEM.

Il ny a pas de corbeille pour les tablespaces grs par le dictionnaire (uniquement pour les tablespaces
grslocalement).

ENI Editions - All rights reserved - Algeria Educ

- 7-

Exemple
-- je supprime la table
SQL> DROP TABLE diane.adherent;
Table supprime.
-- elle est dans la corbeille (avec ces dpendances)
SQL> SELECT original_name,object_name,type,
2
ts_name,can_undrop,can_purge
3 FROM dba_recyclebin WHERE owner=DIANE;
ORIGINAL_NAME
-------------ADHERENT$PK
ADHERENT$UK01
NUMEROADHERENT
ADHERENT

OBJECT_NAME
-----------------------------BIN$y3LFL/MFTs28v7JjGLBSjQ==$0
BIN$iDjv77eKRHGEDyAfQ+Hdnw==$0
BIN$sPGkld1PR3+w2PbWRdhz8A==$0
BIN$2tvUDS05RV+Rj2ogvU1aUg==$0

TYPE
------INDEX
INDEX
TRIGGER
TABLE

CAN_
CAN_
TS_NAME UNDROP PURGE
------- ----- ----INDX
NO
YES
INDX
NO
YES
NO
NO
DATA
YES YES

-- il y a bien une table supprime


SQL> SELECT owner,table_name,dropped FROM dba_tables
2 WHERE table_name=BIN$2tvUDS05RV+Rj2ogvU1aUg==$0;
OWNER
TABLE_NAME
DRO
------------------------------ ------------------------------ --DIANE
BIN$2tvUDS05RV+Rj2ogvU1aUg==$0 YES
-- et un segment associ
SQL> SELECT segment_name,blocks FROM dba_segments
2 WHERE segment_name=BIN$2tvUDS05RV+Rj2ogvU1aUg==$0;
SEGMENT_NAME
BLOCKS
------------------------------ ---------BIN$2tvUDS05RV+Rj2ogvU1aUg==$0
8
-- la table dans la corbeille peut tre interroge
SQL> SELECT COUNT(*) FROM diane."BIN$2tvUDS05RV+Rj2ogvU1aUg==$0";
COUNT(*)
---------20
-- je ressors la table de la corbeille
SQL> FLASHBACK TABLE diane.adherent TO BEFORE DROP;
Flashback termin.
-- cest tout bon
SQL SELECT COUNT(*) FROM diane.adherent;
COUNT(*)
---------20
-- il faut juste renommer les index (et les triggers)
SQL> SELECT index_name FROM dba_indexes
2 WHERE owner=DIANE AND table_name=ADHERENT;
INDEX_NAME
-----------------------------BIN$y3LFL/MFTs28v7JjGLBSjQ==$0
BIN$iDjv77eKRHGEDyAfQ+Hdnw==$0

Unetablequiestdanslacorbeillepeuttreinterroge.

4.Niveaubasededonnes
a.Principes
LafonctionnalitdeFlashbackDatabasepermetderamenerlabasededonnesltatoelletaitunmoment
- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

donn du pass. Cela quivaut une rcupration incomplte un instant donn, mais sans repartir dune
sauvegarde, ce qui est beaucoup plus rapide. Pour pouvoir utiliser cette fonctionnalit, il faut faire fonctionner la
basededonnesdansunmodeparticulier,lemodeFLASHBACK.
LorsquelabasededonnesfonctionnedanslemodeFLASHBACK,ellegnredesfichiersjournauxsupplmentaires
(flashback log), dans lesquels elle enregistre une copie des blocs modifis. Ces fichiers journaux sont
obligatoirementstocksdanslazonedercuprationrapide(sousrpertoirenommflashback).
La dure de conservation des informations dans le fichier journal flashback est dfinie par le paramtre
dinitialisation DB_FLASHBACK_RETENTION_TARGET (en minutes, 1 440 par dfaut, soit un jour). Comme le nom du
paramtrelindique,laduredeconservationindiqueestunobjectif.Silnyapassuffisammentdeplacedansla
zonedercupration,Oraclerduiraladuredeconservation.Vousdevezdonc,lencore,dimensionneravecsoin
lazonedercuprationrapide.
Lors dune opration de flashback vers un instant T dans le pass, les blocs seront restaurs partir du fichier
journal flashback, ltat o ils taient cet instant ou quelques instants avant ensuite, les fichiers de
journalisationserontappliqus.Ceuxcidoiventdonctredisponiblesetlabasededonnesfonctionnergalement
danslemodeARCHIVELOG.

LafonctionnalitdeFlashbackDatabaseestdisponibleuniquementenEnterpriseEdition.

b.ActiverlemodeFLASHBACK
Pour >mettre la base de donnes dans le mode FLASHBACK, vous devez monter la base de donnes et excuter
lordreSQLALTER DATABASE FLASHBACK ON :
SQL>
...
SQL>
SQL>
Base

SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE FLASHBACK ON;
de donnes modifie.

SQL> ALTER DATABASE OPEN;


Base de donnes modifie.
SQL> SELECT flashback_on FROM v$database;
FLA
--YES
Parailleurs,leparamtreDB_FLASHBACK_RETENTION_TARGETpeuttremodifidynamiquementparunordreSQLALTER
SYSTEM.
LavueV$FLASHBACK_DATABASE_LOGdonnedesinformationssurlesjournauxflashback :
OLDEST_FLASHBACK_SCN
NumroSCNleplusanciendanslesjournauxflashback.
OLDEST_FLASHBACK_TIME
Date/heuredunumroSCNleplusancien.
RETENTION_TARGET
Duredeconservationobjectif,tellequedfinieparleparamtreDB_FLASHBACK_RETENTION_TARGET.
FLASHBACK_SIZE
Tailleactuelledesdonnesflashback.
ESTIMATED_FLASHBACK_SIZE
Tailleestimedesdonnesflashbackncessairepourladuredeconservationobjectifactuellementdfinie.
LatailleESTIMATED_FLASHBACK_SIZEestestimesurlabasedelactivitdelabasededonnesdepuisquelemode

ENI Editions - All rights reserved - Algeria Educ

- 9-

FLASHBACKatactiv(ilfautattendreunpeu,avantquecettecolonnesoitrenseigne).
Silafentredeflashbackactuelle,donneparlavaleurdelacolonneOLDEST_ FLASHBACK_TIME,estpluscourteque
la dure objectif, cest que la zone de rcupration rapide est trop petite et quOracle ne peut pas conserver un
historiquesuffisant(ouquelepassagedanslemodeFLASHBACKestrcent).Vousdevez,danscecas,augmenterle
quotadespacealloulazonedercuprationrapide(paramtreDB_RECOVERY_ FILE_DEST_SIZE).
Il est possible dexclure un tablespace du mode FLASHBACK, grce la clause FLASHBACK ON | OFF qui peut tre
utiliselorsdelacrationoudelamodificationdutablespace(ONpardfaut).

c.Procderunflashbackdelabasededonnes
VouspouvezutiliserlordreSQL FLASHBACK DATABASEoulacommandeRMAN FLASHBACK DATABASEpourprocderune
oprationflashbacksurlabasededonnes.
Syntaxe

OrdreSQL

FLASHBACK DATABASE TO [BEFORE] { TIMESTAMP | SCN } expression ;


FLASHBACK DATABASE TO BEFORE RESETLOGS ;
FLASHBACK DATABASE TO RESTORE POINT nom ;

CommandeRMAN

FLASHBACK DATABASE TO [BEFORE] { TIME | SCN | SEQUENCE } [=] expression ;


FLASHBACK DATABASE TO BEFORE RESETLOGS ;
FLASHBACK DATABASE TO RESTORE POINT nom ;
DanslecasdelacommandeRMAN,ilestpossibledeprciserunnumrodesquencedefichierdejournalisation
commepointderetour labasededonnesestalors,ramenejusquau dernier numro SCN enregistr dans le
fichierdejournalisation(ouleprcdentsiloptionBEFOREestprsente).
Danslesdeuxcas,labasededonnesdoittremonte(pasouverte).
Ensuite,labasededonnesdoittreouvertedanslemodeRESETLOGS : cestunenouvelleincarnationdelabase
dedonnes.
ExempledansSQL*Plus
SQL> SHUTDOWN IMMEDIATE
...
SQL> STARTUP MOUNT
...
SQL> FLASHBACK DATABASE TO TIMESTAMP SYSDATE-1/24;
Flashback termin.
SQL> ALTER DATABASE OPEN RESETLOGS;
Base de donnes modifie.
Sivoussouhaitezvrifierquevoustrebienrevenuaumomentsouhait,vouspouvezouvrirlabasededonnes
enmodelectureseule :
ALTER DATABASE OPEN READ ONLY
Silersultatestsatisfaisant,vouspouvezarrterlinstance,laredmarrerenmontantlabasededonnes,puis
ouvrir la base de donnes avec loption RESETLOGS. Si le rsultat nest pas satisfaisant, vous pouvez raliser un
nouveauFLASHBACK DATABASEpourremonterunpeuplusloinenarrireouun RECOVER DATABASE UNTIL pour aller
lgrementenavant.
Si un tablespace a t exclu du mode FLASHBACK, vous devez le passer OFFLINE avant de procder au
flashback.Ensuite,vousdevezsupprimerletablespaceoulercuprerparunmoyentraditionnel.

- 10 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

UtiliserleDatabaseControl
1.Configurerlesparamtresdercupration
Surlapagedaccueil,cliquezsurlelienDisponibilitpuissurlelienParamtresdercuprationpouraccderla
pagedeconfigurationdesparamtresdercupration.
Cettepagecomporteplusieurssectionsquipermettent :

Derglerladuredercuprationmaximaledelinstance(paramtreFAST_START_ MTTR_TARGET) :

Deconfigurerlarchivagedesfichiersdejournalisation :

ENI Editions - All rights reserved - Algeria Educ

- 1-

Deconfigurerlazonedercuprationrapideetlajournalisationpourlafonctiondeflashbackdelabasede
donnes :

2.Configurerlesparamtresdesauvegarde
Surlapagedaccueil,cliquezsurlelienDisponibilitpuissurlelien Paramtresdesauvegardepouraccderla
pagedeconfigurationdesparamtresdesauvegarde :

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Longlet Priphrique permet de configurer les priphriques (canaux) par dfaut. Le cadreParamtre de disque
permetnotammentdeconfigurerlemplacementpardfautdessauvegardes(lazonedercuprationrapidesirien
dautre nest indiqu) et le type de sauvegarde par dfaut : jeu de sauvegarde, jeu de sauvegarde compress ou
copieimage.

LongletEnsembledesauvegardepermetdeconfigurerlesparamtrespardfautdesjeuxdesauvegarde,dontla
taillemaximaledunlmentdesauvegarde.
LongletRglepermet :

De configurer la sauvegarde automatique du fichier de contrle et du fichier de paramtres serveur, et


dactiverlesuividesblocsmodifispourlessauvegardesincrmentales :

ENI Editions - All rights reserved - Algeria Educ

- 3-

Deconfigurerlapolitiquedeconservationdessauvegardesetdesuppressiondesfichiersdejournalisation
archivs :

3.Sauvegardes
a.Introduction

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Surlapagedaccueil,cliquezsurlelienDisponibilitpuissurlelienProgrammerlasauvegardepouraccderla
pagedegestiondessauvegardes :

Cettepageproposedeuxpossibilits :

ProgrammerunesauvegardeproposeparOracle

Programmerunesauvegardepersonnalise.

b.StratgiedesauvegardeproposeparOracle

Lorsque vous choisissez loption Sauvegarde propose par Oracle, la premire page permet de slectionner la
destinationdessauvegardes.

ENI Editions - All rights reserved - Algeria Educ

- 5-


Surlapagesuivante,Oraclevousindiquelastratgiepropose cellecipeutvarierenfonctiondelaconfiguration
de la base de donnes. La stratgie usuelle propose par Oracle en Enterprise Edition est base sur des
sauvegardesincrmentales :

sauvegardeparcopieimagedelabasededonneslapremirefois

sauvegardeincrmentaledeniveau1ensuite

application rgulire des sauvegardes incrmentales la copie image pour la faire progresser dans le
temps.

Lapagesuivantepermetdeprogrammerlasauvegarde.

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


La dernire page donne un rcapitulatif de la sauvegarde et montre le script RMAN correspondant. Vous pouvez
cliquersurleboutonSoumettreletravailsilastratgieproposeparOraclevousconvient.

c.Stratgiedesauvegardepersonnalise
Lorsque vous choisissez loption Sauvegarde personnalise, la premire page permet de slectionner le type
dobjet sauvegarder (totalit de la base, tablespaces, etc.) et de saisir les informations didentification et de
connexionlhte.

En fonction du type dobjet slectionn, la page suivante permet de prciser la slection. Si vous slectionnez
lintgralitdelabasededonnes,vousarrivezdirectementsurlapagedechoixdesoptions.

ENI Editions - All rights reserved - Algeria Educ

- 7-


LapageOptionspermetdeprciserplusieursoptionssurlasauvegarde :

sauvegardecomplteousauvegardeincrmentale

sauvegardeenligne(baseouverte)ouhorsligne(baseferme)

sauvegardeounondesfichiersdejournalisationarchivs,etc.

- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

La page suivante permet de dsigner lemplacement de la sauvegarde et de modifier les paramtres de la


sauvegarde(boutonRemplacerlesparamtresencours),ceciuniquementpourlasauvegardeencours.

Lapagesuivantepermetdeprogrammerlasauvegarde(immdiatementouultrieurement,rptition,etc.).

La dernire page donne un rcapitulatif de la sauvegarde. Vous pouvez cliquer sur le bouton Modifier le script
RMAN pour voir le script RMAN correspondant, et au besoin le modifier. Vous pouvez cliquer sur le bouton
Soumettreletravailpoursoumettrecenouveautravaillordonnanceur(scheduler).

d.Supervisiondessauvegardes
Derniresauvegarde
Sur la page daccueil, dans le cadre Haute disponibilit, vous pouvez voir directement la date et lheure de la
derniresauvegarde :

ENI Editions - All rights reserved - Algeria Educ

- 9-

Travaux
Surlapagedaccueil,cliquezsurlelienTravauxdanslecadreLiensassocispourafficherlalistedestravaux :

Sauvegardes
Surlapagedaccueil,cliquezsurlelienDisponibilitpuissurlelienGrerlessauvegardesencourspouraccder
lapagedegestiondessauvegardes :

Cettepagepermetderechercherdessauvegardesetderaliserdiffrentesactions :

vrifierlacohrenceentrelerfrentielRMANetlesfichiersphysiques(boutonToutcontrevrifier)

supprimerlessauvegardesobsoltes(boutonSupprimertousleslmentsobsoltes)

- 10 -

cataloguerdesfichiersnonconnusdurfrentielRMAN(boutonEcriredesfichierssupplmentairesdans
lecatalogue)

openmirrors.com

supprimer tous les objets ayant le statut EXPIRED (bouton Supprimer tous les lments arrivs
expiration).

ENI Editions - All rights reserved - Algeria Educ

4.Rcupration
a.Dmarrerunercupration
Si la base de donnes nest pas ouverte, vous accdez lassistant rcupration, grce au bouton Effectuer la
rcuprationquiestpropossurlapagedonnantlestatutdelabasededonnes :

Aprs saisie des informations didentification et de connexion lhte puis la base de donnes (connexion
SYSDBA),vousaccdezlapagedercupration(voircidessous).
Silabasededonnesestouverte,vousaccdezlassistantrcuprationencliquantsurlelienDisponibilitpuis
surlelienEffectuerlarcupration.
Siunchecsurunfichieratdtect,Oracledclencheunealertecritiquedanslacatgorie"Echecdedonnes".
CesalertespeuventtrevisualisesdanslecadreAlertesdelapagedaccueil :

b.Lassistantdercupration

ENI Editions - All rights reserved - Algeria Educ

- 11 -


Les informations affiches en haut de la page dpendent de la nature du problme. Sur lexemple cidessus, un
chec a t dtect mais la base de donnes est ouverte. Si la base de donnes est ferme, laffichage le
mentionne.Exemple :

Sivousouvrezcettepagealorsquilnyaaucunproblme,aucuneinformationnestafficheenhaut.
Normalement, en cas de problme, des informations de diagnostic provenant du Data Recovery Advisor sont
affiches et le bouton Conseiller et rcuprer est actif vous pouvez cliquer ce bouton pour effectuer la
rcuprationlaideduDataRecoveryAdvisor(cf. ExempledercuprationavecleDataRecoveryAdvisor).Cestla
mthodelaplussimplepoureffectuerlarcupration.
SileproblmenestpasconsidrcommeunchecparleDataRecoveryAdvisor,desinformationsdediagnosticsont
quandmmeaffichesenhautdelapage,maisleboutonConseilleretrcuprerestinactif :

Dans ce cas, en cliquant dans lordre sur les liens affichs, le Database Control vous guide pour effectuer la
rcupration(cf.Exempledercuprationordonneparlutilisateur).
SivoussouhaitezeffectuerunercuprationalorsquaucunproblmenatdtectparOracle(parexemplepour
revenir avant un ordre SQL malencontreux), ou si vous souhaitez rsoudre un problme avec votre propre
stratgie,vouspouvezdmarrerunercuprationdite"ordonneparlutilisateur" :

- 12 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


Pourcela,vousdevezslectionnerltendue de la rcupration et un type dopration,puiscliquersurlebouton
Rcuprer(cf.Exempledercuprationordonneparlutilisateur).
Avant de dmarrer la rcupration avec une des mthodes prsentes cidessus, vrifiez que des
informationsdidentificationetdeconnexionlhtesontcorrectementsaisiesdanslebasdelapage.

c.ExempledercuprationavecleDataRecoveryAdvisor
VouspouvezaccderlapageduDataRecoveryAdvisordediffrentesmanires :

encliquantsurleboutonConseilleretrcuprerdelapagedercupration

encliquantsurlelienDataRecoveryAdvisorducentredeconseil

en cliquant sur le bouton Lancer Recovery Advisor des pages de rsultat de lexcution des outils de
vrification(cf.ChapitreLesoutilsdadministrationsectionDiagnostiquerlesproblmes).

CettepageafficheleschecsdtectsparleDataRecoveryAdvisor.Pardfaut,seulsleschecsdestatutOPENet
de priorit CRITICAL ou HIGH sont affichs vous pouvez utiliser le petit formulaire de recherche pour filtrer les
checsaffichs.
UnclicsurleboutonConseilpermetdafficherlesconseilsdersolutionpourleschecsslectionnsdanslaliste.

ENI Editions - All rights reserved - Algeria Educ

- 13 -

Leconseillercommenceparafficherlesactionsmanuellesquipeuventtreralisespoureffectuerlarcupration :

PourafficherlesactionsdercuprationautomatiqueidentifiesparleData Recovery Advisor,vouspouvezcliquer


surleboutonPoursuivreaveclesconseils.

PourexcuterlesactionsdercuprationautomatiqueidentifiesparleDataRecoveryAdvisor,vouspouvezcliquer
surleboutonContinuer.

CliquezsurleboutonSoumettreletravaildercuprationpourlancerlarcupration.
Silabasededonnesestouverte,leDataRecoveryAdvisorlanceletravaildercuprationetvousrendlamain :

- 14 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


VouspouvezretrouvercetravailencliquantsurlelienTravaux(cadreLiensassocissitudanslebasdelapage
daccueildechaqueonglet).
Silabasededonnesestferme,leDataRecoveryAdvisorattendqueletravailseterminepuisaffichelersultat :

cestade,deuxcasseprsententengnral :
Labasededonnestaitmonte(pasdeproblmeaveclesfichiersdecontrle)
Silarcuprationarussi,unboutonOuvrirlabasededonnesestprsentetilneresteplusqucliquersurce
boutonpourouvrirlabasededonnes.
Labasededonnesntaitpasmonte(problmeaveclesfichiersdecontrle)
Silarcuprationarussi,labasededonnesestmontemaisleDataRecoveryAdvisornesaitpasencoresielle
peuttreouverte leboutonOuvrirlabasededonnesnestpasprsent.
Sivouscliquezsurlebouton OK,vousrevenezsurlapagedestatutdelabasededonnesetvouspouvezde
nouveaucliquersurleboutonEffectuerlarcuprationpourrevenirsurlapagedercupration.
Silnyaplusdchecdefichier,lapageseprsenteainsi :

Pourouvrirlabasededonnes,cliquezsurlelienInstancedebasededonnespourrevenirlapagedestatut,
puissurleboutonDmarrer(cf.sectionDmarrageduchapitreDmarrageetarrt).
ENI Editions - All rights reserved - Algeria Educ

- 15 -

Silyadeschecsdefichier,lapageseprsenteainsietunenouvelleoprationdercuprationestncessaire :

ParfoislesinformationsduDataRecoveryAdvisornesaffichentpascorrectement cliquersurlelienStatut
en cours rsout, gnralement, ce problme. Vous pouvez aussi cliquer sur le lien Echecs de base de
donnespourafficherlapageduDataRecoveryAdvisor.

d.Exempledercuprationordonneparlutilisateur
Pour illustrer le fonctionnement de lassistant, nous allons prendre le cas dune rcupration dun fichier de
donnes :

CliquezsurleboutonRcuprer.

La page suivante permet de slectionner les fichiers de donnes rcuprer (bouton Ajouter) les fichiers
endommagsdtectsparOraclesontproposspardfautdanslaliste.

- 16 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ


La page suivante permet dindiquer sil faut restaurer les fichiers de donnes leur emplacement dorigine ou
ailleurs.

La dernire page donne un rcapitulatif de la rcupration. Vous pouvez cliquer sur le bouton Modifier le script
RMAN pour voir le script RMAN correspondant, et au besoin le modifier. Vous pouvez cliquer sur le bouton
Soumettrepourlancerlopration.Loprationnestpaslancesouslaformeduntravaildtach vousrestezsur
lapagetoutletempsdelopration,sansaucuneinformationsursondegrdavancement.
Lorsqueloprationesttermine,lerapportRMANestaffich.

e.Flashback
Basededonnes
Lassistantvouspermetdefaireunercuprationdetoutelabasededonnesjusqulheureencoursoujusqu
unpointantrieurdansletemps(basemonteuniquement) :

ENI Editions - All rights reserved - Algeria Educ

- 17 -


Dans ce cas, si la journalisation flashback est active sur votre base de donnes, Oracle vous indique quil peut
utiliserlafonctionnalitdeflashbackdelabasededonnes,silheurederetourdemandeestcompatibleavecles
journaux.CliquezsurleboutonRcupreretlaissezvousguider.
Table
Parmilestypesdobjetsdunercupration,vouspouvezchoisir Tables :

Danscecas,Oraclevousproposedefaireunflashbacksoitpourramenerlatabledansuntatantrieur,soitpour
annulerlasuppressiondunetable.Lencore,cliquezsurleboutonRcupreretlaissezvousguider.
Ligne
Lesfonctionnalitsdeflashbackdeniveauligne,maisaussideniveautable,sontaccessiblespartirdelapagede
gestiondestables,vialesmenusInterrogationdeversionsFlashbacketTableFlashback :

- 18 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Vuedensemble
Les outils Data Pump, Export, Import et SQL*Loader sont des outils trs puissants comportant de nombreuses
fonctionnalits unouvrageentierpourraitleurtreconsacr.
Lobjectifdecechapitreestdoncdeprsenterlesprincipesdefonctionnementgnrauxdecesdiffrentsoutils,de
donnerquelquesconseilssurleurutilisation,illustrsparquelquesexemplesclassiquesdutilisation.Pourapprofondir
lesujet,vouspouvezconsulterladocumentationOracleDatabaseUtilities.
Oracleproposetroisutilitairespermettantdadministrerlesdonnesdansunebase :

DataPumpExport : permetdexporterdansunfichierbinairepropritaireOracletoutouunepartiedesobjets
(structureet/oudonnes)dunebasededonnes
Data Pump Import : permet dimporter dans une base de donnes tout ou une partie des objets (structure
et/oudonnes)pralablementexportsparloutilDataPumpExport
SQL*Loader : permet de charger dans des tables dune base de donnes, des donnes stockes dans des
fichiersASCII.

Les outils Data Pump sont apparus en version 10. Dans les versions prcdentes, il existait deux outils quivalents
simplementappelsExportetImport.Cesoutilsexistenttoujourspourdesraisonsdecompatibilitascendantes,mais
lesoutilsDataPumpoffrentbienplusdefonctionnalits(voirlesremarquesciaprs).
Pourutilisercesoutils,labasededonnesdoittreouverte.
TouscesoutilspeuventtreutilissparlintermdiaireduDatabaseControl.
Les outils Data Pump (ou les anciens outils dexport et dimport) servent essentiellement changer des objets
(structureet/oudonnes)entredeuxbasesdedonnesOracle,quipeuventtresurdesplatesformesdiffrentes,et
quipeuventavoirdesversionsdiffrentes.LesoutilsDataPumpprsententdenombreuxavantagesparrapportaux
anciensoutilsdexportetdimport :

plusrapides

possibilitdarrteruntravailDataPump,puisderedmarrer

possibilitdedtachersasessionduntravailDataPump,puisdelarattacherultrieurement

possibilitdefairedestransfertsdirects,traverslerseau,entredeuxbasesdedonnes

plusdefinessedanslaslectiondesobjetsexporterouimporter

possibilitdavoiruneestimationdelespacencessairelorsdunexport

possibilitdeparallliseruneopration(EnterpriseEditionuniquement).

Data Pump nest pas compatible avec les outils dexport et dimport des versions prcdentes : un fichier export
laide de loutil dexport dune version prcdente ne peut pas tre lu avec loutil dimport Data Pump (et
rciproquement). Pour changer des donnes entre une base Oracle version 10 ou 11 et une base dune version
prcdente,ilfaututiliserlesoutilsdexportetdimporttraditionnels.
Danscechapitre,nousneprsenteronspaslesanciensoutilsdexportetdimport.Parcontre,nousprsenteronsles
outilsDataPump.
LoutilSQL*LoadersertessentiellementchargerdesdonnesprovenantduneautreapplicationnonOracle.
ParmilesfonctionnalitsdeSQL*Loader,lessuivantessontparticulirementintressantes :

Ilyapeudelimitationsurleformatdesdonnesdufichierexterne(largeurfixe,avecsparateur,etc.)

Plusieursfichiersexternespeuventtrechargsdanslammesession

Plusieurstablespeuventtrechargesdanslammesession

ENI Editions - All rights reserved - Algeria Educ

- 1-

Descritrespeuventtredfinispourliminercertainesdonnesdufichierexterne

LesdonnespeuventtretransformesavecdesfonctionsSQLpendantlechargement

Desnumrossquentielsuniquespeuventtregnrspourcertainescolonnes.

OracleneproposepasrellementdoutilpourextrairedesdonnesdansunfichierASCII.Ilfautdvelopperdesscripts
SQL(avecdesrequtesSELECTetlacommandeSPOOLpourlcrituredansunfichier)oudesprogrammesenPL/SQL.
Nousendonneronsdesexemplesenfindechapitre.
Depuislaversion10,OracleproposeaussilepackageDBMS_FILE_TRANSFERquipermetdeffectuerdescopies
defichiersbinaires,soitlocalement,soitentrebasesdedonnes.Cepackagepeuttreintressantpourdes
procduresdetransfertdedonnes.VoirladocumentationPL/SQLPackagesandTypesReference.

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Linstance
1.LaSGA
a.Vuedensemble
LaSGA(SystemGlobalArea)estunezonedemmoirepartageparlesdiffrentsprocessusdelinstance.
LaSGAestalloueaudmarragedelinstanceetlibrelorsdelarrt de linstance.Elleestdimensionneparun
ensembledeparamtresdfinisdanslefichierdeparamtres.
Depuis la version 9 dOracle, la SGA est redimensionnable chaud. Depuis la version 10 dOracle, certaines
structuresdelaSGApeuventtregresautomatiquement(cf.sectionLagestiondelammoiredanscechapitre).
LataillemaximaledelaSGAestlimiteparleparamtreSGA_MAX_SIZE.
LaSGAcomportelesstructuressuivantes :

DatabaseBufferCache:cachededonnes

RedoLogBuffer:mmoiretamponpourlenregistrementdesmodificationsapporteslabasededonnes

SharedPool:zonedepartagedesrequtesetdudictionnaireOracle

JavaPool:mmoireutiliseparlamachinevirtuelleJavaintgre

Large Pool : zone de mmoire optionnelle utilise par diffrents processus dans des configurations
particulires
Streams Pool : zone de mmoire utilise par la fonctionnalit Streams (fonctionnalit qui permet de faire
circulerdesinformationsentreprocessus)
ResultCache(nouveauenversion11) :cachepourlersultatdesrequtesSQLoudesfonctionsPL/SQL.

LaSGAcontientaussiunestructureappel"SGAfixe"quicontientdesinformationssurltatdelabasededonnes
etdelinstance,etsurlesverrous.CetteSGAfixenestpasdimensionneparleDBA satailleestfaible(quelques
centainesdeKo).
DansOracleEnterpriseManager,enfranais,Oracleutiliselaterminologiesuivante :
DatabaseBufferCache:Cachedetampon
SharedPool:Poolpartag
JavaPool:Pooljava
LargePool:ZonedemmoireLARGEPOOL
Gnralement,pluslaSGAestgrande,meilleuressontlesperformances...sousrservequelaSGAtienne
enmmoirephysique!

b.LaSharedPool
LaSharedPoolestcomposeprincipalementdedeuxstructures :

leLibraryCache

leDictionaryCache.

LeLibraryCachecontientdesinformationssurlesordresSQLetPL/SQLlesplusrcemmentexcuts :

ENI Editions - All rights reserved - Algeria Educ

- 1-

letextedelordre

saversionanalyse

leplandexcution.

LeDictionaryCachecontientlesinformationsdudictionnairededonnesOraclelesplusrcemmentutilises :

descriptiondestables

droitsdesutilisateurs

etc.

LaSharedPoolestglobalementdimensionneparleparamtredinitialisationSHARED_ POOL_SIZE.Larpartitionentre
le Library Cache et le Dictionary Cache est assure par Oracle. La taille de Shared Pool est typiquement comprise
entrequelquesdizainesdeMoetquelquescentainesdeMo.
LeLibraryCache
Lorsquune requte doit tre excute, Oracle doit dabord lanalyser (tape de parse) pour vrifier quelle est
syntaxiquement correcte (FROM aprs le SELECT) et smantiquement correcte (les tables et colonnes existent et
lutilisateuraledroitdyaccder),puisdterminerleplandexcutiondelarequte(diffrentestapespermettant
detraiterlarequte).
Commecettetapedanalyseprendunpeudetempsetquelersultatconsommedelammoire,Oraclecherche
partager les requtes entre les utilisateurs de manire gagner du temps et conomiser de la mmoire si un
utilisateurexcuteunerequtedjexcuteaupralable(parluiouparunautreutilisateur).
Lorsquunerequteestexcutepourlapremirefois,Oraclestockelersultatdelanalysedansle LibraryCache
puisexcutelarequte.Lorsquelammerequteestdenouveauexcuteplustard,Oracleestenmesuredela
retrouverdansleLibraryCacheetdelexcuterdirectementsansrefairelanalyse(outoutdumoinsenfaisantune
analysepluslgre).Danslapratique,leLibraryCacheayantunetaillefinie,OracleutiliseunalgorithmeLRU(Least
Recently Used) pour grer le cache : en cas de manque de place,Oracle supprime du cache la requte utilise la
moinsrcemment.
Pour Oracle, deux requtes sont les mmes si elles sont identiques au caractre prs (y compris
majuscules/minuscules,espaces,etc.).Lesrequtessuivantessonttoutesdiffrenteslesunesdesautres :
select
select
SELECT
SELECT

*
*
*
*

from
from
FROM
FROM

client
client
client
client

where
where
WHERE
WHERE

id
id
id
id

=
=
=
=

1;
1;
1;
2;

Lorsquelesrequtessontgnresparunapplicatif,ilnyagnralementpasdeproblmesurlesmajusculeset
lesminusculesousurlesespaceslorsquunutilisateurdemandeuneficheclientdanslapplication,larequtesous
jacenteesttoujourscritedelammemanire...saufpeuttrepourdesvaleursutilisesdanslaclauseWHERE(voir
lesdeuxderniersexemplescidessus).
Dans ce cas, lidentit parfaite peut tre obtenue en utilisant des variables bind dans le texte de la requte.
Exemple :
SELECT * FROM client WHERE id = :v;
Lutilisationdevariablesbinddansletextedelarequtelorsdudveloppementpermetdamliorerlepartagedes
requtes et peut amliorer de manire importante les performances dun systme accd simultanment par un
grandnombredutilisateurs.
Les principaux middleware utiliss pour interfacer Oracle et les outils de dveloppement permettent dutiliser les
variablesbind :OLEDB,OracleObjectsForOLE(OO4O),JDBC,BibliothqueOracledePHP,etc.
Le paramtre dinitialisation CURSOR_SHARING permet ventuellement dindiquer Oracle dans quelles
conditions deux requtes peuvent partager le mme curseur. Voir la documentation Oracle Database
Reference.

LeDictionaryCache

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

CommenousleverronsaupointLedictionnairededonnestoutOracle...estdansOracle,enloccurrencedansle
dictionnairededonnes.
Dans le dictionnaire de donnes, Oracle stocke toutes les informations relatives la base de donnes : liste des
tablesetdescolonnes,listedesutilisateursetdeleursdroits,informationssurlestockage,etc.
Lors de la phase danalyse dune requte, Oracle utilise le dictionnaire de donnes pour vrifier que les objets
demandsexistent,quelutilisateuraledroitdyaccder,pourdterminerosontstockslesobjets,etc.
Pourgarantirunbonniveaudeperformance,Oraclecherchemaintenirtoutoupartiedudictionnairededonnes
enmmoire,dansleDictionaryCache.

LeDictionaryCacheestaussiappelRowCachedansladocumentation.

c.LeDatabaseBufferCache
LeDatabaseBufferCachecontientlesblocsdedonneslesplusrcemmentutiliss :

blocsdetables

blocsdindex

blocsdesegmentsdannulation,contenantlaversionprcdentedesdonnesencoursdemodification.

Les blocs sont lus en mmoire par les processus serveur et crits dans les fichiers de donnes par le ou les
processusdarrireplanDBWn.
Toutemodification(INSERT,UPDATE,DELETE)dunblocseffectueenmmoireetlcrituresurdisqueestdiffre.
LeDatabaseBufferCacheestuncachededonnesquijouelemmerlequelaSharedPoolmaispourlesdonnes.
Lesdonnesdelabasededonnesnesontaccessibles,enlectureouenmisejour,quaprsavoirtcharges
dansleDatabaseBufferCache.
Danslapratique,leDatabaseBufferCacheayantunetaillefinie,OracleutiliseunalgorithmeLRU(LeastRecentlyUsed)
pour grer le cache : en cas de manque de place, Oracle supprime du cache les donnes utilises le moins
rcemment.
LeDatabaseBufferCacheestdimensionnparlesparamtressuivants :

DB_CACHE_SIZE :tailleducachepourlatailledeblocpardfaut(poolDEFAULT)

DB_nK_CACHE_SIZE :tailleducachepourlesblocsdenKo(nvalant2,4,8,16ou32).

Danslecasolabasededonnesutilisedestablespacesayantdestaillesdeblocsdiffrentesdelatailledebloc
standard, il faut dimensionner dautres pools dans le Database Buffer Cache, pour les blocs en question cette
oprationseffectuegrceauxparamtresDB_nK_CACHE_SIZE.
Danscertainesconfigurationsplusavances,ilestpossibleaussidedfinirdeuxautrespoolsauseinduDatabase
BufferCache :

LepoolKEEPdestinstockerdesdonnesquidoiventresterlepluslongtempspossibleenmmoire.Cepoolest
dimensionnparleparamtreDB_KEEP_ CACHE_SIZE.
LepoolRECYCLEdestinstockerdesdonnesquinontpasvocationresterlongtempsenmmoire.Cepoolest
dimensionnparleparamtreDB_RECYCLE_ CACHE_SIZE.

Avant Oracle9i, la taille du Database Buffer Cache tait dfinie en nombres de blocs (dune taille dfinie par
DB_BLOCK_SIZE) grce au paramtre DB_BLOCK_BUFFERS. Ce paramtre existe toujours pour des raisons de
compatibilitascendantemaisilestdprci.

Gnralement,augmenterlatailleduDatabaseBufferCacheamliorelesperformances.

d.LeRedoLogBuffer

ENI Editions - All rights reserved - Algeria Educ

- 3-

LeRedoLogBufferstockelesinformationssurlesmodificationsapporteslabasededonnes,avantleurcriture
dansunfichierdejournalisation.
Cebufferestutilisdemaniresquentielle(lesmodificationsdeplusieurstransactionssemlangent)etcirculaire
(quandilestplein,ilrepartaudbut...aprsavoirtcritsurdisquedansunfichierdejournalisation).
Pourchaquemodification,uneentreredo(redoentry)estcritedanslebuffer.
Une entre redo est compose dun ensemble de vecteurs (change vector) qui dcrivent chacun une modification
atomique dun bloc (table, index ou segment dannulation). La nouvelle valeur, mais aussi lancienne, sont ainsi
enregistresdanslefichierdejournalisation.Ainsi,lestables,lesindex,maisaussilessegmentsdannulation,sont
"protgs" par les fichiers de journalisation. Lors dune rcupration, les fichiers de journalisation contiennent les
informationsncessairespourrefaireunetransactionperdue(notionderollforward)ouannulerunetransactionen
coursaumomentdelincident(notionderollback).
LeRedoLogBufferestdimensionnparleparamtreLOG_BUFFER.

e.AutrespoolsdelaSGA
LaJavaPool
LaJavaPoolestdimensionneparleparamtreJAVA_POOL_SIZE(24Mopardfaut).Ceparamtrepeuttremis0
si la machine virtuelle Java intgre Oracle nest pas utilise. Vous pouvez consulter la documentation Oracle
Database Java Developers Guide pour les considrations sur la mmoire utilise par la machine virtuelle Java
intgre.
LaLargePool
LaLargePoolestnotammentutilisedanslaconfigurationserveurpartag(voirplusloin).Elleestdimensionnepar
leparamtreLARGE_POOL_SIZE.Lavaleurpardfautduparamtreestdrivedautresparamtres.
LaStreamsPool
La Streams Poolest dimensionne par le paramtre STREAMS_POOL_SIZE (0 par dfaut). Vous pouvez consulter la
documentation Oracle Streams Concepts and Administration pour en savoir plus sur le fonctionnement de la
fonctionnalitStreams.
LeResultCache
La taille maximum duResult Cache est dimensionne par dfaut par Oracle en fonction de la quantit de mmoire
totale disponible pour la SGA et du mode de gestion de la mmoire actuellement utilis (voir plus loin). En cas de
besoin, cette taille maximum peut tre dfinie par le paramtre RESULT_CACHE_MAX_SIZE. Vous pouvez consulter la
documentation Oracle Database Performance Tuning Guide pour obtenir plus dinformations sur lutilisation du
ResultCache.

f.Lanotiondegranule
UngranuleestunequantitdemmoirequipeuttrealloueunestructuredelaSGA.Latailledugranuledpend
delatailletotaledelaSGA :

4MosilatailletotaledelaSGAestinfrieureougale1Go
8 Mo (plateforme Windows) ou 16 Mo (autres platesformes) si la taille totale de la SGA est strictement
suprieure1Go.

Lallocation de mmoire aux structures de la SGA seffectue en nombre entier de granules (avec un arrondi
automatiqueaugranulesuprieursilavaleurdunparamtrenestpasunmultipledelatailledugranule).

2.Lesprocessusdarrireplan
a.Introduction
Les processus darrireplan ont chacun un rle bien prcis dans le fonctionnement de linstance. La plupart des
processus darrireplan sont lancs au dmarrage de linstance et arrts lors de larrt de linstance. Certains
processuspeuventtrelancsetarrtsaucoursdufonctionnementdelinstance.
- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Il existe, en tout, une trentaine de processus darrireplan diffrents, mais certains processus darrireplan
peuvent tre lancs en plusieurs exemplaires. Chaque processus darrireplan a un nom de 4 caractres,
ventuellementdelaformeABCn,ntantunnumroouunelettrevariablepourlesprocessusmultiples.
Lesprincipauxprocessusdarrireplanpouruneinstancestandardsontlessuivants :
DBWn
LGWR
CKPT
SMON
ARCn
CJQn
PMON

b.DBWn
Les processus darrireplan DBWn (Database Writer) sont chargs dcrire les blocs modifis du Database Buffer
Cachedanslesfichiersdedonnes.
Gnralement, une instance a un seul processus Database Writer dsign par DBW0. Sur les systmes
multiprocesseursetmultidisquesayantuneforteactivitdemisejour,ilestpossible,voireconseill,dedmarrer
plusieursprocessusDatabaseWriter(jusqu20).
LesprocessusDBWnralisentdescrituresmultiblocs,endiffrparrapportauxmodificationsenmmoire.
Lcritureestdclencheparundesvnementssuivants :

Unprocessusserveurnetrouvepasdeplacedanslecache.
Priodiquement,pourfaireavancerlepointdereprise(positiondanslesfichiersdejournalisationpartirde
laquellelarcuprationdelinstanceestsusceptiblededmarrer).

Ilestdoncimportantdenoterquil nyapasdesynchronisationentrelamodificationdunblocenmmoire,mme
valide(COMMIT),etlcrituresurdisquedesblocsenquestion.
uninstantdonn,ilestdoncpossibledesetrouverdanslasituationsuivante:

Unfichierdedonnespeutnepascontenirlesdonnesmodifiesdetransactionsvalides(COMMITes).
Inversement,sile DatabaseBufferCacheestpetit,silavalidationtarde,sidautresprocessusserveursont
besoin de place dans le cache, des donnes modifies de transactions non valides peuvent tre crites
danslesfichiersdedonnes.

Que se passetilencasdeplantagedelinstance cet instant prcis ? Nous verrons dans la suite que, pour les
deux situations prcdentes, les informations ncessaires sont prsentes dans les fichiers de journalisation et
permettentlinstance,lorsquelleredmarre,deremettrelesfichiersdedonnesentat(cestla"rcuprationde
linstance"djvoqueprcdemment).

c.LGWR
LeprocessusdarrireplanLGWR(LogWriter)estchargdcrireleRedoLogBufferdanslefichierdejournalisation
courant.
LGRWcritsquentiellementdanslesfichiersdejournalisation.
Lcritureestdclencheparundesvnementssuivants :

Unetransactionestvalide(COMMIT).

LeRedoLogBufferestautiersplein.

Database Writer sapprte crire des blocs modifis de transactions non valides dans les fichiers de
donnes.

ENI Editions - All rights reserved - Algeria Educ

- 5-

Undlaiestdpass(3secondes).

LcrituredanslesfichiersdejournalisationduRedoLogBufferestlaseulechosequiseproduitlorsdelavalidation
(COMMIT)dunetransaction.Cetteoprationdcrituretantnormalementrapide,lavalidationestrapide(notionde
fastcommit).
Inversement, si DBWn crit dans les fichiers de donnes des blocs modifis de transactions pas encore valides
(COMMITes),leRedoLogBufferestcritdanslesfichiersdejournalisation.
Nous avons vu prcdemment que leRedo Log Buffer contient les anciennes valeurs des donnes modifies (dans
desblocsdesegmentdannulation)etlesnouvellesvaleurs(dansdesblocsdetablesetdindex).
Encasdarrtanormaldelinstance,lefaitquunfichierdedonnespuissenepascontenirlesdonnesmodifiesde
transactionsvalidesoucontenirdesdonnesmodifiesdetransactionsnonvalides,neposepasdeproblme:
grceauprocessusdcriture dcrit cidessus, les fichiers de journalisation contiennent forcment les informations
ncessairespourrefairelestransactionsvalides(mettredanslesfichiersdedonneslesdonnesmodifiesdes
transactionsvalides)oudfairelesmodificationsnonvalides(remettredanslesfichiersdedonneslesanciennes
donnes pour les modifications non valides). Cette rcupration de linstance aprs un arrt anormal est un
processusautomatiquequinerequiertaucuneintervention.
Lorsdelavalidationdunetransaction,OracleaffecteunnumroSCN(SystemChangeNumber)latransaction.Ce
numroSCNestenregistrdanslefichierdejournalisationetdautresendroits.Cenumroestfondamentalpour
lacapacitdusystmesavoiroilenest.

d.CKPT
Priodiquement,touslesblocsmodifisduDatabase Buffer Cachesontcritsdanslesfichiersdedonnes :cestle
mcanisme de synchronisation (checkpoint). Par ce biais, les fichiers de donnes et les fichiers de contrle sont
renduscohrents(mmenumroSCN).Celapermetdegarantirquelesblocsmodifisenmmoiresontbiencrits
danslesfichiersdedonnes.
Cemcanismedfinitaussiunpointdereprisedanslesfichiersdejournalisation(correspondantunnumroSCN) :
cettepositioncorrespondlamodificationdebloclaplusanciennequinapasencoretcritedansunfichierde
donnes.Encasdarrtanormaldelinstance,cepointmarqueledbutdesdonnesutiliserpourlarcupration
delinstance.
Unesynchronisationsedclenchenotammentlorsdunbasculementdefichierdejournalisation.Celaprovoquedans
ce cas, lcriture dans les fichiers de donnes des blocs modifis (non encore crits) relatifs aux informations
prsentesdanslefichierdejournalisation.
Le processus darrireplan LGWR sinterdit de commencer crire dans un fichier de journalisation dont la
synchronisation nest pas termine. En effet, tant que cette synchronisation nest pas termine, le fichier de
journalisationcontientdesinformationsquiseraientncessairespourunercuprationdelinstanceencasdarrt
anormal.
Une synchronisation se produit aussi lors de larrt de la base de donnes et lors de la mise hors ligne dun
tablespace.Avantcesoprationsde"fermeture",lesblocsmodifisquisetrouventencoreenmmoiresontcrits
danslesfichiersdedonnes.
LeprocessusdarrireplanCKPT(Checkpoint)asimplementpourrledenregistrerlepointdereprisedanslentte
desfichiersdedonnesetdanslefichierdecontrle.

e.SMON
Le processus darrireplanSMON(SystemMonitor)estprincipalementchargdefairelarcuprationdelinstance
aprsunarrtanormal.
Ilestaussichargdelibrerlessegmentstemporairesinutilissetdecompacterlespacecontigudisponibledans
les tablespaces grs par le dictionnaire (voir le chapitre Gestion des tablespaces et des fichiers de donnes). Au
coursdelarcuprationdelinstance,SMONeffectuedeuxoprations :

Un rollforward pour appliquer aux fichiers de donnes les modifications non enregistres des transactions
valides.
Puis unroll back pour enlever des fichiers de donnes les modifications enregistres des transactions non
valides.

f.PMON

- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Le processus darrireplan PMON (Process Monitor) est principalement charg du nettoyage lors du plantage dun
processusutilisateur :

Annulation(ROLLBACK)delatransaction.

Librationdesverrousetdesressources.

PMONestcapablededtecterlessituationsounprocessusutilisateurquiaouvertunesessionsurleserveurnest
plus"prsent"etnapasfermlasession.Lacausedelanon"prsence"duprocessusutilisateurestvariable:fin
anormaledelapplicationsurlepostedelutilisateur,coupurerseau,etc.
Danstouslescas,PMONsechargedunettoyageeneffectuantuneannulation(ROLLBACK)delatransaction,cette
annulationlibrantnotammentlesverrouspossparlatransaction.Dupointdevuedelintgritdesdonnesdans
labasededonnes,ladisparitionduprocessusutilisateurneposepasdeproblme.

g.CJQn
LesprocessusdarrireplanCJQn(JobQueue)sontchargsdexcuterpriodiquementlestchesprogrammessur
lesystme.
Unprocessuscoordinateur(CJQ0)surveillesilyadestravauxexcuter.Sicestlecas,ildmarreunprocessus
esclave(J000J999)quivasechargerdexcuterletravail.
Des travaux (traitements PL/SQL par exemple) peuvent tre programms laide du package
DBMS_SCHEDULERoudesfonctionsdeprogrammationdOracleEnterpriseManager.

h.ARCn
LesprocessusdarrireplanARCn(Archiver)sontchargsdelarchivagedesfichiersdejournalisationpleins.
LefonctionnementdecesprocessusseraprsentplusendtaildanslechapitreSauvegardeetrcupration.

3.Lesprocessusserveurs
Lesprocessusserveurssontchargsdetraiterlesrequtesdesutilisateurs,etnotammentdechargerlesdonnes
ncessairesdansleDatabaseBufferCache.
Leprocessusserveurcommunique(localementoutraverslerseau)avecunprocessusutilisateurcorrespondant
lapplicationdelutilisateur.
Dans la configuration par dfaut, Oracle lance un processus serveur ddi pour chaque utilisateur (dedicated server
configuration).Ceprocessusnetraitequelesrequtesdelutilisateurenquestion.
Si besoin, Oracle peut tre configur en serveur partag (shared server configuration) de manire avoir des
processusserveurspartagsparplusieursprocessusutilisateurs.
Dans une configuration serveur partag, un petit nombre de processus serveurs sont partags entre les diffrents
processus utilisateurs et peuvent traiter indiffremment les requtes de nimporte quel processus utilisateur. Cette
configurationpermetdelimiterlenombredeprocessuslancssurleserveuretdoptimiserlutilisationdesressources
systmes. Cette configuration est une configuration avance qui nest pas couverte dans cet ouvrage. La mise en
uvredecetteconfigurationestprsentedansladocumentationOracleDatabaseAdministratorsGuide.
Danslesdeuxcas,lacommunicationentreleprocessusutilisateuretleprocessusserveurestlocale,silapplication
estlancesurleserveurouseffectuetraverslerseau(grcelacoucheOracleNet),silapplicationestlancesur
unpostedurseau.

4.LaPGA
LaPGA(ProgramGlobalArea)estlammoireprivedesdiffrentsprocessus.
Pourunprocessusserveur,laPGAcontient :

unezonedetravailSQL(SQLworkarea)allouedynamiquementpourcertainesoprations(triparexemple)

ENI Editions - All rights reserved - Algeria Educ

- 7-

desinformationssurlasession

desinformationssurletraitementdesrequtesdelasession

lesvariablesdesession.

LaPGAtotale,allouetouslesprocessusserveurs,estappelePGAagrge(aggregatedPGA)ouPGAdelinstance
(instancePGA).
Dansuneconfigurationserveurpartag,unepartiedelaPGAestenfaitstockedanslaSGA,danslaLargePool,ou,
dfaut,danslaSharedPool.
Dans une configuration serveur partag, ce nest pas forcment le mme processus serveur qui va traiter deux
requtes successives du mme processus utilisateur. Les informations relatives cette session utilisateur doivent
donctreaccessibleslensembledesprocessusserveurscestlaraisonpourlaquelle,danscetteconfiguration,une
partie de la PGA des processus serveurs est en fait stocke dans la SGA lorsquun processus serveur traite la
requte dun processus utilisateur, il "recharge" le contexte du processus utilisateur partir de la SGA. En
configurationserveurpartag,ilfautdoncaugmenterlatailledelaSGA(deprfrenceenprvoyantuneLargePool),
maislesbesoinsglobauxenmmoiresontpeuprsidentiques(puisquelesprocessusserveursutilisentenpropre
moinsdemmoire).
Historiquement,latailledelazonedetravailSQLestcontrleparplusieursparamtres:SORT_AREA_SIZE(pourles
tris), HASH_AREA_SIZE (jointure par hachage), BITMAP_ MERGE_AREA_SIZE (fusion de bitmap dindex bitmap) et
CREATE_BITMAP_AREA_SIZE(crationdindexbitmap).Cesdiffrentsparamtressontcomplexesrglercarlesbesoins
peuventvarierdunesessionlautre.
Depuis la version 9, un nouveau mcanisme permet de grer automatiquement et globalement la PGA agrge des
processusserveurs.llsuffitdedfinirlaquantitdemmoiretotalequipeuttreutiliseparlaPGAagrgeetlaisser
Oraclerpartircettemmoireentrelesdiffrentsprocessusenfonctiondesbesoins.Aveccemodedefonctionnement,
touslesparamtresprsentscidessussontignors.
La taille de la PGA agrge des processus serveurs est dfinie par le paramtre PGA_ AGGREGATE_TARGET (voir la
sectionCrationdelabasededonneslamaindanslechapitreCrationdunenouvellebasededonnes).
Enversion11,laPGApeutaussitregreautomatiquementauseindelammoiretotaledelinstance(cf.sectionLa
gestiondelammoiredanscechapitre).

5.Lagestiondelammoire
a.Vuedensemble
LagestiondelammoirevoluechaqueversionafindeproposerauDBAdespossibilitsderglageautomatique
deplusenpluspousses :

Version
Oracle9i

Oracle10g

SGA

PGA

SGAdynamique

GestionautomatiquedelaPGA

LeDBAdoitdimensionner
individuellementlesdiffrentes
composantesdelaSGA,mais
cescomposantessont
redimensionnableschaud.

LeDBAalloueunequantitde
mmoiretotalepourlaPGA
agrgedesprocessusserveurs
etOraclerpartitcettemmoire
automatiquemententreles
diffrentsprocessusenfonction
desbesoins.

Gestionautomatiquedela
mmoirepartage
LeDBAalloueunequantitde
mmoiretotalepourlaSGAet
Oraclerpartitcettemmoire
automatiquemententreles
diffrentescomposantesdela
SGAenfonctiondesbesoins.

Oracle11g

Gestionautomatiquedela
mmoire
LeDBAalloueunequantitde

- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

mmoiretotalepourlinstanceet
Oraclerpartitcettemmoire
automatiquemententrelaSGA
(etcesdiffrentescomposantes)
etlaPGAenfonctiondes
besoins.

Pourquelagestionautomatiquedelammoireoudelammoirepartagesoitoprationnelle,ilfautquele
paramtreSTATISTICS_LEVELsoitTYPICAL(savaleurpardfaut)ouALL.
LesprincipesdelagestionautomatiquedelaPGAonttprsentsdanslasectionLaPGAdanscechapitre.

b.Lagestionautomatiquedelammoirepartage
Lorsquelagestionautomatiquedelammoirepartageestactive(AutomaticSharedMemoryManagementASMM),
lescomposantessuivantesdelaSGAsontdimensionnesautomatiquementparOracle,enfonctiondeleursbesoins
respectifs,etadaptesdynamiquementenfonctiondelachargedusystme :

DatabaseBufferCache(paramtreDB_CACHE_SIZE),

SharedPool(paramtreSHARED_POOL_SIZE),

LargePool(paramtreLARGE_POOL_SIZE),

JavaPool(paramtreJAVA_POOL_SIZE),

StreamsPool(paramtreSTREAMS_POOL_SIZE),

SGAfixe(pasdeparamtre).

LesautrescomposantesdelaSGAnesontpasprisesenchargeparlagestionautomatiquedelammoirepartage
etilconvientdelesdimensionnerlamainsibesoin :

RedoLogBuffer(paramtreLOG_BUFFER),
Autres pools du Database
DB_RECYCLE_CACHE_SIZE).

Buffer

Cache

(paramtres

DB_nK_CACHE_SIZE,

DB_KEEP_CACHE_SIZE,

Pour activer la gestion automatique de la mmoire partage, il suffit de dfinir le paramtre SGA_TARGET. Ce
paramtrespcifielaquantitdemmoiretotaleallouelaSGA,pasuniquementlaquantitdemmoirealloue
aux composantes prises en charge par la gestion automatique la mmoire alloue manuellement aux autres
composantes est dduite deSGA_TARGET. Si besoin, la taille de la SGA peut tre modifie chaud, en modifiant la
valeurduparamtreSGA_TARGET,danslalimitedeSGA_MAX_SIZE.
Dans cette configuration, si les paramtresDB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE et
STREAMS_POOL_SIZEnesontpasspcifis,ilssontmiszroparOracleetlatailleducomposantcorrespondantest
automatiquement et dynamiquement ajuste en interne par Oracle. Si ces paramtres sont spcifis, ils imposent
unetailleminimumaucomposant.
Si SGA_TARGET est gal zro (rglage automatique dsactiv), les paramtres DB_CACHE_SIZE, SHARED_POOL_SIZE,
JAVA_POOL_SIZEetSTREAMS_POOL_SIZEdoiventtredfinismanuellement silsnelesontpas,unevaleurpardfaut
leurestaffecte.NoubliezpasnonplusquelammoireestalloueauxcomposantesdelaSGAennombreentierde
granules.Latailledungranuleestde4MosiSGA_MAX_SIZEestinfrieurougal1Goetde16Mo(8Mosurplate
formeWindows)siSGA_MAX_SIZEestsuprieur1Go.Encasdebesoin,Oraclearronditlavaleurdesparamtresau
granulesuprieur.
LinstanceutilisegnralementungranulepourleRedoLogBufferetlaSGAfixe.
Exemple1 :
SGA_MAX_SIZE = 900M
SGA_TARGET = 800M
LOG_BUFFER = 524288
DB_16K_CACHE_SIZE = 64M

ENI Editions - All rights reserved - Algeria Educ

- 9-

DB_CACHE_SIZE = 256M
Surcetexemple,lagestionautomatiquedelammoirepartageestactive.Un poolde64Moestalloudansle
Database BufferCache pour les blocs de 16 Ko et un minimum de 256 Mo est demand pour le pool standard du
DatabaseBufferCache.
LatailledelaSGAest800Mo(SGA_TARGET).
LammoiredisponiblepourlerglageautomatiqueestgalSGA_TARGETDB_16K_CACHE_SIZEungranule(SGAfixe
et Redo Log Buffer) soit 800 64 4 = 732. Cette quantit de mmoire est rpartie automatiquement et
dynamiquement par Oracle entre les paramtres DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_ SIZE,
JAVA_POOL_SIZEetSTREAMS_POOL_SIZE,enfonctiondesbesoins,maisavecunminimumgarantide256Mopourlepool
standardduDatabaseBufferCache.
Lammoirelibreestde100Mo(SGA_MAX_SIZESGA_TARGET) encasdebesoinSGA_TARGETpeuttreaugmentpour
tirerpartidecettemmoiredisponible.
Exemple2 :
SGA_MAX_SIZE = 900M
SGA_TARGET = 0
LOG_BUFFER = 524288
DB_CACHE_SIZE = 512M
SHARED_POOL_SIZE = 64M
Sur cet exemple, la gestion automatique de la mmoire partage nest pas active. Le Database Buffer Cache est
dimensionn512MoetlaSharedPool64Mo.LaJavaPooletlaLargePoolsontdimensionnespardfaut.
La taille de la SGA est gale DB_CACHE_SIZE + SHARED_POOL_SIZE + JAVA_POOL_SIZE (dfaut) + LARGE_POOL_SIZE
(dfaut)+ungranule(SGAfixeetRedoLogBuffer)=512+64+24+0+4=604Mo
La mmoire libre est de 296 Mo (SGA_MAX_SIZE taille de la SGA) en cas de besoin les diffrents paramtres
pourronttreaugmentspourtirerpartidecettemmoiredisponible.

c.Lagestionautomatiquedelammoiredelinstance
Enversion10,laSGAetlaPGApeuventtregresautomatiquementparOracle,maiscestdelaresponsabilitdu
DBA de rpartir la mmoire disponible pour Oracle entre les deux structures (SGA_TARGET pour la SGA et
PGA_AGGREGATE_TARGETpourlaPGA).
La version 11 dOracle introduit la gestion automatique de la mmoire (Automatic Memory Management AMM) qui
tendlafonctionnalitdegestionautomatiquedelammoirepartageapparueenversion10.Cettefonctionnalit
estsupporteuniquementsurlesplatesformessuivantes:Linux,Solaris,Windows,HPUXetAIX.Sivoustentez
dactivercettefonctionnalitsuruneplateformenonsupporte,vousobtiendrezlemessagederreursuivant :ORA00845:MEMORY_TARGET non pris en charge sur ce systme.
Lorsque la gestion automatique de la mmoire est active, la mmoire alloue linstance est rpartie
automatiquement par Oracle entre la SGA (avec ces diffrentes composantes) et la PGA. Cette rpartition est
adaptedynamiquementenfonctiondelachargedusystmeetdesbesoinsdesdiffrentesstructures.
Pouractiverlagestionautomatiquedelammoire,ilsuffitdedfinirleparamtreMEMORY_TARGET.Ceparamtrefixe
latailledelammoireallouelinstance.Encomplment,ilestpossiblededfinirlataillemaximumdelammoire
utilisableparlinstanceavecleparamtre<MEMORY_MAX_TARGET.
Sibesoin,latailledelammoireallouelinstancepeuttremodifiechaud,enmodifiantlavaleurduparamtre
MEMORY_TARGET,danslalimitedeMEMORY_MAX_TARGET.
LaSGAestgreselonlesmmesprincipesquaveclagestionautomatiquedelammoirepartage.Ainsi,comme
aveclagestionautomatiquedelammoirepartage,leRedoLogBufferetlesautrespoolsduDatabaseBufferCache
nesontpasprisenchargeparlagestionautomatiqueetilconvientdelesdimensionnerlamainsibesoin.
Normalement,lorsquelagestionautomatiquedelammoireestutilise,touslesautresparamtresrelatifsune
composantedemmoiregreautomatiquementdoiventtremiszroousupprims.
Nanmoins,silesparamtresSGA_TARGET et/ouPGA_AGGREGATE_TARGETsontdfinis,ilsimposentunetailleminimum
respectivementpourlaSGAetlaPGA.Demme,commedanslagestionautomatiquedelammoirepartage,siun
des paramtres DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE ou STREAMS_POOL_SIZE est
spcifi,ilimposeunetailleminimumaucomposant.
linverse,sileparamtreSGA_MAX_SIZEestdfini,ilimposeunetaillemaximumpourlaSGA.
Exemple :
MEMORY_MAX_TARGET = 900M
MEMORY_TARGET = 800M

- 10 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

SGA_MAX_SIZE = 500M
SGA_TARGET = 300M
DB_CACHE_SIZE = 128M
DB_16K_CACHE_SIZE = 64M
PGA_AGGREGATE_TARGET = 64M
Surcetexemple,lagestionautomatiquedelammoireestactive.
Lammoireallouelinstanceestde800Mo(MEMORY_TARGET).
La mmoire disponible pour le rglage automatique est gale MEMORY_TARGET DB_16K_CACHE_SIZE un granule
(SGA fixe etRedo Log Buffer) soit 800 64 4 = 732. Cette quantit de mmoire est rpartie automatiquement et
dynamiquement par Oracle entre la PGA et les composantes de la SGA gres automatiquement, en fonction des
besoins,maisavecunminimumgarantide128Mo(DB_CACHE_SIZE)pourlepoolstandardduDatabaseBufferCache,
64 Mo (PGA_AGGREGATE_TARGET) pour la PGA, et une SGA comprise entre 300 Mo (SGA_TARGET) et 500 Mo
(SGA_MAX_SIZE).
La mmoire libre est de 100 Mo (MEMORY_MAX_SIZE MEMORY_TARGET) en cas de besoin MEMORY_TARGET peut tre
augmentpourtirerpartidecettemmoiredisponible.
Cetexempleestdonndansunbutpdagogique.Danslapratique,silagestionautomatiquedelammoire
est utilise, il est conseill de ne spcifier aucun paramtre relatif une composante de mmoire gre
automatiquementautrequeMEMORY_TARGETetMEMORY_MAX_TARGET.

d.Gestionmanuelle:conseilsurlarpartitionSGA/PGA
Si vous choisissez de grer manuellement la rpartition de la mmoire entre la SGA et la PGA, Oracle donne les
indicationssuivantes :

Pourlessystmestransactionnels(OLTP)

SGA:environ80%delammoiredisponiblepourlinstance

PGA:environ20%delammoiredisponiblepourlinstance

Pourlessystmesdcisionnels(DSS)

SGA:entre50%et30%delammoiredisponiblepourlinstance

PGA:entre50%et70%delammoiredisponiblepourlinstance

Cetterecommandationestunpointdedpart.Ilestncessairedesurveillerensuitelefonctionnementdelinstance
pouraffinercesvaleurs.
Enrglegnrale,lesrequtesexcutesparlessystmestransactionnelseffectuentdespetitstris lesprocessus
serveursnontdoncpasbesoindunegrossezonedetravail.PrivilgierlaSGAestalorsopportun.
linverse,lesrequtesdessystmesdcisionnelseffectuentdegrostris lesprocessusserveursontdoncbesoin
dunegrossezonedetravail.PrivilgierlaPGAestalorsopportun.
CesdirectivespeuventtreutilisespourdimensionnerlaSGAetlaPGAsurunsystmedontlammoirephysique
estimpose.
Supposonsparexemplequelesystmedisposede1Godemmoirephysique.Nouspouvonsfaireleraisonnement
suivantpourunsystmetransactionnel :

Rserver20%delammoirepourlesystmedexploitation(plussidautresapplicationssexcutentsurle
serveur),soit204Moarrondis224Mo(unpeudemarge).
Ilrestedoncenviron800ModisponiblespourOracle.
Attribuer80%decettemmoirelaSGAet20%laPGA,cequipermetdespcifierSGA_MAX_SIZE = 640Met
PGA_AGGREGATE_TARGET = 160M.
Si nous dcidons dutiliser la fonctionnalit de gestion automatique de la mmoire partage, et de laisser

ENI Editions - All rights reserved - Algeria Educ

- 11 -

Oracle faire compltement, nous pouvons aussi spcifier SGA_TARGET = 640M (autant utiliser toute la
mmoire).

Si nous souhaitons nousmme rgler la taille des diffrentes structures de la SGA, nous pouvons par
exemplespcifierSHARED_POOL_SIZE = 128M,JAVA_POOL_SIZE = 0(pasbesoindeJavaPool),LARGE_POOL_SIZE
= 0(pasbesoindeLargePool),rserverungranulepourlaSGAfixeetleRedoLogBufferetallouertoutele
resteauDatabaseBufferCache,soitDB_CACHE_SIZE = 508M.

6.Lefichierdeparamtres
Au dmarrage, linstance lit un fichier de paramtres qui contient des paramtres dinitialisation. Les paramtres
dinitialisationpermettentnotammentlinstancedallouerlammoiresouhaiteauxdiffrentesstructuresdelaSGA,
etdetrouverlenometlemplacementdesfichiersdecontrledelabasededonnesouvrir.Cefichierestgrpar
leDBA.
Lors du dmarrage de linstance, le fichier de paramtres est lu ce fichier contient notamment un paramtre qui
donne lemplacement des fichiers de contrle de la base de donnes ouvrir, ce qui permet ensuite linstance
douvrirlesfichiersdecontrleenquestionetdytrouverlenometlemplacementdesautresfichiersdelabasede
donnes.
Historiquement, Oracle utilise un fichier de paramtres de type texte pour le dmarrage de linstance de base de
donnes.Cefichierdoitsetrouversurla(les)machine(s)quidmarre(nt)labasededonnes,cequipeutposerdes
problmespourledmarragepartirdurseau,etengendrerdesduplicationsdufichiersurplusieursmachineset
desproblmesdesynchronisationencasdemisejour.
Depuislaversion9,ilestpossibledutiliserunfichierdeparamtresbinairestocksurleserveur(serverparameterfile
=SPFILE).Cefichierpeuttreconsidrcommeunesortederfrentielcentralisdesparamtresdinitialisation,qui
liminelancessitdedupliquerlefichierdeparamtressurplusieursmachines.
Les modifications de paramtres effectues dynamiquement pendant le fonctionnement de linstance peuvent aussi
persisterdanscefichierdeparamtresserveur.
Le fichier de paramtres serveur est un fichier binaire qui ne peut pas tre consult ou modifi avec un diteur de
textedautresmoyensserontutilisspourcela.
Il ne faut jamais modifier un fichier de paramtres serveur avec un diteur de texte, au risque de le
corrompre,voiredeprovoquerunarrtdelinstance.
Nousverronsquelefichierdeparamtresserveurestcrpartirdunfichierdeparamtrestexte.
Dansunfichierdeparamtrestexte,lesparamtressontspcifissouslaformenom_ paramtre = valeur.Tousles
paramtressontoptionnelsetontunevaleurpardfaut.Descommentairespeuventtreinclusetcommencentparle
caractre#.Lavaleurpeuttrespcifieentredesguillemetsdoublessiellecontientdescaractresspciaux(gal,
espace,etc.).Lesvaleursmultiplespeuventtrespcifiesentreparenthses,sparespardesvirgules.
Exemple :
db_name = hermes
# nom de la base de donnes
# fichiers de contrle de la base
control_files = ("f:\oradata\HERMES\control01.ctl",
"g:\oradata\HERMES\control02.ctl")

7.Infrastructurepourlagestionautomatique
Depuislaversion10,Oraclecomportebeaucoupdefonctionnalitsquifacilitentladministrationdelabasededonnes
etdanscertainscas,lautomatise.
Cesnouvellesfonctionnalitsreposentsuruneinfrastructurequenousallonsdcrirebrivementici ilnesteneffet
pasncessairedeconnatrecetteinfrastructuredansledtailpourpouvoirtirerpartidesnouvellesfonctionnalits.
Denouveauxprocessusdarrireplansontchargsdecollecterenmmoiredesstatistiquessurlefonctionnementdu
systme. Toutes les 60 minutes (valeur modifiable), ces statistiques sont dverses dans le rfrentiel AWR
(AutomaticWorkloadRepository),quisematrialiseparunensembledetablesdansletablespaceSYSAUX.Pardfaut,
cesstatistiquessontconserves8jours.
chaque fois quune collecte est dverse dans le rfrentiel AWR, ADDM (Automatic Database Diagnostic Monitor)
effectueundiagnosticdesperformancesdusystme,dtectelesventuelsproblmesetproposedessolutions.Le
rsultat de lanalyse ADDM est stock dans le rfrentiel et peut tre consult dans Enterprise Manager Database
Control.

- 12 -

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Encomplment,plusieursconseillerssontdisponiblespouravoirdesrecommandationssurloptimisationdesrequtes
SQL,lindexation, la gestion de la mmoire, etc. Ces conseillers exploitent, eux aussi, les donnes stockes dans le
rfrentielAWR.

ENI Editions - All rights reserved - Algeria Educ

- 13 -

DataPump
1.Prsentation
a.Architecture
Data Pump est un utilitaire serveur qui peut tre utilis pour dplacer des donnes et/ou des mtadonnes
(dfinitions)entredesbasesOracle.
DataPumpcomportetroislments :

unpackagePL/SQLDBMS_DATAPUMP

unpackagePL/SQLDBMS_METADATA

deuxoutilsclientslignedecommandeexpdp(export)etimpdp(import).

LesoutilsclientsexpdpetimpdpserventdinterfaceaveclepackageDBMS_DATAPUMP,quiest,enquelquesorte,lAPI
(ApplicationProgrammingInterface)deDataPump.Cepackageestcompltementdocument,cequipermetdutiliser
directement les fonctionnalits Data Pump dans un programme. Data Pump peut aussi tre utilis partir du
DatabaseControl.
LesoprationsproprementditesdexportetdimportsonteffectuesparlepackageDBMS_DATAPUMPetdonc,surle
serveur Oracle. Cela inclut notamment la lecture et/ou lcriture des fichiers : les fichiers gnrs lors dunexport
sontcritssurleserveuretlesfichierschargslorsdunimportsontlussurleserveur.Laccsauxfichierssurle
serveur seffectue grce des objets DIRECTORY unobjet DIRECTORY est un alias vers un rpertoire du systme
dexploitation.CesobjetsDIRECTORYdoiventtrecrsparleDBA(cf.LobjetDIRECTORY).
LorsquuntravailDataPumpestcr,Oraclecrediffrentesstructurespourgrerlopration,parmilesquelles :

unetabledite"matre"dansleschmadelutilisateurquicreletravail(cettetableportelemmenomque
letravail)
unprocessusdecontrlematre(nommDMnn)quicontrlelexcutiondutravail.

Latable"matre"contientdiffrentesinformationssurletravail,utilisesnotammentpourredmarrerletravail.La
table"matre"estsupprimelorsqueletravailseterminenormalement,oulorsqueletravailestsupprimavecla
commande KILL_JOB (voir plus loin) en cas de besoin, cette table peut tre directement supprime la main,
laidedunordreSQLDROP TABLE

b.Lesmodesdexportoudimport
DataPumpproposecinqniveaux(modes)pourlesoprationsdexportetdimport :

Complet : totalitdelabasededonnes

Schma : unouplusieursschmas

Table : uneouplusieurstables

Tablespace : touteslestablesstockesdansunouplusieurstablespaces

Tablespacetransportable : permetletransportdetablespacesentredeuxbasesdedonnes.

Parlasuite,nousverronsquepourchaquemode,ilestpossibledeprcisertrsfinementlecontenudelexportou
delimport,enfiltrantlesobjetset/oulesdonnes.

c.Lesprivilgesncessaires

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Aucunprivilgeparticuliernestrequispourexporterdesobjetsdesonschma,ouimporterdanssonschmades
objetspralablementexportsdesonschma.
Par contre, pour exporter des objets dun autre schma, il faut avoir le rleEXP_FULL_DATABASE. De mme, pour
importerdansunautreschma,oupourimporterdanssonschmadesobjetsenprovenancedunautreschma,il
fautavoirlerleIMP_FULL_DATABASE.CesrlessontattribusauDBA.

d.LobjetDIRECTORY
UnobjetDIRECTORYestunaliasversunrpertoiredusystmedexploitation.Cetobjetestutilisparbeaucoupde
fonctionnalitsduserveurOraclequiontbesoindaccderdesfichiersdusystmedexploitationhte.
Syntaxepourlacration/modification
CREATE[ OR REPLACE ] DIRECTORY nom_directory AS chemin ;
Syntaxepourlasuppression
DROP DIRECTORY nom_directory ;
LesprivilgessystmesCREATE ANY DIRECTORYetDROP ANY DIRECTORYsontrequispourcreretsupprimerunobjet
DIRECTORY
Syntaxepourlattributiondedroitssurcetobjet
GRANT privilge [,] ON DIRECTORY nom_directory
TO utilisateur [,] ;
LesprivilgesobjetspossiblessontREADpourlaccsenlectureetWRITEpourlaccsencriture.
LavueDBA_DIRECTORIESpermetdelistertouslesobjetsDIRECTORYquiexistentdanslabasededonnes.

2.Utilisationdesoutilslignesdecommande
Lesoutilslignesdecommandeexpdpet<$I[]impdp>impdppeuventtreutilissdetroisfaons :

enpassantlesparamtresdutravailralisersurlalignedecommande

enutilisantunfichierdeparamtrescontenantlesparamtresdutravailaraliser

eninteractif.

Syntaxe :
expdp connexion param
t res
impdp connexion param
t res
connexionestunechanedeconnexionhabituelle(nom,motdepasse,nomdeservicerseau).

IlestdconseilldutiliseruneconnexionAS SYSDBA

paramtresestunelistedeparamtres.Lesparamtrespeuventtreregroupsdansunfichierdeparamtres,dont
lenomestindiqusurlalignedecommandegrceauparamtrePARFILELesparamtressontprsentsplusloin.
Exemples
expdp
expdp
expdp
expdp

system/az#78@hermes DIRECTORY=dir_exp FULL=y DUMPFILE=exp.dmp


system/az#78@hermes PARFILE=exp_param.txt JOB_NAME=exp_full
system/az#78@hermes ATTACH=exp_job
HELP=y

Lutilisationeninteractifpeuttreactivededeuxmanires :

- 2-

ENI Editions - All rights reserved - Algeria Educ

en tapant les touches [Ctrl] C pendant le droulement dune opration lance partir de la ligne de
commandeoulaidedunfichierdeparamtres
enattachantsasessionuntravailencoursdexcutionouarrt(paramtreATTACH).

Lorsquevousentrezdanslemodeinteractifetquuntravailestcours,laffichagelcrandelavancementsarrte
(maisletravailcontinueenarrireplan).
Enmodeinteractif,vousdisposezdeplusieurscommandesquipermettentdarrterletravail,deleredmarrer,dele
supprimer,etc. :
CONTINUE_CLIENT
Redmarrelaffichagedelavancementsurleterminal.
EXIT_CLIENT
Quitteloutil(maisletravailcontinu,silnapastarrt).
KILL_JOB
Supprimeletravail.
START_JOB
Redmarreletravail.
STOP_JOB[=IMMEDIATE]
Arrteletravailmaisnelesupprimepas(ilpeuttrerelancparlacommandeSTART_JOB).Sansoption,latcheen
courssetermine loptionIMMEDIATEpermetdarrterletravailimmdiatement.

Ilexistedautrescommandes.Voirladocumentation"OracleDatabaseUtilities".
LavueDBA_DATAPUMP_JOBSpermetdesuperviserlestravauxDataPumpencoursdanslabasededonnes.

3.Paramtresdelexportetdelimport
DataPumpproposeungrandnombredeparamtres.Danscechapitre,nousneprsentonsquelesparamtresles
plussouventutilisspourlesoprationsusuellesdexport et dimport.Reportezvousladocumentation"Oracle
DatabaseUtilities"pouravoirlalistedetouslesparamtres.

a.Paramtrescommunslexportetlimport
ATTACH[=[schma.]nom_travail]
Ce paramtre permet dattacher sa session un travail existant. Les rles EXP_FULL_DATABASE ou
IMP_FULL_DATABASEsontncessairespoursattacheruntravaildunautreschma.Siaucunnomnestspcifi,la
sessionsattacheautravailencoursduschmadelutilisateur,silnyenaquun.Lorsqueceparamtreestutilis,
aucunautreparamtrenepeuttrespcifi.
CONTENT=ALL | DATA_ONLY | METADATA_ONLY}
Ceparamtrepermetdedfinirlecontenudelexportoudelimport(voirciaprs).
DIRECTORY=objet_directory
CeparamtrepermetdedfinirlenomdelobjetDIRECTORY,correspondantaurpertoirepardfautdanslequelles
fichiers vont tre crits ou lus (DATA_PUMP_DIR par dfaut). Cet objet DIRECTORY est cr lors de la cration de la
basededonnesetilpeuttreutilisparleDBA.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

DUMPFILE=nom_fichier
Ceparamtrepermetdedfinirlenomdufichierutilispourlexportoulimport.Lorsdelexport,silefichierexiste
dj, une erreur est retourne. Il existe une syntaxe volue qui permet de spcifier plusieurs fichiers, pour
parallliserlexportsurplusieursprocessuset/ourpartirlexportsurplusieursfichiersdontlatailleestlimite.
EXCLUDE=type_objet[:filtre] [, ...]
Ceparamtrepermetdexcluredesobjetsdelexportoudelimport(voirplusloin).
FULL={y | n
Siceparamtreestgaly,unexportouunimportdeniveaucompletestralis.
INCLUDE=object_type[:name_clause] [, ...]
Ceparamtrepermetdincluredesobjetsdanslexportoulexport(voirplusloin).
JOB_NAME=nom_travail
Ceparamtrepermetdedonnerunnomautravail.Encasdabsence,unnomestgnrparlesystme(dutype
SYS_<opration>_<mode>_<NN>).
LOGFILE=nom_fichier
Ce paramtre permet de dfinir le nom du fichier journal. Un fichier journal est toujours gnr (export.log ou
import.log,pardfaut)saufsileparamtreNOLOGFILE=yestspcifi.
NETWORK_LINK=nom_database_link
Ce paramtre permet de spcifier le nom dun lien de base de donnes (databaselink) utiliser pour lopration.
Dans le cas dun export, les donnes sont extraites de la base de donnes distante, et un fichier dexport est
gnrsurlesystmelocal.Danslecasdunimport,lesdonnessontextraitesdelabasededonnesdistanteet
importesdirectementdanslabasededonnes"locale"(cellelaquelleloutilimpdpestconnect).
NOLOGFILE={y | n
Siceparamtreestgaly,lefichierjournalnestpasgnr.
PARFILE=chemin_fichier
Ceparamtrepermetdedfinirlemplacementdufichierdeparamtresutiliserpourlopration.ladiffrencedu
fichierdexport,dufichierdimport,oudufichierjournal,lefichierdeparamtresdoittreprsentsurlamachinequi
excuteleprogrammeexpdpouimpdp
QUERY=[schma.][nom_table:]clause_WHERE
Ceparamtrepermetdefiltrerlesdonnesexportesouimportes(voirciaprs).
SCHEMAS=schma [, ...]
Ceparamtrepermetdefaireunexportouunimportdeniveauschmaetdedfinirleoulesschmasexporter
ouimporter.Cestlemodedexportpardfaut(surleschmadelutilisateur).
TABLES=[schma.]nom_table[:partition] [, ...]
Ce paramtre permet de faire un export ou un import de niveau table et de dfinir une ou plusieurs tables
exporterouimporter.
TABLESPACES=nom_tablespace [, ...]
Ce paramtre permet de faire un export ou un import de niveau tablespace et de dfinir un ou plusieurs
tablespacesexporterouimporter.

- 4-

ENI Editions - All rights reserved - Algeria Educ

TRANSPORT_FULL_CHECK={y | n
Si ce paramtre est gal y, Data Pump vrifie les dpendances entre les objets stocks lintrieur des
tablespacestransports.
TRANSPORT_TABLESPACES=nom_tablespace [, ...]
Ce paramtre permet de faire un export ou un import de niveau transport de tablespace et de dfinir un ou
plusieurstablespacestransporter.

b.Paramtresspcifiqueslexport
COMPRESSION={ALL | DATA_ONLY | METADATA_ONLY| NONE}
Permetdactiverlacompressiondesmtadonneset/oudesdonnes.
ESTIMATE_ONLY={y | n
Siceparamtreestgaly,lexporteffectuesimplementuneestimationdelespacencessairepourlexport,mais
sansfairelexport.

c.Paramtresspcifiqueslimport
REMAP_DATAFILE=fichier_source:fichier_cible
Ceparamtrepermetdechangerlescheminsdesfichiersdedonneslorsdelimport(parexemple,lorsquelimport
cre un tablespace). Plusieurs paramtres peuvent tre spcifis pour effectuer plusieurs changements (avec un
fichiersourcediffrentchaquefois).
REMAP_SCHEMA=schma_source:schma_cible
Ce paramtre permet de charger les objets dun schma dorigine dans un autre schma. Plusieurs paramtres
peuventtrespcifispoureffectuerplusieurschangements(avecunschmasourcediffrentchaquefois).Sile
schmaciblenexistepas,ilpeuttrecrlorsdelimportsilyalesinformationssuffisantesdanslefichierimport.
REMAP_TABLESPACE=tablespace_source:tablespace_cible
Ce paramtre permet de changer les objets de tablespace lors de limport. Plusieurs paramtres peuvent tre
spcifispoureffectuerplusieurschangements(avecuntablespacesourcediffrentchaquefois).
SQLFILE=nom_fichier
Ce paramtre permet de gnrer un fichier SQL contenant tous les ordres DDL qui seraient excuts, si limport
taitralis(maislimportnestpasralis).Silefichierexistedj,ilestremplac.
TABLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | REPLACE}
Ceparamtrepermetdespcifiercequeloutildimportdoitfairesi,unetablequildoitcrerexistedj :
SKIP : nefaitrienetpasselobjetsuivant(nonautoris,siCONTENT=DATA_ONLY,valeurpardfautsinon).
APPEND : ajoutelesdonneslatable(valeurpardfaut,siCONTENT=DATA_ONLY).
TRUNCATE : tronquelatableavantdechargerlesdonnes.
REPLACE : supprimelatableetlarecre,puischargelesdonnes(interdit,siCONTENT=DATA_ONLY).
TRANSPORT_DATAFILES=fichiers
Ceparamtrepermetdespcifierlemplacementdesfichiersdedonnesdestablespacestransports(lesfichiers
doiventavoirtcopisaupralable).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

d.Contenudunexportoudunimport
Par dfaut, Data Pump exporte ou importe les donnes et les mtadonnes des tables, avec toutes les
dpendances(index,triggers,droits,contraintes,etc.).
Cependant,DataPumppermetdefiltrerprcismentcequidoittreexportouimport :

donneset/oumtadonnes

filtresurlesdonnes

filtresurlesobjets.

Nesappliquepasautransportdetablespace.

Donneset/oumtadonnes
LeparamtreCONTENTpermetdeprciserglobalementcequidoittreexportouimport :

ALL : lesdonnesetlesmtadonnes

DATA_ONLY : lesdonnesuniquement

METADATA_ONLY : lesmtadonnesuniquement.

Filtresurlesdonnes
Lorsquelesdonnessontexportesouimportes,ilestpossibledelesfiltrergrceauparamtreQUERY :
QUERY = [schma.][nom_table:]clause_WHERE
Exemple
QUERY = diane.adherent:"WHERE sexe = F"
LeparamtreQUERYpeuttrespcifiplusieursfoispourdfinirdesfiltressurplusieurstables.
Filtresurlesobjets
LesparamtresINCLUDEetEXCLUDEpeuventtreutilisspourinclureouexcluredesobjetsduneoprationdimport
oudexport :
INCLUDE = type_objet[:"filtre"]
EXCLUDE = type_objet[:"filtre"]
type_objetestletypedobjetinclureouexclure
Exemple
EXCLUDE=trigger
INCLUDE=view:"LIKE ADH%"
Plusieurs filtres peuvent tre spcifis lors dune opration, un type dobjet pouvant mme apparatre dans
plusieursfiltres.Biennoterquedanscecas,lesdiffrentsfiltressontcombinsparun et logique : pourquun
objetsoitexport,ildoitpassertouslesfiltresdfinissurlopration.
Par contre, les paramtres EXCLUDE et INCLUDE sont mutuellement exclusifs : soit vous travaillez par inclusion (et
tout ce qui nest pas explicitement inclus est exclus), soit vous travaillez par exclusion (et tout ce qui nest pas
explicitementexclusestinclus).SpcifiersimultanmentlesparamtresEXCLUDEetINCLUDEgnreuneerreur.
moins dtre explicitement exclues (par un EXCLUDE), les dpendances dune table (contraintes, triggers, index)
sont toujours exportes, mme si elles ne sont pas implicitement incluses (par un INCLUDE). Si vous avez mis
INCLUDE=tableetquevoussouhaitezexclureunedpendance,ilfautlinclureavecunfiltrequinestjamaisvrai,par
exempleINCLUDE=trigger:"IS NULL"(ilnyapasdetriggerdontlenomestNULL).
- 6-

ENI Editions - All rights reserved - Algeria Educ

LesvuesDATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTSetTABLE_ EXPORT_OBJECTSdonnentlalistedetousles


typesdobjets qui peuvent tre spcifis dans les paramtresEXCLUDEet INCLUDE,selonleniveaudelopration.
Exemples :
CONSTRAINT

PACKAGE_SPEC

SYNONYM

DIRECTORY

PROCEDURE

SYSTEM_GRANT

FUNCTION

REF_CONSTRAINT

TABLE

GRANT

ROLE

TABLESPACE

INDEX

ROLE_GRANT

TRIGGER

OBJECT_GRANT

SCHEMA

USER

PACKAGE

SEQUENCE

VIEW

PACKAGE_BODY

STATISTICS

4.Exemples
a.Prambule
Pour les diffrents exemples, nous supposons quil existe un objet DIRECTORY nomm DIR_PUMP, cr avec lordre
SQLsuivant :
CREATE OR REPLACE DIRECTORY dir_pump AS h:\oradata\pump;
Dans tous les exemples, un fichier de paramtres nomm pump_param.txt est utilis, et les outils expdpet impdp
sontappelsdelamaniresuivante :
expdp system/az#78 PARFILE=pump_param.txt
impdp system/az#78 PARFILE=pump_param.txt
LaconnexionseffectueimplicitementlinstancedfinieparlavariabledenvironnementORACLE_SID,ouLOCAL,ou
TWO_TASK

b.Exportcomplet
Danscetexemple,nousallonsfaireunexportcomplet.
Dans un premier temps, nous allons faire une simple estimation de lespace laide du fichier de paramtres
suivant :
FULL=y
ESTIMATE_ONLY=y
NOLOGFILE=y
Rsultat
Export: Release 11.1.0.6.0 - Production on Dimanche, 10 Aot, 2008 15:50:12
...
Estimation en cours laide de la mthode BLOCKS ...
Traitement du type dobjet DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
...
. estimation de "DIANE"."ADHERENT"
64 KB
. estimation de "DIANE"."CATEGORIE"
64 KB
...
Estimation totale laide le la mthode BLOCKS : 44,39 MB
Tche "SYSTEM"."SYS_EXPORT_FULL_01" excute avec succs 15:52:07
Nouspouvonsensuiteprocderlexportlaidedufichierdeparamtressuivants :
JOB_NAME=exp_full

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

FULL=y
DIRECTORY=dir_pump
DUMPFILE=exp-full.dmp
LOGFILE=exp-full.log
Extraitsdufichierjournal
Export: Release 11.1.0.6.0 - Production on Dimanche, 10 Aot, 2008 15:59:10
...
Dmarrage de "SYSTEM"."EXP_FULL" : system/******** parfile=pump_param.txt
Estimation en cours laide de la mthode BLOCKS ...
Traitement du type dobjet DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Estimation totale laide le la mthode BLOCKS : 44,39 MB
Traitement du type dobjet DATABASE_EXPORT/TABLESPACE

. . export : "SYSMAN"."MGMT_METRICS_RAW"
2.564 MB
45088 lignes
. . export : "SYSMAN"."MGMT_MESSAGES"
3.406 MB
19070 lignes
...
*************************************************************************
Lensemble de fichiers de vidage de SYSTEM.EXP_FULL est :
h:\oradata\pump\exp-full.dmp
Tche "SYSTEM"."EXP_FULL" excute avec succs 16:06:20

c.Exportslectif
Danscetexemple,unexportslectifduschmaDIANEestralislaidedufichierdeparamtressuivant :
JOB_NAME=exp_diane
SCHEMAS=diane
INCLUDE=table:"< > CATEGORIE"
INCLUDE=view
INCLUDE=procedure
INCLUDE=trigger:"IS NULL"
QUERY=diane.adherent:"WHERE sexe = F"
DIRECTORY=dir_pump
DUMPFILE=exp-diane.dmp
LOGFILE=exp-diane.log
Seules les tables (sauf la table CATEGORIE), les vues et les procdures sont explicitement exportes. Comme les
tablessontexportes,pardfaut,lescontraintes,lesindexetlestriggerslesontaussi pournepasexporterles
triggers,leparamtreINCLUDE=trigger:"IS NULL"estutilis(inclusionavecuneconditionfausse).Lesdonnesde
latableADHERENTsontfiltres.
Rsultat
Export: Release 11.1.0.6.0 - Production on Dimanche, 10 Aot, 2008 16:19:01
...
Dmarrage de "SYSTEM"."EXP_DIANE" : system/******** parfile=pump_param.txt
Estimation en cours laide de la mthode BLOCKS ...
Traitement du type dobjet SCHEMA_EXPORT/TABLE/TABLE_DATA
Estimation totale laide le la methode BLOCKS : 64 KB
Traitement du type dobjet SCHEMA_EXPORT/TABLE/TABLE
Traitement du type dobjet SCHEMA_EXPORT/TABLE/INDEX/INDEX
Traitement du type dobjet SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Traitement du type dobjet SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Traitement du type dobjet SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Traitement du type dobjet SCHEMA_EXPORT/VIEW/VIEW
Traitement du type dobjet SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT. .
export : "DIANE"."ADHERENT"
7.976 KB
10 lignes
ORA-39168: Le chemin dobjet TRIGGER est introuvable.
Table matre "SYSTEM"."EXP_DIANE" charge/dcharge avec succs
***************************************************************************
Le fichier de vidage dfini pour SYSTEM.EXP_DIANE est :
h:\oradata\pump\exp-diane.dmp
Tche "SYSTEM"."EXP_DIANE" excute avec 1 erreur(s) 16:19:19
Sur le rsultat, nous voyons que les contraintes et les index ont t exports lerreur signale que rien na t
trouvpourlestriggers.
- 8-

ENI Editions - All rights reserved - Algeria Educ

d.Importslectif
partir de lexport ralis dans lexemple prcdent, nous allons faire un import slectif, en effectuant quelques
transformations :

Lescontraintesdintgritsrfrentiellesneserontpasimportes

LesobjetsvonttrechargsdansleschmaMERCURE

ToutcequitaitstockdansletablespaceDATAvaallerdansletableDEFTBS

LesdonnesdelatableADHERENTsontdenouveaufiltres.

Lefichierdeparamtreestlesuivant :
JOB_NAME=imp_diane
SCHEMAS=diane
REMAP_SCHEMA=diane:mercure
REMAP_TABLESPACE=data:deftbs
EXCLUDE=ref_constraint
QUERY=mercure.adherent:"WHERE EXTRACT(YEAR FROM date_naissance) >= 1970"
DIRECTORY=dir_pump
DUMPFILE=exp-diane.dmp
LOGFILE=imp-diane.log
NotezquelefiltreQUERYportesurlatabledansleschmacible.
Rsultat
Import: Release 11.1.0.6.0 - Production on Dimanche, 10 Aot, 2008 16:27:07
...
Table matre "SYSTEM"."IMP_DIANE" charge/dcharge avec succs
Dmarrage de "SYSTEM"."IMP_DIANE" : system/******** parfile=param.txt
Traitement du type dobjet SCHEMA_EXPORT/TABLE/TABLE
Traitement du type dobjet SCHEMA_EXPORT/TABLE/TABLE_DATA
... import de "MERCURE"."ADHERENT"
7.976 KB
4 sur 10 lignes
Traitement du type dobjet SCHEMA_EXPORT/TABLE/INDEX/INDEX
Traitement du type dobjet SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Traitement du type dobjet SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Traitement du type dobjet SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Traitement du type dobjet SCHEMA_EXPORT/VIEW/VIEW
Tche "SYSTEM"."IMP_DIANE" excute avec succs 16:27:17
Nousvoyonsquelesdonnesontbientdenouveaufiltres.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

SQL*Loader
1.Vuedensemble
a.Prsentation
SQL*Loaderestunoutiltrspuissantquipermetdechargerdesdonnes :

partirdunouplusieursfichiersexternes

avecdesenregistrementsdelongueurfixeoudelongueurvariable(avecdlimiteurs)

dansuneouplusieurstables

enappliquantdestraitements,descontrlesoudesfiltressurlesdonnes.

b.Fonctionnementgnral

Enentre,SQL*Loaderprendunfichierdecontrle(rienvoiraveclefichierdecontrledunebasededonnes)
quipilotelechargement,etunouplusieursfichiersdedonnesASCII(pasdesfichiersdedonnesdunebasede
donnesOracle).
Ensortie,SQL*LoaderalimentelabasededonnesOracleetgnreunfichierjournal(log),unfichierdesrejets
(baddonneserrones)etunfichierdesrefus(discarddonnescartes).
Pourdespetitsvolumes,lesdonnespeuventtredirectementinclusesdanslefichierdecontrle.
Lefichierdiscardcontientdesenregistrementsquionttrefuss(carts)parSQL*Loadercarilsnerespectaient
pasdesconditionsspcifiesdanslefichierdecontrle.
LefichierbadcontientdesenregistrementsquionttrejetssoitparSQL*Loader(formatdelenregistrementnon
valideparrapportladescriptiondufichierdecontrle),soitparOracle(violationdunecontraintedintgrit,type
dedonnesnonvalide,etc.).

ENI Editions - All rights reserved - Algeria Educ

- 1-

Lesenregistrementsrejetsourefusssontcritstelsquelsdanslesfichiersbadetdiscardquiontdonc,lamme
structure que les fichiers de donnes utiliss en entre aprs correction ventuelle des enregistrements, les
fichiersbadetdiscardpeuventtreutilisscommefichiersdentre.
Lefichierjournaldonnenormmentdinformationssurlersultatduchargement :

date

nomdesfichiersutiliss

paramtresutiliss

tablesciblesetmodedalimentation

conditionsventuellessurlesenregistrements

nombredenregistrementschargs

nombredenregistrementscarts

nombredenregistrementsrejets

messagesderreursrelatifsauxrejets.

c.Lescheminsduchargement
SQL*Loaderpeuteffectuerlechargementselondeux"chemins" :

Cheminconventionnel : lesdonnessontchargesenmmoireetinsresdanslestablespardesordres
SQLINSERTclassiques
Chemin direct : les donnes sont charges en mmoire, formates dans des blocs qui sont crits
directementdanslabasededonnes.

Aveclecheminconventionnel,touslesmcanismesclassiquessontappliqus(contraintes,triggers,).
Lechemindirectestplusperformantmaisalesconsquencessuivantes :

SeuleslescontraintesNOT NULL,PRIMARY KEY etUNIQUEsontappliques

LestriggersINSERTnesontpasexcuts

Dautresutilisateursnepeuventpasapporterdemodificationsauxtablespendantlechargement.

Sur un chargement important, si les caractristiques voques cidessus sont acceptables, il faut choisir un
chargementparchemindirect.
Lorsdunchargementenchemindirect,ilexistedautresoptionsquipermettentdefairelechargementen
modeNOLOGGINGDanscecas,lesperformancessontencoreamliores.

2.Miseenuvre
SQL*Loader sutilise uniquement en mode ligne de commande (pas de mode interactif). Vous pouvez mettre les
paramtressurlalignedecommande,oulesregrouperdansunfichierdeparamtresdontlenomseulestpasssur
lalignedecommande :
> sqlldr USERID=system/az#78 CONTROL=balance.ctl LOG=balance.log

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

> sqlldr PARFILE=balance.par


Ilydeuxcatgoriesdeparamtresnepasconfondre :

lesparamtresdufichierdecontrle
lesparamtresdelalignedecommandequipeuventtrelistsdansunfichierdeparamtres(paramtrede
lignedecommandePARFILE).

Certainsparamtresdelalignedecommandepeuventtreinclusdanslefichierdecontrle(paramtrede
fichierdecontrleOPTIONS)ousontredondantsavecdesparamtresdufichierdecontrle.
Comme pour les outils dexport et dimport, le plus simple est dutiliser un fichier de paramtres dont le nom est
spcifisurlalignedecommande.
Les paramtres du fichier de contrle sont essentiellement destins dcrire la structure des enregistrements en
entre,lestablesciblesetlanaturedescontrles/traitementsralisersurlesenregistrements.
Lesparamtresdelalignedecommande,oudufichierdeparamtresindiqusurlalignedecommande,contrlentle
fonctionnementgnraldeloutil.
Lesprincipauxparamtresdelalignedecommandesontlessuivants :
BAD
Nomdufichierbad(avecventuellementunchemincomplet).Pardfaut,galaunomdufichierdecontrle,maisavec
lextension.bad
CONTROL
Nomdufichierdecontrle(avecventuellementunchemincomplet).
DATA
Nomdufichierdedonnestraiter(gnralementpluttindiqudanslefichierdecontrle).Pardfaut,galaunom
dufichierdecontrle,maisaveclextension.dat
DIRECT
TRUE : chemindirect.FALSE : cheminconventionnel(dfaut).
DISCARDFILE
Nomdufichierdiscard(avecventuellementunchemincomplet).Pardfaut,galaunomdufichierdecontrle,mais
aveclextension.dsc
DISCARDMAX
Nombremaximumderejetsautorissavantlarrtduchargement(1 =arrtaupremier).Pardfaut,pasdarrt.
ERRORS
Nombrederreursdinsertionautorisesavantlarrtduchargement(50,pardfaut 0=aucuneerreurautorise
mettreuntrsgrandnombrepournepassarrterencasderreur).Lesenregistrementsincriminssontcritsdans
lefichierbad.
LOAD
Nombremaximumdenregistrementscharger(aprsSKIP).
LOG
Nomdufichierjournal(avecventuellementunchemincomplet).Pardfaut,galaunomdufichierdecontrle,mais
aveclextension.log

ENI Editions - All rights reserved - Algeria Educ

- 3-

PARFILE
Nomdufichierdeparamtres(avecventuellement,unchemincomplet).
SKIP
Nombredenregistrementslimineravantdecommencerlechargement(aucun,pardfaut).
USERID
Paramtresdouverturedelasessionsouslaforme : utilisateur[/mot_de_passe][@nom_service]
Uneinvitesaffichepoursaisirlemotdepassesilestnonspcifi.

Dans le fichier de contrle, certaines directives (voir cidessous) permettent de spcifier des paramtres
redondantsaveclesparamtresdelalignedecommande.Encasdeconflit,cestleparamtredelalignede
commandequilemporte.
Exemplesdefichiersdeparamtres

Casotouteslesinformationssontdanslefichierdecontrle :

userid=system/az#78
control=balance.ctl

Casolefichierdecontrlepeutsappliquersurdesfichiersdedonnesdediversesorigines(dounseul
fichierdecontrleetplusieursfichiersdeparamtres) :

userid=system/az#78
control=balance.ctl
data=balance_lyon.dat
log=balance_lyon.log
bad=balance_lyon.bad
discardfile=balance_lyon.dsc
Unfichierdecontrletypealastructuresuivante :
[ OPTIONS(liste doptions) ]
LOAD DATA
[ INFILE fichier | *
[ BADFILE fichier ] [ DISCARDFILE fichier ] [ DISCARDMAX valeur ] ]
[ INSERT | APPEND | REPLACE | TRUNCATE ]
INTO TABLE nom
[ INSERT | APPEND | REPLACE | TRUNCATE ]
[ WHEN condition ]
[ FIELDS TERMINATED BY x [ OPTIONALLY ENCLOSED BY y ] ]
[ TRAILING NULLCOLS ]
( colonne [ POSITION(x:y) ] [ type ] [ clause_SQL ],

)
[ BEGINDATA donnes ]
Lasyntaxenestpascomplte,maislesclauseslesplususuellessontprsentes.
Lesclausesdoiventapparatredanslordreindiqu.
Leslignesdecommentairedoiventcommencerpardeuxsignesmoins().
OPTIONS
LaclauseOPTIONSpermetdespcifier,danslefichierdecontrle,lesoptionsdelignecommandesuivantes :

SKIP

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

LOAD

ERRORS

ROWS

SILENT

DIRECT

Encasdeconflitaveclalignedecommande,cestleparamtredelalignedecommandequilemporte.
Exemple
OPTIONS (SKIP=10,LOAD=900,ERRORS=100)
LOAD DATA
LaclauseINFILE donne lemplacementdunfichierdedonnestraiterouestgaleaucaractre*silesdonnes
sontdanslefichierdecontrle(clauseBEGINDATA).
De manire optionnelle, cette clause peut spcifier un fichier bad (option BADFILE), un fichier discard (option
DISCARDFILE) et un nombre maximum de rejets autoriss avant larrt du chargement (option DISCARDMAX) si les
paramtresquivalentsdelalignedecommandeonttindiqus,cesontcesderniersquisappliquent.
Sil y a plusieurs fichiers charger en une seule session, plusieurs clausesINFILE peuvent tre prsentes, chaque
clausepouvantspcifiersespropresoptionsBADFILE, DISCARDFILEetDISCARDMAX
Si le fichier de donnes est indiqu en paramtre de la ligne de commande (DATA), la clause est vide (mais il faut
laisserlemotclLOAD DATA).
INSERT | APPEND | REPLACE | TRUNCATE
Laclausesuivanteprciselemodedechargementdanslestables :
INSERT
Ajout,maisuniquementpourunetablevide(erreursinon).
APPEND
Ajoutlatable(peuttrevideounon).
REPLACE
Remplacetoutlecontenudelatable(unordreSQLDELETEestexcutavant).
TRUNCATE
Remplacetoutlecontenudelatable(unordreSQLTRUNCATEestexcutavant).
INTO TABLE
LaclauseINTO TABLEdonnelenomdunetablechargeretdcritcommenteffectuerlechargementdanscettetable.
Siplusieurstablessontchargespartirdunmmefichierdedonnes,plusieursclausesINTO TABLEpeuventtre
spcifies.
Pourchaquetable,ilestpossibledindiquerlesoptionssuivantes :
INSERT | APPEND | REPLACE | TRUNCATE
Modedelimportpourlatable
WHEN
Indiqueuneconditionsurlenregistrementpourquilsoiteffectivementchargdanscettetable.

ENI Editions - All rights reserved - Algeria Educ

- 5-

Laconditionpeutportersoitsurunecolonnedelatablecible,soitsurunchampdelenregistrementsource,dfini
parlapositiondesoncaractrededbutetlapositiondesoncaractredefinsouslaformedbut:fin
FIELDS TERMINATED BY x [ OPTIONALLY ENCLOSED BY y ]
Pourdesenregistrementsdelongueurvariable(avecsparateur),indiquecommentsontdlimitsleschamps :
TERMINATED BY x : caractresparateurdesenregistrements(typiquement,unevirgule,unpointvirgule,etc.).
OPTIONALLY ENCLOSED BY y : caractre optionnel pouvant entourer les enregistrements (typiquement, des
apostrophes,desguillemets,etc.).
TRAILING NULLCOLS
Les colonnes non prsentes la fin de lenregistrement sont mises NULL (si loption est absente et que des
colonnesvidesexistentlafin,lenregistrementestrejet).
colonne [ POSITION(x:y) ] [ type ] [ clause_SQL ]
Listedescolonnesalimenterdanslatable :
colonne : lenomdelacolonnecible.
POSITION(x:y) position du champ correspondant dans lenregistrement source (cas dun enregistrement de
longueur fixe). Pour des enregistrements avec sparateur, la correspondance colonne/enregistrement est
positionnelle(1recolonnedelaliste=1erenregistrement,)
type : typededonnes(encasdambigut).
clause_SQL : clause SQL appliquer. Pour rfrencer une colonne X dans la clause SQL, utiliser la syntaxe :X
(caractredeuxpointsdevantlenomdelacolonne).Ilexistedautresoptionssurlaspcificationdescolonnes.
BEGINDATA
LaclauseBEGINDATAmarqueledbutdesdonnessicellescisontinclusesdanslefichierdecontrle(INFILE *).

3.Exemples
a.Prambule
Lesdiffrentsexemplessontprsentsavecdesdonnesincluses(INFILE * + BEGINDATA)pourmieuxvisualiserla
correspondanceentrelesdonnesetlesparamtresdufichierdecontrle.
Cesexemplessonttrssimplesadapterauchargementdunfichierexterne :

copierlesdonnes,sansleBEGINDATA,dansunfichier

mettrelenomdufichierdanslaclauseINFILE(laplaceducaractre*)

supprimerlaclauseBEGINDATA

Surchaqueexemple,unchargementparajoutlatableexistanteestutilis(APPEND).
Parailleurs,noussupposonslexistencedestablessuivantes :

tablesdesadhrents

SQL> DESC adherent


Name
Null?
Type
----------------------------------------- -------- -------------NUMERO
NUMBER(6)
- 6-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

NOM
PRENOM
SEXE
DATE_NAISSANCE

VARCHAR2(40)
VARCHAR2(40)
CHAR(1)
DATE

tablesdesadhrentsmasculins(pasdecolonneSEXE)

SQL> DESC adherent_m


Name
Null?
----------------------------------------- -------NUMERO
NOM
PRENOM
DATE_NAISSANCE

Type
-------------NUMBER(6)
VARCHAR2(40)
VARCHAR2(40)
DATE

tablesdesadhrentesfminines(pasdecolonneSEXE,nidecolonneDATE_NAISSANCE)

SQL> DESC adherent_f


Name
Null?
----------------------------------------- -------NUMERO
NOM
PRENOM

Type
-------------NUMBER(6)
VARCHAR2(40)
VARCHAR2(40)

Enfin,unesquenceS_ADHERENTpermetdalimenterlesnumrosdadhrent.

b.Longueurvariable
LOAD DATA
INFILE *
INTO TABLE adherent
APPEND
FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY "
TRAILING NULLCOLS
(
prenom,
nom,
sexe,
date_naissance
"TO_DATE(:date_naissance,YYYYMMDD)",
numero
"s_adherent.NEXTVAL"
)
BEGINDATA
Olivier,HEURTEL,M,19660826
Valrie,MARTIN,F
Jean,"PEYRAC (de)",M,19631204
Pourcetexemple,lesenregistrementsontunelongueurvariable,avecsparateur.
Spcificationsdesdonnesenentre :

Leschampssontdlimitsparunevirgule : clause TERMINATED BY ,


Ils peuvent ventuellement entre tre entours de guillemets (cest le cas du nom dans la troisime
ligne) : clauseOPTIONALLY ENCLOSED BY "
Ilspeuventtremanquantsenfindeligne(pasdedatedenaissancesurladeuximeligne) danscecas
mettreunNULL : clauseTRAILING NULLCOLS
LadatedenaissanceestfourniesousformedechaneauformatYYYYMMDDmaisdoittrestockedansune
colonnedetypeDATE : clauseSQL"TO_DATE(:date_ naissance,YYYYMMDD)"
Le numro dadhrent nest pas fourni il doit tre calcul laide dune squence : clause SQL
"s_adherent.NEXTVAL"

ENI Editions - All rights reserved - Algeria Educ

- 7-

Sur cet exemple, la correspondance entre les champs et les colonnes est positionnelle les colonnes qui ne sont
pas alimentes par un champ de lenregistrement doivent forcment tre spcifies en dernier dans la liste des
colonnes.

c.Longueurfixe
LOAD DATA
INFILE *
INTO TABLE adherent
APPEND
TRAILING NULLCOLS
(
numero
"s_adherent.NEXTVAL",
prenom
POSITION(01:10),
nom
POSITION(11:22),
sexe
POSITION(23:23),
date_naissance POSITION(24:31) "TO_DATE(:date_naissance,YYYYMMDD)"
)
BEGINDATA
Olivier
HEURTEL
M19660826
Valrie
MARTIN
F
Jean
PEYRAC (de) M19631204
Pourcetexemple,lesenregistrementsontunelongueurfixe.Lesautresspcificationssontinchanges.
Avecdesenregistrementsdelongueurfixe,lacorrespondanceentreleschampsetlescolonnesestdfinieparla
clause POSITION les colonnes, qui ne sont pas alimentes par un champ de lenregistrement, peuvent tre
spcifiesnimporteodanslalistedescolonnes.

d.Longueurfixeavecliminationdenregistrements
LOAD DATA
INFILE *
INTO TABLE adherent
APPEND
WHEN (sexe = M)
TRAILING NULLCOLS
(
numero
"s_adherent.NEXTVAL",
prenom
POSITION(01:10),
nom
POSITION(11:22),
sexe
POSITION(23:23),
date_naissance POSITION(24:31) "TO_DATE(:date_naissance,YYYYMMDD)"
)
BEGINDATA
Olivier
HEURTEL
M19660826
Valrie
MARTIN
F
Jean
PEYRAC (de) M19631204
Pour cet exemple, les enregistrements ont une longueur fixe mais les adhrents de sexe fminin ne doivent pas
trechargs.Lesautresspcificationssontinchanges.
UneclauseWHEN (sexe = M)estajoutepourspcifierlesenregistrementsconserver.

e.Chargementdansdeuxtables
LOAD DATA
INFILE *
INTO TABLE adherent_m
APPEND
WHEN (sexe = M)
TRAILING NULLCOLS
(
numero
"s_adherent.NEXTVAL",
prenom
POSITION(01:10),
nom
POSITION(11:22),

- 8-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

sexe
F I L L E R POSITION(23:23),
date_naissance
POSITION(24:31) "TO_DATE(:date_naissance,YYYYMMDD)"
)
INTO TABLE adherent_f
APPEND
WHEN (sexe = F)
TRAILING NULLCOLS
(
numero
"s_adherent.NEXTVAL",
prenom
POSITION(01:10),
nom
POSITION(11:22),
sexe
F I L L E R POSITION(23:23)
)
BEGINDATA
Olivier
HEURTEL
M19660826
Valrie
MARTIN
F
Jean
PEYRAC (de) M19631204
Pourcetexemple,lesenregistrementsontunelongueurfixemaislesadhrentsdoiventtrerpartisentredeux
tables en fonction de leur sexe. Les deux tables nont pas de colonne SEXE et la table des adhrents de sexe
fminin,pasdecolonneDATE_NAISSANCEnonplus.Lesautresspcificationssontinchanges.
LefichierdecontrleutilisedeuxclausesINTO TABLEpourspcifiercommentalimenterlesdeuxtables.
Dans chaque clauseINTO TABLE, une clause WHEN (sexe= X) permet dindiquer si lenregistrement courant doit
trechargdanslatableounon.Parailleurs,chaqueclauseINTO TABLEasaproprelistedecolonnes.
CommelestablesnontpasdecolonneSEXE,ilestpossibledespcifierunecolonnedanslalistedescolonnesavec
lapropritFILLER("remplissage").Cette"colonne"peutensuitetremanipulecommesictaitunecolonnedela
table(utilisedansuneclauseWHEN,dansuneclauseSQL)maisellenestpaschargedanslatable.
Cettetechniquepeutaussitreutiliseavecdesenregistrementsdelongueurvariable(avecsparateur),lorsquun
champdelenregistrementnedoitpastrechargdansunecolonnedelatable.

ENI Editions - All rights reserved - Algeria Educ

- 9-

Extrairedesdonnesdansunfichiertexte
1.EnSQL
EnSQL,ilsuffitdcrireunscriptaveclarequteSELECTsouhaiteetderedirigerlasortieversunfichier(SPOOL).En
complment,ilestncessairedepasseruncertainnombredecommandesSQL*Pluspoursupprimerlesaffichages
jugsindsirables(titresdescolonnes,nombredelignesslectionnes,etc.).
ExempledescriptSQL : exportavecdesenregistrementsdelongueurfixe
-- un peu de configuration de lenvironnement SQL*Plus
-- pas decho des requtes
SET ECHO OFF
-- masquer les titres de colonnes
SET HEADING OFF
-- masquer laffichage du nombre de lignes dans le rsultat
SET FEEDBACK OFF
-- dimensionner la largeur de la ligne 1000 caractres
-- (pas utile ici, mais cest titre dexemple)
SET LINESIZE 1000
-- supprimer le saut de ligne chaque changement de page
SET NEWPAGE NONE
-- suppression des espaces en fin de ligne
SET TRIMSPOOL ON
-- pas daffichage lcran (plus rapide)
SET TERMOUT OFF
-- rediriger la sortie vers un fichier .txt
SPOOL adherent.txt
-- faire une requte SELECT qui concatne les diffrentes colonnes et
-- utilise si besoin la fonction SQL RPAD pour ajouter des espaces aux
-- colonnes de longueur variable et les rendre ainsi de longueur fixe
SELECT
-- premire mthode avec largeurs fixes
RPAD(prenom,10, )
||
RPAD(nom,12, )
||
NVL(sexe,X)
||
TO_CHAR(date_naissance,YYYYMMDD)
ligne
FROM
adherent
/
-- fermer le fichier dexport
SPOOL OFF
-- remette la configuration habituelle de lenvironnement SQL*Plus
SET HEADING ON
SET FEEDBACK ON
SET LINESIZE 80
SET NEWPAGE 1
SET TERMOUT ON
Pourfaireunexportavecdesenregistrementsdelongueurvariable,vouspouvezutiliserlarequtesuivante :
-- faire une requte SELECT qui concatne les diffrentes colonnes en
-- intercalant des virgules comme sparateur
SELECT
-- deuxime mthode avec sparateur
prenom
|| , || nom
|| , || NVL(sexe,X)
|| , || TO_CHAR(date_naissance,YYYYMMDD)
ligne
FROM
adherent
/

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

2.EnPL/SQL
EnPL/SQL,ilsuffitdcrireunblocquislectionnelesdonnesviauncurseuretcritlersultatdansunfichieravec
lepackageUTL_FILE
Exemple
DECLARE
-- extraire les donnes laide dun curseur
CURSOR cur_adherent IS
SELECT * FROM adherent;
-- pointeur de fichier dexport
v_fichier
utl_file.file_type;
-- buffer pour lcriture
v_ligne
VARCHAR2(1023);
BEGIN
-- ouvrir le fichier dexport (le rpertoire doit tre spcifi
-- par lintermdiaire dun objet DIRECTORY - bien mettre le
-- nom de lobjet DIRECTORY en majuscules)
v_fichier := utl_file.fopen(DIR_PUMP,adhrents.txt,w);
-- boucler sur le curseur
FOR rec_adherent IN cur_adherent LOOP
-- construire la ligne exporter
-- (ici, enregistrement avec sparateur)
v_ligne
:=
rec_adherent.prenom
|| , || rec_adherent.nom
|| , || NVL(rec_adherent.sexe,X)
|| , || TO_CHAR(rec_adherent.date_naissance,YYYYMMDD);
-- crire la ligne dans le fichier
utl_file.put_line(v_fichier,v_ligne);
END LOOP;
-- fermer le fichier
utl_file.fclose(v_fichier);
END;
/

- 2-

ENI Editions - All rights reserved - Algeria Educ

UtiliserleDatabaseControl
1.Export
Surlapagedaccueil,cliquezsurlelienMouvementdedonnespuissurlelienExporterversdesfichiersdexport
(cadreTransfrerdesdonnesdeligne)pouraccderlapagepermettantderaliserdesexports.

La premire page permet de slectionner le niveau de lexport et de saisir les informations didentification et de
connexionlhte.Lespagesproposesparlasuitedpendentduniveauslectionn.
Parexemple,danslecasdunexportdeniveauSchmas,lassistantvousproposesuccessivement :

deslectionnerunouplusieursschmasexporter

dedfinirlesoptionsdelexport(degrdeparalllisme,fichierjournal,contenudelexport,etc.)

dedfinirlenometlemplacementdufichierdexport

deprogrammerletravail

desoumettreletravail.

2.Import
Surlapagedaccueil,cliquezsurlelienMouvementdedonnespuissurlelienImportpartirdefichiersdexport
(cadre Transfrer des donnes de ligne) pour accder la page permettant de raliser des imports partir dun
fichier.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-


Cettepagepermetdaborddindiquersilefichierdexportprovientduneversion10gousuprieureouduneversion
antrieure.Enfonctiondelarponse,lassistantutiliseraloutilDataPumpImportoulancienoutilImport lescrans
propossparlassistantsontdiffrents.
SivouseffectuezunimportpartirdunexportDataPump,lescranspropossparlassistantsonttrsprochesde
ceuxproposspourlexport.
Poureffectuerunimportdirectementpartirdunebasededonnes,vouspouvezcliquersurlelienImportdepuisla
base(cadreTransfrerdesdonnesdelignedelongletMouvementdedonnes).

3.SQL*Loader
Sur la page daccueil, cliquez sur le lienMouvement de donnes puis sur le lien Charger des donnes partir de
fichiers utilisateur (cadre Transfrer des donnes de ligne) pour accder la page permettant de charger des
donnesavecSQL*Loader :

Lapremirepagepermetdindiquersilassistantdoitgnrerlefichierdecontrleouutiliserunfichierdecontrle
existant, et de saisir les informations didentification et de connexion lhte. Les pages proposes par la suite
dpendentdeloptionchoisiepourlefichierdecontrle.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Silefichierdecontrleestdjdfini,lassistantvasimplementpermettrededfiniruntravaildechargementavec
cesdiffrentsparamtres(emplacementdesfichiersdedonnes,mthodedechargement,etc.).
Silefichierdecontrlenexistepas,lassistantvavousaiderconstruirelefichierdecontrlelaidedufichierde
donnes charger. Cette fonctionnalit est trs intressante car la partie complexe de lutilisation de SQL*Loader
estjustementlacrationdufichierdecontrle.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Ladministrateurdebasededonnes
1.Principalestches
Lesprincipalestchesdeladministrateurdebasededonnes(DBA<)sontlessuivantes :

installationdesproduits

cration/dmarrage/arrtdesbasesdedonnes

gestiondesstructuresdestockage

gestiondesutilisateurs(etdeleursdroits)

sauvegarde/restauration.

2.ComptesOracledadministration
Aprscration,unebasededonnesOraclecontienttoujoursdeuxcomptesayantlesprivilgesdadministrateur :

SYS(motdepassepardfaut:change_on_install)

SYSTEM(motdepassepardfaut:manager).

SYSestlepropritairedudictionnairededonnes SYSTEMpeuttrepropritairedetablescomplmentairesutilises
parlesoutilsOracle.
Depuis Oracle9i Release 2, ces mots de passe par dfaut peuvent tre changs lors de la cration de la base de
donnes.
Ces comptes peuvent tre utiliss indiffremment pour ladministration courante (gestion des utilisateurs, du
stockage,etc.)uniquementlorsquelabaseestdmarre.
Un privilge supplmentaire particulier (SYSDBAou<SYSOPER) est ncessaire pour certaines oprations (dmarrage,
arrt, etc.). De plus, lactivation de ce privilge SYSDBA ou SYSOPER ncessite un mcanisme dauthentification
particulier, puisque la base de donnes peut ne pas tre disponible. Cette authentification seffectue soit par le
systmedexploitation,soitparunfichierdemotdepasse.
DanslechapitreGestiondesutilisateursetdeleursdroits,nousverronsquelanotionde"DBA"correspondunrle
(ensembledeprivilgesregroupssousunnom)quipeuttreattribuuncompteutilisateur.

3.IdentificationprivilgieSYSDBAetSYSOPER
a.Parlesystmedexploitation
Pour utiliser lauthentification par le systme dexploitation, vous devez mettre lutilisateur souhait du systme
dexploitation dans un groupe de droits spcial. Sur plateforme Unix, ce groupe sappelle gnralementdba (ou
oper) surplateformeWindows,cegroupesappelleORA_DBA(ouORA_OPER).
Ensuite, vous pouvez vous connecter au systme dexploitation avec lutilisateur en question, lancer loutil
dadministration et vous connecter, sans nom dutilisateur et sans mot de passe, avec le privilge SYSDBA (ou
SYSOPER).
Syntaxe(dansSQL*Plus)
CONNECT / AS { SYSDBA | SYSOPER }
Exemple :

ENI Editions - All rights reserved - Algeria Educ

- 1-

CONNECT / AS SYSDBA
SurplateformeUnix,legroupedoittrecrlorsdelinstallationdOracleilestpossibledeluiattribuerunautre
nomquedbaet/oudedfinirunautregroupepoursparerlesprivilgesSYSDBAetSYSOPER.
SurplateformeWindows,legroupeORA_DBAestautomatiquementcretseulleprivilgeSYSDBAestdisponible.Il
estpossibleparlasuitedecrerunautregroupe ORA_OPERpourleprivilgeSYSOPERet/oudecrerdesgroupes
ORA_<SID>_OPER|DBA spcifiquescertainesinstances(<SID>dsignantlenomdelinstance).
SurplateformeWindows,pourquecemodedauthentificationsoitautoris,ilfautquilyaitlalignesuivantedans
le fichier sqlnet.ora(rpertoire %ORACLE_HOME%\network\ admin voir le Chapitre Oracle Net pour la configuration
OracleNet) :
SQLNET.AUTHENTICATION_SERVICES= (NTS)
LesoutilsdadministrationserontprsentsplusendtaildanslechapitreLesoutilsdadministration.

b.Parunfichierdemotdepasse
Pour utiliser lauthentification par un fichier de mot de passe, vous devez mettre le paramtre dinitialisation
REMOTE_LOGIN_PASSWORDFILE EXCLUSIVE (dfaut) ou SHARED et crer un fichier de mot de passe laide de
lutilitaireorapwdfourniparOracle.
Exemple :
C:\ > orapwd file=D:\Oracle\Product\10.1.0\Db_1\database\pwdHERMES.ora
password=dur_a_trouver entries=4
Ensuite, vous pouvez vous connecter au systme dexploitation avec nimporte quel utilisateur, lancer loutil
dadministrationetvousconnecter,entantqueSYS,laidedumotdepassedfiniprcdemment,avecleprivilge
SYSDBA(ouSYSOPER).
Syntaxe(dansSQL*Plus)
CONNECT sys/mot_de_passe AS { SYSDBA | SYSOPER }
Exemple :
CONNECT sys/dur_a_trouver AS SYSDBA
Avecunfichierdemotdepasse,pardfaut,seullecompteSYSaledroitdeseconnecteravecleprivilgeSYSDBAou
SYSOPER. Si le paramtre REMOTE_LOGIN_PASSWORDFILE est gal EXCLUSIVE, il est possible de donner le privilge
SYSDBAouSYSOPERdautresutilisateurs(voirlechapitreGestiondesutilisateursetdeleursdroits).Sileparamtre
REMOTE_LOGIN_PASSWORD FILEestgalSHARED,seullecompteSYSpeututiliserlesprivilgesSYSDBAouSYSOPER.

CemcanismeestprsentplusendtaildanslechapitreCrationdunenouvellebasededonnes.

c.Remarques
LeprivilgeSYSDBApermettouteslesoprations"lourdes"dadministration,notamment,lacrationdunebasede
donnes,lesarrtsetlesdmarrages,lacrationdunfichierdeparamtreserveur,lesrcuprations,etc.Ildonne
unaccstouteslesdonnesdelabasededonnes.LaconnexionseffectueimplicitementdansleschmadeSYS.
LeprivilgeSYSOPERdonnepeuprslesmmesdroitsqueSYSDBA,lexceptionnotabledelacrationdelabase
de donnes. Par contre, laccs est restreint aux seules donnes du dictionnaire de donnes. La connexion
seffectueimplicitementdansleschmaPUBLIC.
Avecuneauthentificationparlesystmedexploitation,ilestpossibledeseconnecterentapantunecommandedu
typeCONNECT nimportequoi/nimportequoi AS SYSDBA,carlenometlemotdepassenesontenfaitpasutiliss.
Ce fonctionnement est un peu troublant, notamment si un vrai compte Oracle est utilis, dautant plus que la
sessionestouvertedansleschmaSYS :
Exemple :
SQL> CONNECT nimportequoi/nimportequoi AS SYSDBA
Connect.
- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

SQL> SHOW USER


USER est "SYS"
SQL> CONNECT scott/tiger AS SYSDBA
Connect.
SQL> SHOW USER
USER est "SYS"
SQL> CONNECT nimportequoi/nimportequoi
ERREUR :
ORA-01017: nom dutilisateur/mot de passe non valide; connexion refuse
Attention : vous ntes plus connect ORACLE.
SQL> CONNECT scott/tiger
Connect.
SQL> SHOW USER
USER est "SCOTT"
Depuislaversion9,laconnexionsouslecompteSYSsansleprivilgeSYSDBAnestpluspossible.
Dans le cas de lutilisationdun fichier de mot de passe, si vous modifiez le mot de passe de SYS par un
ordreSQL(voirleChapitreGestiondesutilisateursetdeleursdroits),lamodificationestrpercutedans
lefichierdemotdepasse.
Ladministration courante ne ncessite pas le privilge SYSDBA ou SYSOPER elle seffectue gnralement avec le
compteSYSTEM:

gestiondesstructuresdestockage

gestiondesutilisateurs

gestiondesschmas.

LeprivilgeSYSDBAest,parcontre,ncessairepour :

larrtetledmarragedelabasededonnes

lacrationdunebasededonnes

lesoprationsdercuprationdunebasededonnes.

Dans les anciennes versions dOracle, il tait possible dutiliser un CONNECT INTERNAL pour obtenir ces privilges
particuliers. Cette connexion nest plus supporte depuis la version 9. la place, il faut utiliser une connexion AS
SYSDBA(quivalenteentermededroits).
LauthentificationSYSDBAouSYSOPERparlesystmedexploitationnestpasautorisepourlesconnexionstravers
lerseau(saufutilisationdunrseauscuris) danscecas,ilfaututiliseruneauthentificationparunfichierde
motdepasse.
Pour ladministration locale de la base de donnes (directement sur la console du serveur ou en mulation de
terminal), vous pouvez indiffremment utiliser une authentification par le systme dexploitation ou par fichier de
mot de passe. Dans le premier cas, vous devez vous assurer que les groupes et comptes correspondants du
systmedexploitationsontbienprotgs.Dansledeuximecas,vousdevezvousassurerquelefichierdemotde
passeetlutilitaireorapwdsontbienprotgs.

4.AutrescomptesOracle
Lors de la cration dune base de donnes, dautres comptes Oracle peuvent tre crs, notamment SYSMAN et
DBSNMP.
SYSMAN(motdepassepardfautCHANGE_ON_INSTALL)estuncomptequipeuttreutilispoureffectuerdestches
dadministrationdansOracleEnterpriseManager.SYSMANestuncompteDBA.
DBSNMP(motdepassepardfautDBSNMP)estuncompteutilisparlagentdOracleEnterpriseManagerpoursuperviser
etgrerunebasededonnes.
De nombreux autres comptes "administratifs" peuvent tre crs selon les options installes dans la base de

ENI Editions - All rights reserved - Algeria Educ

- 3-

donnes.

- 4-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

Ledictionnairededonnes
1.Prsentation
Ledictionnairededonnesestunensembledetablesetdevuesquidonnentdesinformationssurlecontenudune
basededonnes :

lesstructuresdestockage

lesutilisateursetlesdroits

lesobjets(tables,vues,index,procdures,fonctions,etc.).

etc.

LedictionnairededonnesappartientSYSeteststockdansletablespaceSYSTEM.Ilestcrlorsdelacrationde
labasededonnesetmisjourautomatiquementparOraclelorsquedesordresSQLDDL(DataDefinitionLanguage)
sontexcuts(CREATE,ALTER,DROP).
Pour lutiliser, il suffit de linterroger grce des requtes SELECT. Sauf exception, toutes les informations sont
stockesenmajusculesdansledictionnairededonnes tenezencomptedanslcrituredevosclausesWHERE !
LedictionnairededonnesestchargenmmoiredanslapartieDictionaryCachedelaSharedPooletestutilisen
interneparOraclepourtraiterlesrequtes.
Ledictionnairededonnesestcrlorsdelacrationdelabase.Dunpointdevuepratique,lestablesproprement
ditesdudictionnairededonnesnesontpasdocumentesparOracleetdoncdifficilesutiliser.Parcontre,grce
des scripts fournis par Oracle, il est possible de crer des vues (et des synonymes publics) qui, elles, sont
documentes et permettent effectivement dexploiter le dictionnaire de donnes cette tape de la cration dune
baseseraprsentedanslechapitreCrationdunenouvellebasededonnes.
Ilyadeuxgrandsgroupesdetables/vuesdansledictionnairededonnes :

lestablesetvuesstatiques

lestablesetvuesdynamiquesdeperformance.

Les tables et vues statiques sont bases sur de vraies tables stockes dans le tablespace SYSTEM. Elles sont
accessiblesuniquementquandlabasededonnesestouverte"compltement".Lestablesetvuesdynamiquesde
performancenesontenfaitpasbasessurdevraiestablesmaissurdesinformationsenmmoireouextraitesdu
fichier de contrle. Elles sinterrogent nanmoins comme de vraies tables/vues et donnent des informations sur le
fonctionnement de la base de donnes, notamment sur les performances. Pour la plupart, elles sont accessibles
mmelorsquelabasededonnesnestpascompltementouverte.
La notion de "niveau douverture" dune base de donnes sera prsente dans le chapitre Dmarrage et
arrt.

2.Lesvuesstatiques
Ilyatroisgrandescatgoriesdevuesstatiquescaractrisesparleurprfixe :

USER_%:informationssurlesobjetsquiappartiennentlutilisateur
ALL_% :informationssurlesobjetsauxquelslutilisateuraaccs(lessiensetceuxsurlesquelsilareudes
droits)
DBA_% :informationssurtouslesobjetsdelabasededonnes.

Derrireleprfixe,lerestedunomdelavueestreprsentatifdelinformationaccessible.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Cestroiscatgoriesdevuespermettentdefiltrerlesinformationsdudictionnairededonnesparrapportauxdroits
des utilisateurs. Les informations accessibles dans les vues USER_ forment un sousensemble des informations
accessibles dans les vues ALL_ qui ellesmmes forment un sousensemble des informations accessibles dans les
vuesDBA_.
Unutilisateur"lambda"aledroitdinterrogerlesvuesUSER_etALL_etilnyvoitquelesinformationsauxquellesila
droit.
CertainesvuesdelacatgorieDBA_peuventnepasavoirdquivalentdanslescatgoriesUSER_ouALL_.Exemple:
DBA_DATA_FILES.
DanslesvuesALL_etDBA_concernantlesobjetsdesschmas,lacolonneOWNERpermetdeconnatrelepropritaire
delobjet.
Lesvuessuivantessontparticulirementutilespourladescriptiondunschma :
%_OBJECTS
%_CONSTRAINTS
%_TABLES
%_CONS_COLUMNS
%_TAB_COLUMNS
%_VIEWS
%_INDEXES
%_SYNONYMS
%_IND_COLUMNS
%_SEQUENCES
%_TRIGGERS
%_SOURCE
Dans les diffrents chapitres, les principales vues du dictionnaire de donnes relatives au sujet trait seront
prsentes.
Oracleproposedessynonymessurcertainesvues:

Synonyme

Vuecorrespondante

COLS

USER_TAB_COLUMNS

DICT

DICTIONARY

IND

USER_INDEXES

OBJ

USER_OBJECTS

SEQ

USER_SEQUENCES

SYN

USER_SYNONYMS

TABS

USER_TABLES

Parailleurs,lesvuesDICTIONARYetDICT_COLUMNSdonnentladescriptiondetouteslestablesetvuesdudictionnaire
dedonnes.
LavueDICTIONARYesttrspratiquepourretrouverlenomdesvuesquitraitentdunsujetdonn.Eneffet,lenomde
lavuecontientunechanedecaractresreprsentativedelinformationprsenteparlavue(TABouTABLEpourles
tables, INDou INDEX pour les index, COLou COLUMN pour les colonnes, etc.) il suffit donc de faire une recherche
laidedeloprateurLIKE.
Exemple
SQL> SELECT * FROM dictionary WHERE table_name LIKE USER%SEQ%;

- 2-

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

TABLE_NAME
COMMENTS
--------------- -------------------------------------------------USER_SEQUENCES Description of the users own SEQUENCEs
SQL> SELECT column_name,comments FROM dict_columns
2 WHERE table_name = USER_SEQUENCES;
COLUMN_NAME
COMMENTS
-------------------- --------------------------------------------SEQUENCE_NAME
SEQUENCE name
MIN_VALUE
Minimum value of the sequence
MAX_VALUE
Maximum value of the sequence
INCREMENT_BY
Value by which sequence is incremented
CYCLE_FLAG
Does sequence wrap around on reaching limit?
ORDER_FLAG
Are sequence numbers generated in order?
CACHE_SIZE
Number of sequence numbers to cache
LAST_NUMBER
Last sequence number written to disk

3.Lesvuesdynamiquesdeperformance(v$)
Les vues dynamiques de performance sont prfixes par V$. Derrire le prfixe, le reste du nom de la vue est
reprsentatifdelinformationaccessible.
Saufexception,cesvuesnesontaccessiblesquauxDBA.
Lesvuesrelativesauxsujetsabordsdanscechapitresontlessuivantes:
V$I[]NSTANCE
Informationssurlinstance
V$DATABASE
Informationssurlabasededonnes
V$S[]GAetV$S[]GAINFO
InformationssurlaSGA
V$PARAMETER
Informationssurlesparamtres.

La vue V$PARAMETER est une des rares vues du dictionnaire de donnes qui stocke des informations en
minuscules.
LesvuesdynamiquesdeperformancesontaussidcritesdanslesvuesDICTIONARYet DICT_COLUMNS.Encomplment,
les vues V$FIXED_TABLEet V$FIXED_VIEW_DEFINITION donnent des informations sur la dfinition interne des vues
dynamiques.
Exemple
SQL> SELECT name,value FROM v$parameter WHERE name LIKE %block%;
NAME
VALUE
------------------------------ -------------------db_block_buffers
0
db_block_checksum
TYPICAL
db_block_size
8192
db_file_multiblock_read_count 95
db_block_checking
FALSE
Danslesdiffrentschapitres,lesprincipalesvuesdynamiquesrelativesausujettraitserontprsentes.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Vous aimerez peut-être aussi