Vue dâensemble
- 1) OĂč ça attend ? (wait classes / events / sessions)
- 2) Quel SQL ? (top elapsed / gets / reads / plan réel)
- 3) Quelle ressource ? (I/O fichiers/segments, TEMP, REDO, mémoire)
- 4) Quelle contention ? (locks TX, ITL waits, hot blocks)
- 5) Fix pragmatique : index/statistiques/SQL/paramĂštres/infra
Ce que tu obtiens
- 20 scripts prĂȘts Ă lâemploi (v$ / gv$ / dba_*)
- Une lecture âDBA terrainâ : quoi regarder & comment conclure
- Des variantes : instance vs RAC (GV$)
- Des piĂšges classiques : stats fausses, hard parse, TEMP, redo
3 signaux âdâalarmeâ
Les 3 patterns les plus fréquents en prod :
Ils pointent respectivement vers : I/O random (index), commit/redo latency, contention applicative/verrous.
Pré-requis
- AccĂšs vues dynamiques :
v$*(ou rÎle adapté) - AccÚs dictionnaire :
dba_*(sinon utiliserall_*) - Optionnel : SQL*Plus pour
spoolet formatage
Mini âchecklistâ de lecture
| Indicateur | Ce que ça suggÚre | Action DBA typique |
|---|---|---|
| Buffer gets / exec trĂšs haut | Plan inefficace, scans logiques massifs | Index, rewrite SQL, stats, hints (rare) |
| Disk reads / exec trÚs haut | I/O physique, cache insuffisant ou accÚs non sélectif | Index, partitioning, cache sizing, storage |
| log file sync dominant | Commits fréquents / latence redo | Batch commit, redo/logs, fsync, LGWR, storage |
| TX locks, blockers | Contention applicative, sĂ©quences de transactions | Corriger lâapp, rĂ©duire durĂ©e txn, indexing FK |
MĂ©thode DBA (rapide, efficace, âprĂ©sentable CTOâ)
Ătape 1 â âOĂč part le temps ?â
Avant de parler SQL : on mesure le profil dâattente (wait classes / events). Câest le moyen le plus direct de distinguer CPU vs I/O vs verrous vs commit.
Ătape 2 â âQuel SQL fait mal ?â
Ensuite on remonte Ă lâidentitĂ© du problĂšme : SQL_ID, plan, exĂ©cution rĂ©elle, binds, cardinalitĂ©s (E-Rows vs A-Rows).
Ătape 3 â âQuelle ressource est saturĂ©e ?â
On corrÚle avec le systÚme : redo, TEMP, datafiles, segments chauds, pressure mémoire (PGA/sorts, library cache).
Format SQL*Plus recommandé (lisibilité)
-- Exemple SQL*Plus
set lines 220 pages 200 trimspool on long 2000000 longchunksize 2000000
col event format a46
col wait_class format a18
col sql_id format a13
col username format a18
col machine format a26
col program format a34Scripts (Pack) â utilisation âsimpleâ
Tu peux utiliser ce guide en mode copier/coller, ou livrer un âpackâ (un fichier SQL) qui regroupe tout + un menu. Dans Ideo-Lab, tu peux mĂȘme proposer un bouton download.
/static/toolbox/oracle_tuning_scripts_pack_2026.sql (à déposer cÎté serveur)
spool tuning_&&_DATE._&&_TIME..log pour conserver un âsnapshotâ exploitable (audit + reporting CTO).Structure conseillĂ©e (menu)
-- Pseudo-menu SQL*Plus
prompt 1) Top non-idle events
prompt 2) Wait classes
prompt 3) Top waiting sessions
prompt 4) Blocking sessions
prompt 5) Top SQL elapsed
...
accept choice prompt 'Choix (1-20) : '
-- then @script_01.sql ...v$ par gv$ + ajoute inst_id dans les selects (sinon tu perds la dimension ânoeudâ).Dashboard â 20 scripts (ouvrir en modal)
Clique sur une carte : tu obtiens le script, une lecture rapide, et des pistes dâactions. (Copy/Print disponibles dans la modal.)
Top non-idle events
OĂč part le temps (waits), sans le bruit âIdleâ.
WaitsMust-haveWait classes
Vue macro : I/O vs Commit vs Concurrency vs CPU.
WaitsMacroTop waiting sessions (live)
Qui attend maintenant, sur quoi, et depuis combien de temps.
LiveSessionsBlocking sessions
Détecter bloqueur/bloqué (contention immédiate).
LocksUrgenceLocks + objet (table/index)
Relier la contention Ă lâobjet (segment) impactĂ©.
LocksObjetTop SQL â elapsed time
Les SQL qui coûtent le plus en temps cumulé.
SQLMust-haveTop SQL â buffer gets
Consommation CPU logique / cache (gets par exec).
SQLCPUTop SQL â disk reads
RequĂȘtes qui tapent le disque (reads par exec).
SQLI/OSQL text (SQL_ID)
RĂ©cupĂ©rer rapidement le texte de la requĂȘte.
SQLInvestigPlan réel (DBMS_XPLAN)
Plan + ALLSTATS LAST (E-Rows vs A-Rows).
PlanProofCommit/Redo waits
log file sync vs parallel write (latence commit).
RedoCritiqueRedo volume & commits
Pression redo + fréquence commit (sysstat).
RedoDMLHot datafiles I/O
Quels fichiers prennent le plus dâI/O.
I/OStorageHot segments (v$segment_statistics)
Objets chauds : logical/physical reads, ITL waits.
SegmentsMust-haveBuffer cache polluters (v$bh)
Segments âenvahisseursâ du buffer cache.
MemoryCachePGA / sorts / workarea
Overflows TEMP : onepass/multipass, sorts disk.
PGATEMPTEMP consumers (live)
Qui consomme TEMP maintenant (v$tempseg_usage).
TEMPUrgenceHard parse indicators
Parse hard, cursor cache hits : symptĂŽmes shared pool.
ParseShared PoolSessions actives + SQL_ID
Qui exĂ©cute quoi (actives) + temps dâattente.
LiveSQLIndex monitoring (pistes)
Index lourds vs usage monitoré (avec prudence).
IndexesPrudenceExploitation & bonnes pratiques
Routine âDBA Prodâ (10 minutes)
- Scripts 1â2 : wait profile
- Script 3â4 : sessions / blocages
- Scripts 6â8 : top SQL (elapsed/gets/reads)
- Script 10 : plan réel du SQL_ID coupable
- Scripts 11â12 : commit/redo si besoin
Spool & preuve
En incident, un âsnapshotâ horodatĂ© est prĂ©cieux.
-- SQL*Plus
define TS = &&_DATE._&&_TIME
spool tuning_snapshot_&TS..log
-- exécute scripts...
spool offRAC : réflexe
- Utiliser
GV$+inst_id - Comparer les nĆuds : un seul nĆud saturĂ© = hotspot
- VĂ©rifier Ă©vĂ©nements âgc âŠâ (Global Cache) cĂŽtĂ© RAC
Dépannage & piÚges classiques
1) âTout est lentâ mais pas de waits
- CPU saturĂ© (OS) : la DB âattendâ peu â check OS / runqueue / steal time
- Plans changés suite stats : vérifier plans (script 10), stats/histograms
2) âE-Rowsâ trĂšs diffĂ©rent de âA-Rowsâ
- Stats obsolĂštes / biaisĂ©es â gather stats ciblĂ©
- Binds âatypiquesâ â peeked binds, bind sensitivity
- Skew de donnĂ©es â histogrammes / partitioning
3) log file sync explose
- Commits trop frĂ©quents â batch, regroupement
- Storage redo lent â vĂ©rifier latence disque / fsync / configuration redo logs
- RAC : interconnect / GC / log shipping
4) TEMP full / sorts disk
- Hash join/sort qui dĂ©borde â PGA, SQL rewrite, indexes, rĂ©duction cardinalitĂ©s
- Workarea multipass Ă©levĂ© â script 16
