Vous êtes sur la page 1sur 18

Bruno Delb

http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
Sommaire
INTRODUCTION..................................................................................................3
LE PRINCIPE DE LOPTIMISATION......................................................................3
LES OUTILS DE DIAGNOSTIC..............................................................................3
COMMENT CONFIGURER LA BASE DE DONNES ?...............................................4
LARCHITECTURE DE BASE ORACLE 7.............................................................................4
LES TABLESPACES...................................................................................................4
COMMENT UTILISER LE DCOUPAGE ?............................................................................5
AUDITER LE CODE SQL........................................................................................5
DIAGNOSTIQUER LES PROBLMES.................................................................................5
AUDITER LES MODULES.............................................................................................6
COMMENT AUDITER LA ZONE DE PARTAGE DES ORDRES SQL (SHARED POOL) ?
...........................................................................................................................7
QUEST-CE QUE LA LIBRARY CACHE ?............................................................................7
Comment auditer la Library Cache ?..................................................................7
Quelles sont les vues dynamiques relatives la Library Cache ?...........................7
Comment suivre les performances de la Library Cache ?......................................7
A quoi sert le package !"#$#%A&'$())L ?...................................................*
QUEST-CE QUE LE DICTIONARY CACHE ?.......................................................................8
Comment auditer le ictionary Cache ?..............................................................*
Comment impacter la m+moire utilisateur plut,t que la m+moire partag+e ?..........*
COMMENT AUDITER LE BUFFER CACHE ?............................................................
QUEST-CE QUE LE BUER CACHE ?.............................................................................8
COMMENT LE BUER CACHE EST-IL GR ?....................................................................!
QUELS SONT LES OB"ECTIS DE LAUDIT DU BUER CACHE ?...............................................!
COMMENT MESURER LE HIT RATIO DU BUER CACHE ?......................................................!
COMMENT E#AMINER LIMPACT DE LA"OUT OU DE LA SUPPRESSION DE BUERS ?........................!
COMMENT UTILISER EFFICACEMENT LES BLOCS ORACLE ?................................!
COMMENT AUDITER LES BLOCS ?..................................................................................!
QUEST-CE QUE LA HIGH $ATER MAR% ?........................................................................!
QUEST-CE QUE LE PAC%AGE DBMS&SPACE ?..............................................................'(
COMMENT SONT RORGANISS LES INDE# ?..................................................................'(
COMMENT SONT GRS LES REE LISTS ?.....................................................................'(
COMMENT OPTIMISER LES ROLLBAC" SEGMENTS ?.........................................#$
QUEST-CE QUUN ROLLBAC% SEGMENT ?.....................................................................'(
COMBIEN DE ROLLBAC% SEGMENTS AUT-IL ?................................................................'(
COMBIEN DE ROLLBAC%S SONT-ILS UTILISS ?...............................................................''
COMMENT SONT ALLOUS LES ROLLBAC% SEGMENTS ?......................................................''
COMMENT AUDITER LES MCANISMES DE REDO ?...........................................##
COMMENT )ITER LES ATTENTES DE CHEC%POINT ?..........................................................''
COMMENT RGULER LES CHEC%POINTS ?......................................................................''
COMMENT AUTORISER LARCHI)AGE DES ICHIERS REDO LOG ?............................................''
COMMENT DIMENSIONNER LE BUER REDO LOG ?..........................................................''
COMMENT RDUIRE LES REDO ?.................................................................................''
1
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
COMMENT ONCTIONNENT LES LATCHS DU BUER REDO LOG ?...........................................''
Comment fonctionnent les latchs sur les plateformes #"( ?...............................-.
Comment suivre la contention du latch &edo ?..................................................-.
Comment r+duire la contention sur le &edo Allocation Latch ?............................-.
QUELS PEU)ENT *TRE LES PROBLMES ?.......................................................................'+
COMMENT SUI%RE ET DTECTER LES CONTENTIONS DE %ERROUS ?................#&
COMMENT ONCTIONNE LE )ERROUILLAGE ?...................................................................'+
Qu/est0ce que le verrou L" ?.........................................................................-1
Qu/est0ce que le verrou L ?.........................................................................-1
Quels sont les autres verrous ?.......................................................................-1
COMMENT SUI)RE LACTI)IT DE )ERROUILLAGE ?...........................................................'4
Qu/est0ce que le #erver "anager Lock "onitor ?...............................................-2
QUEST-CE QUUN DEADLOC% ?..................................................................................'5
COMMENT LA COHRENCE EN LECTURE EST-ELLE ASSURE ?...............................................'5
Qu/est0ce que la lecture logique au niveau traitement ?.....................................-3
Qu/est0ce que la lecture de coh+rence de niveau transaction ?............................-3
Qu/est0ce que les transactions #'&4AL45A!L' ?................................................-3
COMMENT OPTIMISER POUR DES BESOINS APPLICATIFS DI%ERGENTS ?.......#5
COMMENT OPTIMISER LES APPLICATIONS TRANSACTIONNELLES ?...........................................'5
COMMENT OPTIMISER LES APPLICATIONS DAIDE , LA DCISION ?.........................................'5
A quoi servent les histogrammes ?..................................................................-6
Qu/est0ce qu/un 4nde7 !itmap ?.......................................................................-6
Comment s/adapter la logique de l/application ?..............................................-6
COMMENT OPTIMISER LES APPLICATIONS CLIENT-SER)EUR ?................................................'6
Comment reconfigurer en fonction des besoins ?...............................................-7
COMMENT OPTIMISER LES TRIS ?....................................................................#7
COMMENT TRIER EN MMOIRE ?.................................................................................'7
COMMENT )ALUER LES BESOINS EN MMOIRE ?.............................................................'7
COMMENT )ITER LE BUER CACHE ?.........................................................................'7
COMMENT SUI)RE LES TRIS ?....................................................................................'8
COMMENT OPTIMISER LES CONNE'IONS ?......................................................#
QU.EST-CE QUE LE MULTITHREAD ?.............................................................................'8
COMMENT CONIGURER LE MTS ?..............................................................................'8
COMMENT RGLER LES SER)EURS PARTAGS ?................................................................'8
QUE AUT-IL SA)OIR SUR LES SER)EURS PARTAGS ET LE SHARED POOL ?..............................'8
QUELLES PEU)ENT *TRE LES PROBLMES ?....................................................................'!
2
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
Introduction
En gnral, en cas de problmes, le DB tente en prem!er de les rsoudre.
"a #r!$!cat!on de la concept!on du s%stme et des appl!cat!ons do!t se $a!re au plus t&t, car plus tard commence
l'aud!t, plus cher !l co(te.
ud!ter est un tra#a!l !trat!$ et cont!nu.
"'aud!t do!t porter success!#ement sur :
la concept!on,
l'appl!cat!on,
la mmo!re,
les entres/sort!es,
les content!ons.
Le principe de loptimisation
"es pr!nc!pes de l'opt!m!sat!on sont les su!#ants :
"es re)u*tes +," do!#ent ut!l!ser le plus pet!t nombre poss!ble de blocs -racle.
.n bloc ut!l!s do!t *tre en mmo!re.
"es ut!l!sateurs do!#ent partager le m*me code.
,uand du code est ut!l!s, !l do!t *tre en mmo!re.
"es lectures et les cr!tures do!#ent *tre rap!des )ue poss!ble.
"es ut!l!sateurs ne do!#ent /ama!s attendre les ressources ut!l!ses par d'autres.
"es sau#egardes 0a!ns! )ue les autres oprat!ons de ma!ntenances1 do!#ent *tre e$$ectues le plus
rap!dement poss!ble.
Les outils de diagnostic
"es out!ls de d!agnost!c sont :
les #ues 23 0bases sur les tables 431
Elles appart!ennent 5 l'ut!l!sateur s%s. "e scr!pt rdbms/adm!n/utlmontr.s)l permet de donner un accs
publ!c sur )uel)ues #ues 23.
les tables 43 0dont le contenu change constamment1
Elles sont rarement d!rectement !nterroges.
"es #ues 23 et les 43 sont rense!gnes au dmarrage de l'!nstance et rem!ses 5 blanc 5 la $ermeture.
l'anal%se 0commande 6"78E1
le +er#er 9anager,
Ecran Description
:;<:.;=+ >our le ser#eur mult!?thread.
D;+>=:@E<+ >our le ser#eur mult!?thread.
A;"E ;/- ct!#!t de lecture et d'cr!ture pour cha)ue $!ch!er.
"=:@ "es latches sont des #errous !nternes de bas n!#eau.
";B<<7 ::@E >er$ormances des curseurs partags.
"-:B 2errous tenus et l!brs.
><-:E++ >rocess bacCground et process ut!l!sateur.
<-""B:B <ollbacC segments.
+E++;-6 +ess!ons ut!l!sateurs.
+@<ED +E<2E< >our les ser#eurs mult!?threads.
+," <E -rdres +," en mmo!re.
+7+=E9 ;/- ct!#!ts d'entres/sort!es gnres par les process.
+7+=E9 +==;+=;:+ +tat!st!)ues sur les mesures de per$ormances.
=B"E ::E++ -b/ets accds dans cha)ue sess!on.
=B"E+>:E ;n$ormat!ons sur les tablespaces.
les $!ch!ers trace
"es $!ch!ers trace gnrs par les ut!l!sateurs sont stocCs dans le rperto!re spc!$! par le paramtre
.+E<DD.9>DDE+=.
"es autres sont stocCs dans le rperto!re spc!$! par le paramtre B:BE<-.6DDD.9>DDE+=.
Fichier Description
<dbms/log/alert.log 0un "es #nements ma/eurs et les erreurs les plus !mportantes
F
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
$!ch!er par !nstance1 ;l $aut le suppr!mer de temps en temps, aprs l'a#o!r consult.
<dbms/log/G.trc "es erreurs des bacCground process d'-racle H.
-racle Enterpr!se 9anager >er$ormance >acC
Outil de diagnostic Description
-racle EIpert -pt!m!sat!on des per$ormances de l'en#!ronnement de la base de
donnes : a!de 5 la con$!gurat!on !n!t!ale de la base, collecte et
#aluat!on des caractr!st!)ues des per$ormances des bases.
-racle "ocC 9anager +u!#! des #errous : l!ste sur plus!eurs colonnes a#ec une l!gne par
#errou act!$ dans la base.
-racle >er$ormance 9anager +u!#! des per$ormances de la base en temps rel : graph!)ues
prd$!n!s sur les ut!l!sateurs, les consommat!ons, les tablespaces, les
redo logs, les bu$$ers, les caches, les E/+, J
-racle =op+ess!ons .t!l!sat!on en temps rel des ressources de l'!nstance de la base par
les sess!ons connectes : act!#!t des sess!ons, J
-racle =ablespace 9anager +u!#! et gest!on du stocCage dans la base de donnes : !n$ormat!ons
gnrales sur l'ut!l!sat!on de l'espace, compress!on pour regrouper
des blocs l!bres ad/acents.
-racle =race +u!#! des per$ormances en recue!llant des donnes sur les
#nements sur#enant dans les appl!cat!ons.
les sort!es de stat!st!)ues 0les scr!pts utlbstat.s)l et utlestat.s)l gnre des tats de stat!st!)ues sur cette
pr!ode de temps1,
Comment configurer la base de donnes ?
Larchitecture de base Oracle 7
>arm! les $!ch!ers ph%s!)ues, on compte :
les $!ch!ers de donnes,
les $!ch!ers de contr&le,
les $!ch!ers redo log en l!gne,
les $!ch!ers redo log arch!#s,
les $!ch!ers de paramtres.
"a +E 0+%stem Elobal rea1 comprend :
le Bu$$er :ache de la base de donnes,
le Bu$$er du redo log,
la Kone partage des ordres.
"es pr!nc!pauI process sont :
les process ut!l!sateurs,
le process ser#eur,
le process d'cr!ture dans les $!ch!ers de donnes 0DBL<1,
le process d'cr!ture dans les $!ch!ers redo log 0"EL<1,
le process checCpo!nt 0:B>=1,
le process s%stem mon!tor 0+9-61,
le process process mon!tor 0>9-61,
le porcess arch!#er 0<:@1,
le process reco#erer 0<E:-1,
le process locC 0":Bn1,
le process /ob )ueues 0+6>n1,
le process parallel )uer% 0>nnn1,
le process d!spatchers 0Dnnn1,
le process shared ser#ers 0+nnn1.
Les tablespaces
.ne base de donnes -racleH cont!ent au mo!ns s!I tablespaces :
+7+=E9
;l ne do!t conten!r )ue les ob/ets du d!ct!onna!re de donnes 0eIemple : les pacCages, les tr!ggers1.
M
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
=E9>
=empora!re, !l est allou lors de la crat!on d'un ut!l!sateur pour les oprat!ons de tr!. "e tablespace par
d$aut est le tablespace +7+=E9.
<B+
;l est dd! auI rollbacC segments.
.+E<+
De pet!te ta!lle, !l permet de stocCer les ob/ets crs par les ut!l!sateurs. ;l do!t *tre le tablespace par
d$aut des ut!l!sateurs autres )ue +7+=E9 ou +7+.
IIIDD=
:'est le tablespace des donnes de la prem!re appl!cat!ons 0dont le nom est N III O1.
IIID;6DE4
:'est le tablespace des !ndeI de la prem!re appl!cat!ons 0dont le nom est N III O1.
Comment utiliser le dcoupage ?
"es tablespaces sont const!tus de plus!eurs $!ch!ers, rpart!s sur plus!eurs d!s)ues.
"es !ndeI et les tables de man!re sont rpart!s sur ces d!s)ues.
=ous les s%stmes d'eIplo!tat!on ne le permettent pas. +ous .n!I, le plus rpandu est le <;D 0<edundant
rra% o$ ;neIpens!#e D!sCs1.
;l eI!ste plus!eurs n!#eauI de rpart!t!on :
la rpart!t!on par le s%stme d'eIplo!tat!on,
la rpart!t!on manuelle.
:ette mthode est un peu lourde : -racle rempl!t les eItents l'un aprs l'autre et 5 tout moment un
eItent peut *tre charg et les autres mo!ns act!$s.
Auditer le code SQL
;l % a deuI modes d'opt!m!sat!on :
Bas sur les rgles
"es process cho!s!ssent le chem!n d'accs auI donnes par anal%se de la re)u*te.
Bas sur les co(ts
"'opt!m!seur eIam!ne cha)ue tra!tement et !dent!$!e tous les chem!ns poss!bles d'accs auI donnes.
;l calcule ensu!te le co(t 0pr!nc!palement bas sur le nombre de lectures log!)ues1 en ressource de
cha)ue chem!n d'accs.
;l cho!s!t le mo!ns cher.
:e mode d'opt!m!sat!on peut *tre appl!)u sur tro!s n!#eauI :
au n!#eau de l'!nstance : ut!l!ser le paramtre ->=;9;8E<D9-DE,
au n!#eau de la sess!on : "=E< +E++;-6 +E= ->=;9;8E<DE-" P #aleur,
au n!#eau de l'ordre 0en ut!l!sant les h!nts1 : +E"E:= /GQ A;<+=D<-L+ G/ G Arom dual R
Dans chacun de ces cas, les #aleurs poss!bles sont :
Valeur Description
:@--+E 0#aleur par d$aut1 "'opt!m!seur ut!l!se le mode bas sur les co(ts s! les stat!st!)ues
sont d!spon!bles pour les tables. +!non, !l ut!l!se le mode bas sur
les rgles.
<."E
A;<+=D<-L+ 9!n!m!se le temps de rponse d'obtent!on des prem!ers
enreg!strements 0peut?*tre au dtr!ment du temps de rponse total1.
""D<-L+ 9!n!m!se le temps de rponse total.
Diagnostiquer les problmes
+," =race peut *tre act!# pour une !nstance ou une sess!on.
>our ut!l!ser +," =race, !l $aut :
1. ;n!t!al!ser les paramtres d'!n!t!al!sat!on 0dans le $!ch!er !n!t.ora1.
94DD.9>DA;"ED+;8E do!t conten!r la ta!lle du $!ch!er de sort!e.
.+E<DD.9>DDE+= do!t conten!r le nom du $!ch!er de sort!e.
=;9EDD+==;+=;:+ P =<.E pour obten!r des !n$ormat!ons de temps 0a#ec une rsolut!on d'un
cent!me de seconde1.
2. ct!#er +," =race.
+,"D=<:E P =<.E
S
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
>our une sess!on : "=E< +E++;-6 +E= s)lDtrace P =<.E R
>our #otre sess!on : E4E:.=E dbmsDs%stem.setDs)lDtrace 0=<.E1 R
>our la sess!on d'un autre ut!l!sateur : E4E:.=E dbmsDs%stem.setDs)lDtraceD!nDsess!on 0sess!onD!d,
ser!alD!d, =<.E1 R
<emar)ue : N sess!onD!d O est la colonne +;D de la table 23+E++;-6 et N ser!alD!d O est la colonne
+E<;"T de la table 23+E++;-6.
F. EIcuter l'appl!cat!on.
M. rr*ter +," =race.
+,"D=<:E P A"+E
>our une sess!on : "=E< +E++;-6 +E= s)lDtrace P A"+E R
>our #otre sess!on : E4E:.=E dbmsDs%stem.setDs)lDtrace 0A"+E1 R
>our la sess!on d'un autre ut!l!sateur : E4E:.=E dbmsDs%stem.setDs)lDtraceD!nDsess!on 0sess!onD!d,
ser!alD!d, A"+E 1 R
<emar)ue : N sess!onD!d O est la colonne +;D de la table 23+E++;-6 et N ser!alD!d O est la colonne
+E<;"T de la table 23+E++;-6
S. Aormater le $!ch!er trace a#ec la commande =B><-A :
=B><-A $!ch!erDtrace $!ch!erDrsultat UeIpla!nPnomDd'ut!l!sateur/motDdeDpasseV
UtablePschma.nomDdeDtableV Upr!ntPnV U!nsertPnomDdeD$!ch!erV Us%sP6-V UrecordPnomDdeD$!ch!erV
UsortPopt!onV
W. ;nterprter la sort!e.
"a sort!e comprend des stat!st!)ues.
"'ob/ect!$ est de rdu!re au maI!mum le temps :>. et les bu$$ers log!)ues accds dans les phases d'eIcut!on
et de $etch.
"e co(t d'un plan d'eIcut!on a une #aleur proport!onnelle au temps coul ncessa!re 5 l'eIcut!on de l'ordre
durant ce plan d'eIcut!on.
>our dterm!ner )uel process est le process parent, slect!onner les colonnes !d et parentD!d de la table
planDtable.
Auditer les modules
+! l'appel d'un module appl!cat!$ est enreg!str dans la base de donnes, #ous pou#eK connaXtre les !n$ormat!ons
su!#antes pour cha)ue modules :
la per$ormance,
l'ut!l!sat!on des ressources.
"es procdures du pacCage DB9+D>>";:=;-6D;6A- sont :
>rocdure Descr!pt!on
+E=D9-D."E 0module, act!on1 +pc!$!er le nom du module et 0opt!onnellement1
l'act!on.
ppeler cette procdure 5 cha)ue dmarrage de
module.
N module O est le nom du module 0M8 caractres au
maI!mum1. ;l est stocC dans 23+,"<E.
N act!on O est le nom ou la descr!pt!on de l'act!on 0F2
caractres au maI!mum1. ;l est stocC dans
23+,"<E.
+E=D:=;-6 0act!on1 +pc!$!e le nom de l'act!on en cours dans un module
enreg!str.
ppeler cette procdure a#ant cha)ue nou#elle
transact!on et 5 nou#eau aprs la transact!on pour
remettre l'act!on 5 6."".
N act!on O est le nom ou la descr!pt!on de l'act!on 0F2
caractres au maI!mum1. ;l est stocC dans
23+,"<E.
+E=D:";E6=D;6A- 0cl!ent1 Donne des !n$ormat!ons sur le cl!ent pour la sess!on.
N cl!ent O cont!ent des !n$ormat!ons complmenta!res
0WM caractres au maI!mum1. ;l est stocC dans
23+E++;-6.
<EDD9-D."E 0module, act!on1 "!t le dern!er module et le dern!er nom de l'act!on
pos!t!onns par +E=D:=;-6 ou +E=D9-D."E.
N module O est le nom du module 0M8 caractres au
maI!mum1. ;l est stocC dans 23+,"<E.
N act!on O est le nom ou la descr!pt!on de l'act!on 0F2
W
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
caractres au maI!mum1. ;l est stocC dans
23+,"<E.
<EDD:";E6=D;6A- 0act!on1 "!t les dern!res !n$ormat!ons sur le cl!ent pour la
sess!on.
N act!on O est le nom ou la descr!pt!on de l'act!on 0F2
caractres au maI!mum1. ;l est stocC dans
23+,"<E.
Comment auditer la zone de partage des ordres SQL (Shared Pool ?
"a +hared >ool cont!ent pr!nc!palement les structures su!#antes :
la "!brar% cache 0cont!ent le +," et le >"/+," partags1,
le D!ct!onar% :ache 0cont!ent les !n$ormat!ons sur les ob/ets du d!ct!onna!re1, c'est l'ob/et sur le)uel l'aud!t
porte pr!nc!palement,
des !n$ormat!ons sur les ut!l!sateurs 0dont les Kones de tr! et les Kones +," pr!#1 0dans le cas d'un ser#eur
mult!?thread1 car :
"es ser#eurs partags tra#a!llent sur la base d'un ordre.
:ha)ue ser#eur peut donc a#o!r beso!n d'accder auI !n$ormat!ons de tout ut!l!sateur.
Quest-ce que la Librar Cache ?
.n algor!thme "<. permet de grer le cache.
+! un ut!l!sateur demande un tra!tement )u! est d/5 dans le cache, -racle ut!l!se la #ers!on cache sans
r!nterprtat!on.
>our sa#o!r s! un tra!tement est d/5 en cache, -racle :
rdu!t le tra!tement 5 la #aleur numr!)ue du teIte +:;;,
ut!l!se une $onct!on hash de ce nombre.
Comment auditer la Library Cache ?
"es ob/ect!$s sont de s'assurer )ue :
"a phase d'!nterprtat!on 0pars!ng1 est ma!ntenue 5 un m!n!mum.
=out ob/et #olum!neuI peut trou#er asseK d'espace cont!gu dans le pool.
Quelles sont les vues dynamiques relatives la Library Cache ?
23+,"<E
23+,"
23+,"=E4=
23DBD-BYE:=D::@E
23";B<<7::@E
23+E+==
23+@<EDD>--"D<E+E<2ED
Comment suivre les performances de la Library Cache ?
"es colonnes !mportantes de la #ue 23";B<<7::@E sont :
>;6+
<E"-D+
"es paramtres su!#ants a$$ectent la "!brar% :ache :
>aramtre Descr!pt!on
+@<EDD>--"D+;8E =a!lle de la +hared >ool 0en octets1.
:.<+-<D+>:EDA-<D=;9E "a #aleur par d$aut est A"+E.
+'!l #aut =<.E, les Kones +," partages ne sont pas
sort!es tant )ue le curseur r$renc n'est pas $erm.
6e pas changer cette #aleur sau$ s! la #aleur de
<E"-D+ dans 23";B<<7::@E est
cont!nuellement 5 0.
+! l'appl!cat!on ut!l!se Aorms ou du +," d%nam!)ue,
la!sser la #aleur 5 A"+E.
+@<EDD>--"D<E+E<2EDD+;8E =a!lle de la l!ste rser#e, une Kone de la "!brar%
H
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
:ache pour les ob/ets #olum!neuI.
"es ob/ets plus pet!ts ne sont pas autor!ss dans cette
Kone et ne peu#ent donc pas $ragmenter la l!ste
rser#e.
"e maI!mum est la mo!t! de +@<EDD>--"D+;8E.
+@<EDD>--"D<E+E<2EDD9;6D""-: =a!lle m!n!male 0en octets1 des ob/ets )u! peu#ent
ut!l!ser la l!ste rser#e.
"es ob/ets #olum!neuI peu#ent ut!l!ser la l!ste rser#e
s'!ls ne peu#ent trou#er d'espace a!lleurs.
"a #aleur par d$aut est S000.
+! +@<EDD>--"D<E+E<2EDD+;8E est non nulle,
la #aleur maI!male est
+@<EDD>--"D<E+E<2EDD+;8E.
A quoi sert le package DB!"!#A$%D"&''L ?
:onse!l : +! l'appl!cat!on ut!l!se du >"/+,", s'assurer )u'!l a t cr!t dans un pacCage plut&t )ue comme
$onct!on ou procdure !sole ou comme bloc anon%me. :onser#er dans la +hared >ool tous les pacCages
#olum!neuI des appl!cat!ons 0eIemple : les pacCages +=6D<D, DB9+D+=6D<D, D;.=;"1.
Quest-ce que le Dictionar Cache ?
;l est ut!l!s pour conser#er en mmo!re la d$!n!t!on des ob/ets du d!ct!onna!re.
-racle partage la somme alloue entre le D!ct!onar% :ache, la "!brar% :ache et la .E 0dans le cas d'un
ser#eur mult!?thread1.
Comment auditer le Dictionary Cache ?
"es pr!nc!pales colonnes de la #ue 23<-L::@E sont :
><9E=E<+
EE=+
EE=9;++E+
Comment impacter la m(moire utilisateur plut)t que la m(moire partag(e ?
+'!l #aut A"+E 0#aleur par d$aut1, le curseur d'un ut!l!sateur n'est pas $erm lors d'un :-99;=, ce )u!
pargne en gnral une r!nterprtat!on.
+! les ordres sont rarement rut!l!ss, $ermer le curseur aprs le :-99;= en pos!t!onnant ce paramtre 5
=<.E pour conom!ser de la mmo!re.
Comment auditer le !uffer Cache ?
Quest-ce que le !u""er Cache ?
"e Bu$$er :ache :
$a!t part!e de la +E,
cont!ent les cop!es des blocs de donnes, partageables par tous les ut!l!sateurs,
est d!mens!onn a#ec le paramtre DBDB"-:BDB.AAE<+ dans le $!ch!er !n!t.ora.
"a ta!lle du cache 0en octets1 est DBDB"-:BDB.AAE<+ G DBDB"-:B+D+;8E.
:ha)ue bu$$er du cache cont!ent un seul bloc base de donnes.
un moment donn, le bu$$er cache peut a#o!r plus!eurs cop!es d'un m*me bloc base de donnes. +eule une
cop!e de bloc est courante, ma!s les process ser#eur peu#ent a#o!r beso!n de constru!re des cop!es cohrentes en
lecture pour rpondre 5 des !nterrogat!ons, en ut!l!sant les !n$ormat!ons des rollbacCs.
Comment le !u""er cache est-il gr ?
"ors de la rest!tut!on d'un bloc de donnes 5 l'ut!l!sateur, le ser#eur :
regarde dans le bu$$er cache 0en ut!l!sant une $onct!on hash1,
l!t le bloc depu!s le d!s)ue 0s! ncessa!re1.
,uand le ser#eur ut!l!se un accs !ndeI, !l l!t tou/ours un bloc 5 la $o!s.
=ous les blocs sont prsents dans une l!ste du mo!ns rcemment ut!l!s 0"<. Z "ast <ecentl% .sed1. "e process
DBL< cr!t les blocs sur le d!s)ue en partant de la $!n de la l!ste "<..
8
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
"a ta!lle d'une cr!ture DBL< est gale 5 DBDA;"E+ G DBDA;"ED+;9."=6E-.+DL<;=E+ / 2 a#ec
comme l!m!te celle du port spc!$!)ue 0ou DBDB"-:B+DB.AAE<+ / M1.
"e ser#eur e$$ectue une lecture mult!ple de blocs dans le Bu$$er :ache.
En gnral, l'ensemble de blocs #a 5 la $!n de la l!ste "<..
;l est poss!ble de mettre en mmo!re des tables ent!res dans la l!ste des blocs les plus rcemment ut!l!ss 09<.
Z 9ost <ecentl% .sed1.
Quels sont les ob#ecti"s de laudit du !u""er Cache ?
Dans un s%stme -"=> b!en aud!t :
"'!mmense ma/or!t des ut!l!sateurs trou#ent les donnes )u'!ls #eulent en mmo!re.
"es process ser#eurs ont rarement beso!n d'aller chercher les donnes sur le d!s)ue.
+ur de grands s%stmes de datawarehouse, la plupart des donnes sont lues depu!s le d!s)ue. "'aud!t des Bu$$er
:ache est alors mo!ns !mportant tand!s )ue l'aud!t des entres/sort!es est #!tal.
Comment mesurer le $it %atio du !u""er Cache ?
<emar)ue : +! #ous ut!l!seK le raw de#!ce, le s%stme d'eIplo!tat!on ne peut conser#er dans son cache les blocs
de donnes cr!ts par DBL< et sort!s du Bu$$er :ache.
Comment e&aminer limpact de la#out ou de la suppression de bu""ers ?
"es colonnes de la table #!rtuelle 43B:B<B@ sont :
:olonne Descr!pt!on
;6D4 ;dent!$!ant pour cha)ue nou#eau bu$$er 0dmarre 5 01.
:-.6= 6ombre d'accs supplmenta!res en cache )u! sera!t
gagn par a/out de ce bu$$er.
"es colonnes de la table #!rtuelle 43B:B:B@ sont :
:olonne Descr!pt!on
;6D4 ;dent!$!ant pour cha)ue nou#eau bu$$er 0dmarre 5 01.
:-.6= 6ombre d'accs sur ce bu$$er.
>our le bu$$er 0, c'est le nombre de blocs placs dans le
bu$$er plut&t )ue le nombre d'accs.
Comment utiliser efficacement les blocs "racle ?
"es un!ts de la plus pet!te 5 la plus grande sont : Blocs, EItents, +egments, A!les, =ablespaces, Database.
Comment auditer les blocs ?
>our aud!ter les blocs, consulter la table DBD=B"E+.
Quest-ce que la high 'ater mar( ?
"a @!gh Later 9arC est enreg!stre dans le bloc d'ent*te du segment et est :
!n!t!al!se au dbut du segment,
!ncrmente de S blocs )uand les l!gnes sont !nsres,
r!n!t!al!s par les ordres =<.6:=E,
recalcule au n!#eau d'une table en ut!l!sant la commande "=E< =B"E [nomDtable\ DE""-:=E
.6.+ED.
<emar)ue : :ette mar)ue n'est pas recalcule su!te 5 un ordre DE"E=E.
"ors d'une lecture s)uent!elle, -racle l!t tous les blocs s!tus en de]5 de la mar)ue @!gh Later. "es blocs
l!bres au?del5 de la mar)ue @!gh Later peu#ent donc s!gn!$!er une perte d'espace ma!s en aucun cas une
dgradat!on des per$ormances.
Des blocs sous ut!l!ss s!tus en de]5 de cette mar)ue !mpl!)uent une dgradat!on des per$ormances.
Quest-ce que le pac(age D!)*+*,AC- ?
"e pacCage DB9+D+>:E cont!ent les procdures :
.6.+EDD+>:E,
A<EEDB"-:+.
Elles sont cres et documentes par le scr!pt dbmsut!l.s)l, )u! est lanc par catproc.s)l.
^
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
Comment sont rorganiss les inde& ?
-racle peut !nsrer des l!gnes dans l'espace l!br par la suppress!on de l!gne.
-racle ordonne s)uent!ellement les entres.
+! #ous suppr!meK toutes les entres d'un bloc d'!ndeI, -racle r!ntgre le bloc dans la Aree "!st.
+! #ous !nsreK les #aleurs en ordre ascendant dans un !ndeI et s! #ous suppr!meK les anc!ennes #aleurs, s! un
bloc cont!ent seulement une entre, !l $aut le ma!nten!r. >our cela, !l $aut reconstru!re les !ndeI rgul!rement.
"es colonnes de la #ue ;6DE4D+==+ sont :
:olonne Descr!pt!on
"AD<-L+ 6ombre de #aleurs courantes dans l'!ndeI.
"AD<-L+D"E6 =otal en octets de la longueur de toutes les #aleurs.
DE"D"AD<-L+ 6ombre de #aleurs suppr!mes dans l'!ndeI.
DE"D"AD<-L+D"E6 "ongueur de toutes les #aleurs suppr!mes.
<emar)ues :
.ne carte des eItents se trou#ant dans l'ent*te du segment, de mult!ples eItents ne dtr!orent pas les
per$ormances.
"es D<-> sont plus lent sur les segments a%ant plus!eurs eItents.
:onse!l : 6e pas ta!ller les ob/ets 5 la ta!lle d'un eItent, car cela gasp!lle beaucoup d'espace au dbut.
Comment sont grs les .ree Lists ?
;l % a au mo!ns une $ree l!st 0l!ste de blocs l!bres1 dans l'ent*te de cha)ue segment.
"es $ree l!sts sont l!es.
Des blocs sont a/outs 5 la $ree l!st :
lors de l'allocat!on de blocs au segment,
lors de la suppress!on de l!gnes $a!sant tomber l'espace ut!l!s en dessous de >:=.+ED,
lors de la mod!$!cat!on de la mar)ue @!gh Later.
"ors d'un ;6+E<=, le process recherche les blocs dans la $ree l!st. !ns!, s! le s%stme est surcharg en ;6+E<=
et en DE"E=E, le process peut *tre m!s en attente.
Comment optimiser les rollbac# segments ?
Quest-ce quun %ollbac( *egment ?
.n <ollbacC +egment :
est enreg!str dans les $!ch!ers base de donnes,
est ut!l!s pour conser#er les !mages?a#ant des enreg!strements,
est ut!l!s pour <-""B:B, pour restaurat!on et pour cohrence en lecture,
est const!tu d'au mo!ns deuI eItents ut!l!ss de $a]on c!rcula!re.
Combien de %ollbac( *egments "aut-il ?
.ne table des transact!ons est conser#e dans l'ent*te de cha)ue <ollbacC +egment.
:onse!l : >our les appl!cat!ons de t%pe batch, compter un <ollbacC +egment par /ob concurrent.
Combien de %ollbac(s sont-ils utiliss ?
"es DE"E=E sont gourmands en <ollbacC +egments. =<.6:=E permet d'opt!m!ser les per$ormances.
"es ;6+E<= n'ut!l!sent )ue peu de place dans les rollbacCs : seul le <-L;D est cr!t.
"a consommat!on des .>D=E dpend du nombre de colonnes m!ses 5 /our.
"es #aleurs !ndeIes gnrent plus de rollbacC.
"es .>D=E de colonnes !ndeIes ncess!tent l'enreg!strement :
de l'anc!enne #aleur de la donne,
de l'anc!enne #aleur de l'!ndeI,
de la nou#elle #aleur de l'!ndeI.
Comment sont allous les %ollbac( *egments ?
<emar)ue : :ha)ue #al!dat!on 0eIpl!c!te ou !mpl!c!te1 met $!n 5 la transact!on : la commande peut donc *tre
!ncluse de $a]on rpt!t!#e. :ela peut *tre ut!le pour les tra!tements batch.
10
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
Comment auditer les mcanismes de $edo ?
"es $!ch!ers redo log sont organ!ss en groupes. .n groupe do!t a#o!r un ou plus!eurs membres. =ous les
membres d'un groupe ont un contenu !dent!)ue.
:onse!l : >ar scur!t, !l do!t % a#o!r deuI membres ou plus dans cha)ue groupe ou les $!ch!ers do!#ent *tre
m!rorrs par matr!el.
:onse!l : >u!s)ue "EL< cr!t pres)ue cont!nuellement dans les $!ch!ers redo log d'un m*me groupe, !ls
do!#ent *tre rpart!s sur des supports rap!des.
Comment /iter les attentes de Chec(point ?
"e process "EL< cr!t de $a]on c!rcula!re et s)uent!elle dans les groupes de redo log.
,uand un groupe est ple!n, -racle eIcute un :hecCpo!nt. :ela s!gn!$!e )ue :
"EL< cr!t le bu$$er log sur le d!s)ue,
DBL< cr!t tous les blocs #al!ds 0prsents dans la D!rt% "!st1 dans les $!ch!ers de donnes,
"EL< ou :B>= mettent 5 /our les ent*tes des $!ch!ers de donnes.
Comment rguler les Chec(points ?
DBL< do!t tou/ours eIcuter un checCpo!nt 5 la $!n de cha)ue groupe de redo log.
Comment autoriser larchi/age des "ichiers redo log ?
"'arch!#age des $!ch!ers redo log permet une plus grande $leI!b!l!t dans les opt!ons de sau#egarde et de
restaurat!on. Dans ce cas, !l #aut m!euI a#o!r plus de deuI groupes de redo log.
,uand un groupe est rempl!, DBL< $a!t un checCpo!nt et un $!ch!er do!t *tre arch!#. :ec! do!t se $a!re a#ant
)ue "EL< a!t de nou#eau beso!n d'cr!re sur le $!ch!er.
Comment dimensionner le !u""er %edo Log ?
"e Bu$$er <edo "og $a!t part!e de la +E.
Comment rduire les %edo ?
<emar)ue : +! #ous ut!l!seK le +,"G"oader en mode chem!n d!rect ou s! #ous ut!l!seK la crat!on parallle et
)ue #ous ne creK pas de redo log, #ous de#eK sau#egarder le tablespace une $o!s la commande term!ne.
<emar)ue : +! #ous tenteK d'accder 5 ces ob/ets aprs une restaurat!on de la dern!re sau#egarde 0antr!eure au
chargement .6<E:-2E<B"E ou 5 la crat!on1, un message d'erreur s!gnalant )ue les blocs sont corrompus
est a$$!ch.
Comment "onctionnent les latchs du !u""er %edo Log ?
,uand un process a beso!n d'cr!re ses changements dans le Bu$$er <edo "og, un N <edo llocat!on "atch O lu!
est allou.
:e process :
obt!ent un <edo llocat!on "atch,
cop!e son tra#a!l dans le bu$$er,
l!bre le latch.
+ur les mach!nes 5 plus!eurs :>., !l est plus e$$!cace d'a#o!r plus!eurs latchs.
Comment fonctionnent les latchs sur les plateformes !& ?
Dans un s%stme mult!?process, plus!eurs process peu#ant *tre pr*ts en m*me temps pour cop!er leur tra#a!l
dans le Bu$$er <edo "og, un process a tou/ours beso!n d'obten!r un <edo llocat!on "atch.
.ne $o!s l'espace dans le bu$$er allou, !l peut :
conser#er le latch tans )u'!l cr!t dans le bu$$er,
l!brer le latch et en conser#er une cop!e pendant )u'!l cr!t.
la $!n de l'cr!ture, !l l!bre le latch.
;l est poss!ble d'a#o!r plus!eurs cop!es du latch, ma!s seulement un latch.
"'obtent!on d'un latch peut pro#o)uer un goulot d'tranglement.
Comment suivre la contention du latch $edo ?
;l % a deuI t%pes de demande :
11
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
=%pe de demande Descr!pt!on
L;"";6ED=-DL;= "e process attend le latch.
.t!l!s a#ec le latch, le process ne pou#ant pas
cont!nuer sans obten!r le latch.
;99ED;=E "e process cont!nue son tra#a!l sans attendre.
.t!l!s a#ec les cop!es de latch. +'!l n'obt!ent pas une
cop!e de latch, le process conser#e le latch.
"es colonnes de la #ue 23"=:@ sont :
:olonne Descr!pt!on
;99ED;=EDEE=+, ;99ED;=ED9;++E+ ;n$ormat!ons sur les demandes de t%pe ;99ED;=E.
EE=+, 9;++E+, +"EE>+ ;n$ormat!ons sur les demandes de t%pe
L;"";6ED=-DL;=.
+"EE>+ 6ombre d'attentes des process.
Comment r(duire la contention sur le $edo Allocation Latch ?
:ha)ue process a#ec une entre de log supr!eure 5 "-ED+9""DE6=<7D94D+;8E do!t l!brer le <edo
llocat!on "atch et obten!r une cop!e de <edo llocat!on "atch a#ant l'cr!ture. "es process dont l'entre est
!n$r!eure 5 cette #aleur peu#ent conser#er le <edo llocat!on "atch lors de l'cr!ture.
Quels peu/ent 0tre les problmes ?
<emar)ue : ;l est poss!ble de mettre le paramtre "-EDB"-:BD:@E:B+.9 5 =<.E, ma!s cec! !ndu!t une
surcharge sens!ble au n!#eau des per$ormances.
Comment sui%re et dtecter les contentions de %errous ?
Comment "onctionne le /errouillage ?
"es #errous permettent d'assurer un haut n!#eau de concurrence sur les donnes : plus!eurs ut!l!sateurs peu#ent
accder auI m*mes donnes en m*me temps.
"e #errou!llage "9D se $a!t au n!#eau l!gne.
.ne !nterrogat!on ne pose aucun #errou, 5 mo!ns )ue l'ut!l!sateur ne spc!$!e le contra!re.
;l eI!ste plus!eurs n!#eauI de cohrence des donnes : l'ut!l!sateur #o!t une !mage stat!)ue des donnes, m*me
s! les autres ut!l!sateurs sont en tra!n de la mod!$!er.
.ne transact!on conser#e le #errou tant )u'!l n'% a pas eu de #al!dat!on ou d'annulat!on 0:-99;= ou
<-""B:B1.
-racle ne con#ert!t /ama!s les #errous de n!#eau l!gne en #errous de n!#eau table.
"es #errous d'-racle sont e$$!caces et peu co(teuI, et la plupart des s!tes n'ont pas de problmes de
#errou!llage. +! les #errous pro#o)uent une content!on, c'est sou#ent parce )ue :
les d#eloppeurs ont cod sans ncess!t de hauts n!#eauI de #errou!llage,
les d#eloppeurs ont cod sans ncess!t de longues transact!ons,
les ut!l!sateurs ne #al!dent pas leurs mod!$!cat!ons ds )ue poss!ble,
l'appl!cat!on ut!l!se -racle en con/onct!on a#ec d'autres produ!ts !mposant de plus hauts n!#eauI de
#errou!llage.
;l eI!ste plus!eurs t%pes de #errous :
les #errous "9D,
les #errous "DD,
les autres.
Qu*est+ce que le verrou LD ?
;l % a deuI sortes de structures de #errous pour les tra!tements "9D 0;6+E<=, .>D=E ou DE"E=E1 :
#errou partag sur la table,
#errou eIclus!$ sur chacune des l!gnes mod!$!es.
"es #errous sont ma!ntenus comme des $!les d'attente. :e mcan!sme peut garder trace :
des ut!l!sateurs en attente,
du mode de #errou )u'!ls ds!rent,
de l'ordre dans le)uel les ut!l!sateurs ont $a!t la demande de #errou.
"e #errou "9D est de t%pe <ow EIclus!#e 0<41. +ur l'cran du +er#er 9anager 9on!tor :
12
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
le #errou table est de t%pe =9 dans la colonne "ocC =%pe,
les #errous l!gnes sont de t%pe =4 dans la colonne "ocC =%pe,
dans les colonnes 9ode, les deuI sont de t%pe +4.
"es $!les d'attente d!$$rent des latchs :
.n latch est tenu par un process et les autres process essa%ant d'accder 5 l'ob/et, tenu par le latch, sont
m!s en attente.
.ne $!le d'attente est une l!ste de process en attente d'une ressource.
u n!#eau bloc, -racle conser#e un !dent!$!ant pour cha)ue transact!on act!#e dans l'ent*te de bloc.
u n!#eau l!gne, l'octet #errou stocCe un !dent!$!ant pour le slot contenant la transact!on.
Qu*est+ce que le verrou LDD ?
;l % a tro!s sortes de #errous "DD :
=%pe de #errou Descr!pt!on
2errous eIclus!$s ""D "es ordres :<E=E, "=E< et D<-> do!#ent obten!r
un #errou eIclus!$ sur l'ob/et sur le)uel !ls portent.
"es ut!l!sateurs ne peu#ent pas poser un #errou
eIclus!$ sur une table s! d'autres ut!l!sateurs l'ont d/5
#errou!lle : "=E< =B"E choue donc s! d'autres
ut!l!sateurs ont des transact!ons non #al!des sur la
table.
2errous partags "DD "es autres E<6= et :<E=E >:BEE do!#ent
obten!r un #errou partag "DD sur les ob/ets
r$rencs.
"es ut!l!sateurs ne peu#ent pas mod!$!er la structure de
l'ob/et ou le suppr!mer.
2errous de pars!ng .n ordre ou un ob/et >"/+," en "!brar% :ache
conser#e un de ces #errous pour cha)ue ob/et
r$renc.
"e #errou de pars!ng permet d'!n#al!der l'ordre en cas
de mod!$!cat!on des ob/ets r$rencs. ;l ne #errou!lle
pas #ra!ment l'ob/et et peut *tre N br!s O. ;l ne peut
pas pro#o)uer d'attente n! de content!on.
Quels sont les autres verrous ?
"'ordre "-:B =B"E permet de demander eIpl!c!tement un #errou EIclus!#e et <ow EIclus!#e.
=%pe de #errou Descr!pt!on
<ow +hare 0<+1 >our #errou!ller les l!gnes lors d'une !nterrogat!on :
+E"E:= J A-< .>D=E R
.n #errou partag de n!#eau table 0s!m!la!re au
#errou table pos par un #errou <41 est pos.
.n #errou eIclus!$ sur les l!gnes slect!onnes est
pos.
+hare 0+1 "e #errou +hare emp*che tout ordre "9D sur la table.
"es ordres +," )u! posent !mpl!c!tement un #errou
+hare !mpl!)uent les contra!ntes d'!ntgr!t
r$rent!elle. +'!l n'% a pas d'!ndeI sur la colonne de
cl trangre dans la table dta!l :
=out DE"E=E sur la table maXtre pose un #errou
+hare sur la table dta!l.
=out .>D=E sur les colonnes de la table maXtre
pose un #errou +hare sur la table dta!l.
>our #!ter ce comportement, !ndeIer les colonnes de
cl trangre dans la table dta!l.
"a ra!son de ce comportement est )u'un
enreg!strement de la table maXtre ne do!t pas *tre
suppr!m 0ou #o!r sa cl pr!ma!re mod!$!e1 alors
)u'elle est encore r$rence par au mo!ns une l!gne
dans une table dta!l. "a table dta!l est #errou!lle
1F
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
pour emp*cher les !nsert!ons et les mod!$!cat!ons )u!
transgressera!ent cette rgle.
:ependant, s! la cl trangre est !ndeIe dans la table
dta!l, -racle peut emp*cher les changements sur les
l!gnes dta!l en #errou!llant les #aleurs mod!$!es dans
l'!ndeI.
+hare <ow EIclus!#e 0+<41 "e #errou +hare <ow EIclus!#e emp*che les ordres
"9D et +E"E:= J A-< .>D=E.
"es ordres +," )u! posent !mpl!c!tement un #errou de
t%pe +hare <ow EIclus!#e !mpl!)uent l'!ntgr!t
r$rent!elle.
2ous poseK ce #errou sur la table dta!l )uand #ous
suppr!meK dans la table maXtre dans les cas su!#ants :
.ne contra!nte de cl trangre !nclut l'opt!on -6
DE"E=E :+:DE.
;l n'% a pas d'!ndeI sur la colonne de la cl
trangre dans la table dta!l.
"a solut!on est donc d'!ndeIer la colonne de cl
trangre dans la table dta!l.
Comment sui/re lacti/it de /errouillage ?
"es autres #ues sur les #errous sont : DBD"-:B+, DBDDD"D"-:B+, DBDD9"D"-:B+,
DBDB"-:BE<+ et DBDL;=E<+.
Qu*est+ce que le !erver anager Lock onitor ?
=out process )u! blo)ue les autres dt!ent certa!nement un #errou obtenu #!a une appl!cat!on ut!l!sateur. "es
#errous ac)u!s par les appl!cat!ons ut!l!sateurs sont :
la $!le d'attente "9D 0=91,
la $!le d'attente de transact!on 0=41,
la demande d'ut!l!sateur 0."1.
"es autres #errous non dcr!ts !c! sont des #errous s%stme )u! sont poss de $a]on trs br#e.
"e +er#er 9anager "ocC 9on!tor !dent!$!e deuI t%pes de #errou :
=%pe de #errou <essource ;D1
=4 6umro de rollbacC segment et numro de slot.
=9 ;dent!$!ant de la table en cours de m!se 5 /our.
Quest-ce quun deadloc( ?
"e ser#eur les dtecte automat!)uement et les rsout en annulant l'ordre )u! a dtect le deadlocC.
"es deadlocCs sont mo!ns $r)uents )uand les appl!cat!ons ac)u!rent les #errous dans le m*me ordre ou )uand
les transact!ons ac)u!rent les #errous les plus restr!ct!$s en prem!er.
.ne appl!cat!on o_ plus!eurs ut!l!sateurs mettent 5 /our les l!gnes d'une m*me table de $a]on alato!re peut
gnrer des deadlocCs. .ne solut!on cons!ste 5 tr!er les l!gnes a#ant leur #al!dat!on.
Comment la cohrence en lecture est-elle assure ?
Qu*est+ce que la lecture logique au niveau traitement ?
:ha)ue !nterrogat!on #o!t tou/ours une !mage cohrente des donnes slect!onnes. -racle ut!l!se les rollbacC
segments pour reconstru!re les donnes s! le +:6 0+%stem :hange 6umber1 de l'!nterrogat!on est antr!eur au
+:6 des donnes.
Qu*est+ce que la lecture de coh(rence de niveau transaction ?
;l n'est pas poss!ble de lancer un ordre "9D dans ses transact!ons en lecture seulement.
-racle ut!l!se comme base le +:6 au dmarrage de la transact!on et reconstru!t cha)ue bloc mod!$! depu!s
pour donner une !mage cohrente en lecture.
:onser#er une !mage cohrente sur de mult!ples
!nterrogat!ons
"ancer a#ant la prem!re !nterrogat!on : +E=
=<6+:=;-6 <ED -6"7 R
1M
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
Qu*est+ce que les transactions !%$,AL,-ABL% ?
Dans une transact!on en mode +E<;";8B"E, la #ue sera cohrente et t!endra compte de ses propres
mod!$!cat!ons.
.ne transact!on en mode +E<;";8B"E peut conten!r des ordres "9D. =oute !nterrogat!on de la transact!on
#erra les changements de sa propre transact!on ma!s pas les mod!$!cat!ons $a!tes par les autres ut!l!sateurs.
;n!t!al!ser une transact!on en mode +E<;";8B"E +E= =<6+:=;-6 !solat!onDle#el P
+E<;";8B"E R ou "=E< +E+E++;-6 +E=
!solat!onDle#el P +E<;";8B"E R
Comment optimiser pour des besoins applicatifs di%ergents ?
Comment optimiser les applications transactionnelles ?
"es appl!cat!ons transact!onnelles 0-"=> ? -nl!ne =ransact!on >rocess!ng1 sont des s%stmes 5 haut db!t et 5
$ort tauI d'!nsert!on et de m!se 5 /our. Elles cont!ennent gnralement de gros #olumes de donnes )u!
gross!ssent de $a]on cont!nuelle et sont accdes de $a]on concurent!elle par des centa!nes d'ut!l!sateurs.
"es buts du tun!ng sont :
la d!spon!b!l!t,
la rap!d!t,
la concurrence d'accs,
la poss!b!l!t de restaurat!on.
:onse!l : "es contra!ntes sont tou/ours mo!ns co(teuses 5 eIcuter )ue les rgles de gest!on par code appl!cat!$.
"es contra!ntes d'!ntgr!t r$rent!elle ou les contra!ntes de t%pe :@E:B sont les pr!nc!pauI t%pes de
contra!ntes 5 cons!drer. +! #ous ut!l!seK les rgles de gest!on par code appl!cat!$, !l $aut s'assurer )ue le code
est b!en partag.
:onse!l : ;l $aut ma!nten!r la charge de pars!ng au m!n!mum. >our cela, !l $aut )ue le code de l'appl!cat!on
ut!l!se b!en les #ar!ables plut&t )ue les #aleurs l!ttrales.
Comment optimiser les applications daide 1 la dcision ?
"es appl!cat!ons d'a!de 5 la dc!s!on ut!l!sent un gros #olume d'!n$ormat!ons pour constru!re les rapports de
s%nthse. Elles collectent des !n$ormat!ons en pro#enance de s%stmes -"=> tout en les groupant et en les
total!sant. "a mthode d'accs est sou#ent la lecture s)uent!elle 0$ull table scan1 sur de gros #olumes de
donnes.
"es pr!nc!pauI ob/ect!$s du tun!ng sont :
la rap!d!t,
la d!spon!b!l!t.
"'opt!on >arallel ,uer% est trs b!en adapte 5 ce t%pe de s%stme.
"'opt!m!seur a beso!n de stat!st!)ues 5 /our pour cho!s!r le plan d'eIcut!on correct de recherche des donnes. ;l
est donc ncessa!re de mettre en place des procdures d'anal%se stat!st!)ue rgul!re des tables.
A quoi servent les histogrammes ?
"'opt!m!seur par les co(ts 0:B-1 #alue relat!#ement prc!sment le co(t d'une re)u*te dans le cas de donnes
un!$ormment rpart!es. +'!l ne peut pas, !l ne peut pas est!mer la slect!#!t d'une !nterrogat!on.
"es barres des h!stogrammes sont de m*me hauteur 0he!ght balanced1 : la #aleur maI!male de cha)ue
$ourchette de #aleurs !nd!)ue donc le nombre de #aleurs appartenant 5 la $ourchette.
Qu*est+ce qu*un ,nde. Bitmap ?
"es !ndeI b!tmap sont part!cul!rement ut!les dans un s%stme d`a!de 5 la dc!s!on 0;D ou D++1.
+! #ous lanceK une re)u*te +," a#ec de nombreuses clauses L@E<E, -racle peut ut!l!ser les oprateurs 6D
et -< pour comb!ner ce b!tmap a#ec des b!tmaps portant sur d`autres colonnes.
ucune rgle ne porte sur l`ordre des colonnes.
-racle peut comb!ner n`!mporte )uel nombre d`!ndeI b!tmap dans n`!mporte )uel ordre.
"es !ndeI b!tmaps :
ut!l!sent peu d`espace de stocCage,
tra#a!llent trs rap!dement sur de mult!ples prd!cats sur des colonnes $a!blement d!scr!m!nantes.
.n !ndeI b!tmap a une catgor!e pour cha)ue #aleur poss!ble. EIemple :
=able E9> ;ndeI b!tmap
E9>6- Y-B Y-BP`96EE<` Y-BP`><-E<99E<`
1S
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
0001 96EE< 1 0
0002 ><-E<99E< 0 1
Comment s*adapter la logique de l*application ?
Dans les appl!cat!ons d`a!de 5 la dc!s!on 0;D1, le temps pass 5 anal%ser l`ordre +," est ngl!geable en
compara!son du temps pass 5 eIcuter l`!nterrogat!on.
"e tun!ng de la "!brar% :ache est donc mo!ns !mportant dans ce t%pe d`appl!cat!ons )ue dans les appl!cat!ons
-"=>.
;l est d'autant plus !mportant de par#en!r au plan d`eIcut!on opt!mal )ue de pet!tes #ar!at!ons peu#ent co(ter
des m!nutes ou des heures.
"es d#eloppeurs do!#ent donc :
anal%ser attent!#ement 0#entuellement a#ec les h!nts1,
tester sur des #olumes de donnes ral!stes,
ut!l!ser des $onct!ons >"/+," dans les !nterrogat!ons.
Dans les #ers!ons antr!eures 5 la H.F, s! les stat!st!)ues ta!ent correctement calcules, l`opt!m!seur
conna!ssa!t :
les places de #aleurs d`une colonne,
le nombre de #aleurs d!st!nctes.
En -racle H.F, !l a en plus la conna!ssance de la d!str!but!on des donnes dans les plages de #aleurs grace auI
h!stogrammes.
+! l`appl!cat!on ut!l!se des #ar!ables 0eIemple : +elect G Arom nomDtable L@E<E nomDcolonne P :11, cette
arch!tecture n`est plus #alable.
"`opt!m!seur ne peut en e$$et pas calculer a#ec prc!s!on le nombre d`enreg!strements concerns par cette
!nterrogat!on. "e plan d`eIcut!on ne sera donc pas opt!mal.
:onse!l : "es #ar!ables de t%pe B!nd sont conse!lles pour les appl!cat!ons -"=> ma!s surtout pas pour les
appl!cat!ons ;D.
Comment optimiser les applications client2ser/eur ?
"'ob/ect!$ est essent!ellement de m!n!m!ser les changes entre l`appl!cat!$ et la base de donnes.
Comment reconfigurer en fonction des besoins ?
:onse!l : "es .>D=E en -"=> !mpl!)uent un >:=A<EE plus bas )ue celu! prcon!s en ;D. 9a!nten!r deuI
bases au l!eu d`une a un co(t. ;l est poss!ble d`ut!l!ser des $!ch!ers de paramtres d!$$rentes pour le /our et la
nu!t, en arr*tant et redmarrant la base.
Comment optimiser les tris ?
"es tra!tements su!#ants gnrent du tr! :
"a crat!on d`un !ndeI "e processus ser#eur 0ou des processus s! l`!ndeI est
cr en parallle1 do!t tr!er les #aleurs !ndeIes a#ant
de constru!re le BGtree.
"es clauses -rder B% et Eroup B% "e processus ser#eur do!t tr!er les #aleurs spc!$!es
dans les clauses -rder B% et Eroup B%.
"`ut!l!sat!on de D!st!nct "ors de l`ut!l!sat!on du mot cl D!st!nct, le tr! l!m!ne
les #aleurs !dent!)ues.
"es oprateurs .6;-6, ;6=E<+E:= ou 9;6.+ "es ser#eurs ont beso!n de tr!er les tables sur les)uelles
!ls tra#a!llent pour l!m!ner les #aleurs !dent!)ues.
Comment trier en mmoire ?
+! un tr! a beso!n de plus d`espace :
les donnes sont spares et tr!es en plus!eurs $o!s,
le process ser#eur cr!t dans un segment tempora!re sur d!s)ue,
les segments conser#ent les donnes pendant )ue le ser#eur e$$ectue un autre tr!.
"a ta!lle du tr! :
est stocCe dans la Kone mmo!re ut!l!sateur,
n`a pas d`!mpact sur la +E 05 mo!ns d`*tre en con$!gurat!on mult!thread : 9=+1,
est !ntgre 5 la +hared >ool en .E 0en con$!gurat!on mult!therad1.
:onse!l : +! des tr!s !mportants sont e$$ectus, ne pas ut!l!ser 9=+.
1W
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
"ors)ue le tr! est term!n ma!s )ue la Kone mmo!re cont!ent tou/ours des enreg!strements tr!s, cette Kone peut
se rdu!re 0shr!nC1 5 la #aleur prc!se dans le paramtre +-<=D<ED<E=;6EDD+;8E.
Comment /aluer les besoins en mmoire ?
.n plan d`eIcut!on peut conten!r de nombreuI tr!s. EIemple : une /o!nture tr!?$us!on 0+ort 9erge1 de deuI
tables su!#!es d`un tr! pour une clause -rder B%. :ela $a!t tro!s tr!s au total.
+! un ser#eur tra#a!lle sur un tr!, lors)u`!l $a!t le -rder B%, !l consomme :
une Kone de ta!lle +-<=D<ED+;8E 0en octets1 pour cha)ue tr! act!$,
deuI Kones de la ta!lle +-<=D<ED<E=;6EDD+;8E 0pour les tr!s de /o!nture1.
+! #ous paralll!seK le tra!tement, cha)ue ser#eur d`!nterrogat!on a beso!n de +-<=D<ED+;8E octets.
#ec l`opt!on >arallel ,uer%, deus groupes de ser#eurs peu#ent tra#a!ller en m*me temps, ce )u! consomme :
+-<=D<ED+;8E G 2 G degr de paralll!sat!on,
+-<=D<ED<E=;6EDD+;8E G degr de paralll!sat!on G 0nombreDdeDtr! ? 21.
"a #aleur opt!male de +-<=D<ED+;8E et de +-<=D<ED<E=;6EDD+;8E pour l`opt!on >arallel ,uer%
est de 19o.
6ormalement, +-<=D<ED+;8E et +-<=D<ED<E=;6EDD+;8E de#ra!ent a#o!r la m*me #aleur, sau$ s!
:
#ous *tes /uste en mmo!re,
#ous ut!l!seK un ser#eur 9=+.
Comment /iter le !u""er Cache ?
"a consommat!on mmo!re 0en octets1 de cha)ue tr! est de +-<=DL<;=EDB.AAE<+ G
+-<=DL<;=EDB.AAE<D+;8E Q +-<=D<ED+;8E.
.n tr! parallle a beso!n de 00+-<=DL<;=EDB.AAE< G +-<=DL<;=EDB.AAE<D+;8E1 Q
+-<=D<ED+;8E1 G 2 G degr de paralll!stat!on
Comment sui/re les tris ?
2ous de#eK #ous assurer )ue :
le maI!mum de tr!s est ral!s en mmo!re,
lors de l`ut!l!sat!on !n#!table des segments tempora!res, les E/+ sont auss! rap!des )ue poss!ble.
Comment optimiser les conne&ions ?
Qu3est-ce que le )ultithread ?
"e +er#eur 9ult!?=hread 09=+1 donne la poss!b!l!t auI ut!l!sateurs de partager des process.
;l ne rend pas le s%stme plus rap!de ma!s permet 5 un plus grand nombre d`ut!l!sateurs de tra#a!ller en m*me
temps sur le base de donnes.
+ans 9=+, cha)ue ut!l!sateur standard .n!I 0ou se connectant d`un cl!ent d!stant1 a beso!n d `un ser#eur dd!
pour accder auI $!ch!ers du ser#eur -racle et 5 ses structures mmo!res.
Dans les appl!cat!ons !nteract!#es, o_ les ut!l!sateurs passent le plus cla!r de leur temps 5 parler 5 leurs cl!ents,
ces ser#eurs dd!s sont en grande part!e !nact!$s. ;ls ont du tra#a!l lors)ue l`ut!l!sateur en#o!e une !nterrogat!on
ou e$$ectue un changement dans la base.
#ec 9=+, plus!eurs ut!l!sateurs partagent des process d!spatchers, )u! accdent au ser#eur -racle pour euI.
-racle ut!l!se des ser#eurs partags pour e$$ectuer les ordres +," )u! lu! sont donns par les d!spatchers.
9=+ est ut!le sur :
les s%stmes .n!I, o_ !ls #!tent la consommat!on d`un ser#eur dd! pour cha)ue ut!l!sateur,
d`autres ser#eurs auI)uels accdent de nombreuI cl!ents d!stants,
les mach!nes )u! approchent les l!m!tes de ressources sur les process et les smaphores.
>our la gest!on des process d!spatchers, augmenter la :>.. Donc, s! les ressources :>. posent un problme, ne
pas mettre en place 9=+.
:onse!l : 9=+ est conse!ll sur les s%stmes a%ant plus de 100 ut!l!sateurs. ;l $onct!onne nanmo!ns a#ec un
nombre mo!ns le# ma!s sans bn$!ce notable. >ar contre, !l n'% a aucun !ntr*t 5 ut!l!ser les ser#eurs partags
sur des bases de donnes tra#a!llant !ntens!#ement.
Comment con"igurer le )4* ?
#ant toute chose, !l $aut !nstaller et con$!guer +,"G6et #2.
;l % a deuI $!ch!ers :
1H
Bruno Delb
http://www.brunodelb.com
Date : 28/10/2001
La base de donnes Oracle
6om du $!ch!er :ontenu
l!stener.ora "`adresse du l!stener et des !nstances auI)uelles !l peut
se connecter.
tnsnames.ora l!as de spc!$!cat!on des conneI!ons ut!l!sables.
"es paramtres d`!n!t!al!sat!on sont :
>aramtre 2aleur
9=+D";+=E6E<DDD<E++ dresse eIacte !dent!)ue 5 celle spc!$!e dans
l!stener.ora.
9=+D+E<2;:E 2aleur du mot cls +;D dans la clause :-66E:=
D= dans tnsnames.ora.
9=+D+E<2E<+ 6ombre !n!t!al de ser#eurs partags.
9=+DD;+>=:@E<+ 6ombre !n!t!al de d!spatchers.
9=+D94D+E<2E<+ 6ombre maI!mum de process ser#eurs.
9=4D94DD;+>=:@E<+ 6ombre maI!mum de process d!spatchers.
Comment rgler les ser/eurs partags ?
+`!l n`% a pas asseK de ser#eurs partags, le ser#eur en dmarrera d`autres. ;ls seront suppr!ms lors)u`!ls
de#!ennent !nact!$s, sau$ s! #ous a#eK prc!s cette #aleur dans le paramtre 9=+D+E<2E<+.
+`assurer )ue le nombre de ser#eurs n`a#o!s!ne pas 9=+D94D+E<2E<+ ou ><-:E++E+.
Que "aut-il sa/oir sur les ser/eurs partags et le *hared ,ool ?
+! #ous ut!l!seK 9=+, des !n$ormat!ons conser#es dans la >E sont trans$res dans la +hared >ool de la Kone
.E 0.ser Elobal rea1.
Demander mo!ns de mmo!re 5 la +hared >ool ma!s, en contre?part!e, d!m!nuer les demandes des ut!l!sateurs
pour leurs propres mmo!res.
Quelles peu/ent 0tre les problmes ?
:onse!l : ;l est dangereuI de suppr!mer un process de ser#eur ut!l!sateur au n!#eau du s%stme d`eIplo!tat!on
0ut!l!ser plut&t B;"" +E++;-61 : suppr!mer un d!spatcher peut auss! a$$ecter d`autres ut!l!sateurs.
:onse!l : 6e pas e$$ectuer des oprat!ons sens!bles 0eIemple : +=<=.>, +@.=D-L61 sur un ser#eur partag.
"e DB do!t a#o!r une conneI!on dd!e.
"es ser#eurs et d!spatchers comptent autant de process bacCground pour une !nstance.
<emar)ue : D!mens!onner con#enablement 9=+D94D+E<2E<+ et 9=+D94DD;+>=:@E<+.
18