đ§ Oracle DBA â PrĂ©paration Entretien Technique
Questions probables + rĂ©ponses attendues + scripts SQL âprĂȘt-Ă -sortirâ. (IDEO-Lab / v1)
Architecture Oracle
Instance vs Database, SGA/PGA, processus (DBWR/LGWR/CKPT/SMON/PMON), UNDO/REDO.
InstanceSGAREDORMAN / Backup & Recovery
Archivelog, full/incr, restore datafile/controlfile, PITR, tests de restauration, RPO/RTO.
RMANDGPITRPerf & Tuning (AWR/ASH)
Wait events, Top SQL, plans rĂ©els, SQL Monitor, diagnostic âmĂ©thodeâ en prod.
AWRASHWaitsRAC / ASM
Services, Cache Fusion, interconnect, diskgroups, rebalance, skew, âun node hotâ.
RACASMGCSécurité & Gouvernance
Users/roles, privilÚges minimaux, audit, chiffrement, secrets, rotation, conformité.
Least-PrivilegeAuditTLSPL/SQL (indispensable)
Packages, exceptions, bulk collect/forall, jobs scheduler, instrumentation, anti-patterns.
PackagesBulkSchedulerIncidents Prod (piĂšges)
Archive log full, tablespace plein, ORA- errors, âredo log switchâ, deadlocks, runaway SQL.
ProdRunbookRCAEntretien âcomportementalâ
Communication incident, priorisation, gestion du stress, décision redémarrage, reporting.
CommunicationPrioritésCalmeBanque de questions
Liste âinterview-styleâ + rĂ©ponses attendues + relances typiques du recruteur.
Q&ARelancesSeniorLes 12 âmust sayâ (senior vibe)
- Instance vs Database (SGA/PGA + datafiles/controlfiles/redo).
- UNDO vs REDO : cohérence lecture/rollback vs durabilité (LGWR).
- RMAN + Archivelog + tests restore (sinon backup = théorie).
- AWR / ASH / ADDM : mĂ©thodo de diagnostic, pas dâimpro.
- Wait events : CPU vs I/O vs locks (pas âla DB est lenteâ).
- Plan réel : DBMS_XPLAN.DISPLAY_CURSOR (+ stats, cardinalité).
- Row-by-row = anti-pattern ; bulk collect / forall ; SQL set-based.
- RAC : services, âskewâ, interconnect, Cache Fusion.
- ASM : diskgroups + rebalance + REDUNDANCY.
- Runbook incident + communication (impact, ETA, décision).
- Sécurité : least privilege, audit, secrets, rotation.
- Patching : GI/RDBMS, fenĂȘtre, rollback plan, conformitĂ©.
Punchlines
âJe ne redĂ©marre jamais âpour voirâ. Je diagnostique dâabord, je mesure lâimpact, puis jâagis.â âUn backup non restaurĂ© nâest pas un backup : je teste PITR au moins trimestriellement.â âEn perf, je cherche dâabord oĂč part le temps : CPU, I/O, locks, rĂ©seau, puis seulement je tune.â
Mini-check
Avant entretien : - connaĂźtre DBWR/LGWR/CKPT/SMON/PMON/ARCn - savoir expliquer âlog file syncâ / âTX row lockâ / âdb file sequential readâ - 3 exemples dâincidents prod rĂ©solus (mĂ©thodo + rĂ©sultat)
0) Cadrage (5 min)
| Question | Pourquoi | Exemple de réponse attendue |
|---|---|---|
| Depuis quand ? | corrĂ©lation release / batch / infra | âDepuis 10h12 aprĂšs un batchâ |
| Impact ? | prioritĂ© (prod critique vs reporting) | âfront KO, SLA clientâ |
| PĂ©rimĂštre ? | 1 base, 1 service, RAC entier ? | âInstance 2 saturĂ©eâ |
1) Vue globale
- CPU / Load / IO wait (OS + DB) - Sessions actives & waiting - AWR/ASH (si dispo) sur la fenĂȘtre exacte - Top wait events (catĂ©gories)
Signals
- CPU 100% + top SQL â requĂȘte runaway, stats, plan.
- I/O waits â stockage, full scans, hot segments.
- log file sync â commits trop frĂ©quents / latency storage redo.
- RAC GC waits â interconnect / skew / services.
Ce que lâintervieweur veut
Une âmĂ©thodeâ. Pas une liste dâoutils. Dâabord localiser le temps perdu (waits), ensuite seulement optimiser.
2) SQL / Sessions
- Top SQL (CPU/elapsed/gets/reads) - VĂ©rifier plan RĂEL (DISPLAY_CURSOR) - SQL Monitor pour long running - VĂ©rifier stats, bind peeking, cardinalitĂ©
Expliquer : - âestimated vs actual rowsâ - âfull scanâ peut ĂȘtre correct si DW - index = pas toujours solution (write overhead)
3) Locks / Contention
- blocking_session / blocked sessions - enq: TX row lock contention - deadlocks (trace + application fix) - latch/mutex (shared pool / parse storm)
âJe cherche dâabord QUI bloque QUI, puis la transaction racine, puis je dĂ©cide : kill session ? escalade app ? fenĂȘtre ?â
4) Actions sûres (prod)
| Action | Quand | Risque |
|---|---|---|
| Kill session runaway | SQL unique qui tue tout | rollback long si grosse txn |
| Switch service RAC | skew sur un node | impact sessions courantes |
| Plan bascule / DG | storage KO / corruption | RTO/RPO selon mode |
| Restart | dernier recours (fuite mémoire avérée) | downtime + recovery |
Sessions actives / attente
-- Sessions actives (simple) SELECT sid, serial#, username, status, event, wait_class, seconds_in_wait FROM v$session WHERE type='USER' ORDER BY status DESC, seconds_in_wait DESC; -- Top events (instance) SELECT event, total_waits, time_waited/100 time_waited_s FROM v$system_event ORDER BY time_waited DESC;
Blocking sessions / verrous
-- Qui bloque qui SELECT sid, serial#, blocking_session, event, seconds_in_wait FROM v$session WHERE blocking_session IS NOT NULL ORDER BY seconds_in_wait DESC; -- Détails verrous (TX/TM) SELECT l.sid, l.type, l.id1, l.id2, l.lmode, l.request, l.block FROM v$lock l WHERE l.block = 1 OR l.request > 0 ORDER BY l.block DESC, l.request DESC;
Top SQL (gets/reads/elapsed)
SELECT *
FROM (
SELECT sql_id, executions, elapsed_time/1e6 elapsed_s, cpu_time/1e6 cpu_s,
buffer_gets, disk_reads, rows_processed
FROM v$sql
ORDER BY elapsed_time DESC
)
WHERE ROWNUM <= 15;Plan réel (DBMS_XPLAN)
-- Plan rĂ©el (avec stats) SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST +PEEKED_BINDS')); -- âEstimated vs Actual rowsâ est LA discussion senior.
RAC / ASM
-- RAC : instances + services (selon contexte) SELECT inst_id, instance_name, host_name, status FROM gv$instance ORDER BY inst_id; -- ASM : diskgroups SELECT name, state, type, total_mb, free_mb FROM v$asm_diskgroup; -- Rebalance en cours (si ASM) SELECT * FROM v$asm_operation;
Le pitch en 45 secondes
Oracle = (Instance) + (Database) Instance = SGA (shared memory) + background processes Database = datafiles + controlfiles + online redo logs (+ archivelogs)
Process clés (à connaßtre)
| Process | RĂŽle | Phrase simple |
|---|---|---|
| DBWR | Ă©crit buffers â datafiles | âflush du cache vers disqueâ |
| LGWR | Ă©crit redo â redo logs | âdurabilitĂ© commitsâ |
| CKPT | checkpoint | âcohĂ©rence + accĂ©lĂšre recoveryâ |
| SMON/PMON | recovery / nettoyage | âhygiĂšne et restart propreâ |
| ARCn | archive redo | âpermet recovery avancĂ©â |
UNDO vs REDO (question classique)
REDO : âce que jâai faitâ (durabilitĂ©) â utilisĂ© par recovery UNDO : âcomment revenir en arriĂšreâ (rollback + read consistency) Les deux sont nĂ©cessaires, et ne se remplacent pas.
Relances typiques
- Pourquoi âlog file syncâ existe ? - Que fait un checkpoint ? - Ă quoi sert le controlfile ? - DiffĂ©rence plan estimĂ© vs rĂ©el ?
Concepts Ă maĂźtriser
- ARCHIVELOG indispensable pour recovery avancé (PITR).
- Full + Incremental + backup controlfile/spfile.
- RPO/RTO : objectifs business, pas seulement âtechâ.
- Catalog (optionnel) : centraliser historiques & métadonnées.
Punchline : âJe fais des backups RMAN, mais surtout je PRATIQUE des restores. Sinon je nâai aucune preuve que le plan fonctionne.â
Cas pratique : datafile perdu
1) Identifier le datafile / tablespace impacté 2) OFFLINE tablespace (si possible) ou datafile 3) RMAN RESTORE DATAFILE n 4) RMAN RECOVER DATAFILE n 5) ONLINE + validation applicative
Risk note : Si grosse transaction, le recover peut ĂȘtre long (archivelogs).
PITR (Point-In-Time Recovery)
Cas : suppression logique, corruption logique, âDROP TABLEâ⊠Principe : restaurer Ă T0 (avant lâerreur) puis rĂ©ouvrir/extraire.
On attend de toi : - savoir expliquer la fenĂȘtre temporelle - savoir expliquer la perte potentielle (RPO) - savoir isoler lâenvironnement de restore
Tests restore (ce qui fait senior)
| Test | Fréquence | Objectif |
|---|---|---|
| Restore controlfile/spfile | trimestriel | valider basiques |
| Restore datafile + recover | trimestriel | valider RTO réaliste |
| PITR (scĂ©nario) | semestre | valider plan âerreur logiqueâ |
| DG switchover/failover (si DG) | semestre | DR âvraiâ |
Tri âoĂč part le tempsâ
| SymptĂŽme | Lecture | Action initiale |
|---|---|---|
| CPU | top SQL CPU, parse storm | plan réel, stats, bind |
| I/O | sequential/scattered read | segments hot, scans |
| Commit | log file sync | latence redo + commit pattern |
| Locks | TX row lock | blocking session + root txn |
| RAC GC | gc cr request | services + skew + interconnect |
Ce que tu dois citer
AWR : incidents âpassĂ©sâ ASH : pics courts / sessions actives ADDM : recommandations auto (si pack) SQL Monitor : exĂ©cution live DBMS_XPLAN : plan rĂ©el (ALLSTATS)
Anti-patterns (piĂšges)
- Ajouter des index âau hasardâ - âFlush shared poolâ en prod sans justification - Tuner sans connaĂźtre la charge (OLTP vs DW) - Confondre âfull scanâ = mauvais (pas toujours) - Optimiser SQL alors que le vrai souci est lock/commit/storage
Question piĂšge : âQue fais-tu dâabord ?â
RĂ©ponse attendue : âJe mesure. Je regarde les waits / top SQL / ASH sur la fenĂȘtre. Je ne touche rien avant dâavoir identifiĂ© la cause dominante.â
RAC
- Services : orienter charge (OLTP vs batch) + équilibrage.
- Skew : âun nĆud hotâ (appli colle Ă un node).
- Cache Fusion : latence interconnect â waits GC.
- Diagnostiquer : gv$ views + waits GC + latence réseau.
Question typique : âSi un nĆud RAC est Ă 95% CPU et lâautre Ă 10% ?â RĂ©ponse : âJe vĂ©rifie la distribution par service, les sessions par instance, et je corrige via services / connection strings / load balancing.â
ASM
- Diskgroups : NORMAL/HIGH redundancy.
- Rebalance : impact perf, planifier fenĂȘtre.
- Surveillance : espace, opérations ASM, disques en erreur.
Mots-clĂ©s : âASM = abstraction + mirroring + stripingâ. âJe surveille v$asm_operation pour Ă©viter un rebalance en pleine prod.â
Ce quâils veulent entendre
| ThĂšme | Attendu | Phrase utile |
|---|---|---|
| PrivilĂšges | least privilege, rĂŽles, sĂ©paration | âJe nâutilise pas SYS au quotidien.â |
| Audit | qui fait quoi, traces incident | âAudit utile = exploitable.â |
| Secrets | rotation, coffre, pas dans scripts | âLes mots de passe ne vivent pas dans bash.â |
| Chiffrement | TLS, at-rest selon besoins | âJâaligne avec la conformitĂ©.â |
PiĂšge : âOn veut aller vite, mets tout en DBA.â RĂ©ponse senior : âJe peux dĂ©panner, mais je rĂ©gularise ensuite : rĂŽles, traceabilitĂ©, rotation.â
Points incontournables
- Packages : API stable + perf (cache) + organisation.
- Exceptions : gestion propre, pas de âWHEN OTHERSâ silencieux.
- Perf : BULK COLLECT / FORALL si besoin (sinon SQL set-based).
- Instrumentation : logs, DBMS_APPLICATION_INFO, trace.
- Scheduler : DBMS_SCHEDULER + runbooks + retry.
Template âindustrielâ (package)
CREATE OR REPLACE PACKAGE pkg_ops AS
PROCEDURE p_housekeeping(p_days NUMBER);
END pkg_ops;
/
CREATE OR REPLACE PACKAGE BODY pkg_ops AS
PROCEDURE p_housekeeping(p_days NUMBER) IS
BEGIN
-- TODO: purge, archive, stats refresh
COMMIT;
EXCEPTION
WHEN OTHERS THEN
-- TODO: log + rethrow
RAISE;
END;
END pkg_ops;
/| Incident | Cause typique | Réaction attendue |
|---|---|---|
| Archive log full | FS plein / archiver bloqué | stop hémorragie, backup archivelogs, purge RMAN contrÎlée |
| Tablespace plein | croissance / manque autoextend | ajout datafile, resize, contrĂŽle objets qui explosent |
| Redo log switch | redo trop petits / commits | analyser fréquence, ajuster size/nb groups |
| Deadlock | ordre verrous applicatif | trace + correction cĂŽtĂ© app (pas âtuning DBâ) |
| Runaway SQL | plan, stats, param | isoler SQL, plan réel, mesures, action safe |
Ce qui impressionne : âJe suis capable dâexpliquer lâincident en langage mĂ©tier + un plan dâaction.â âJe documente : timeline, cause racine, prĂ©vention (RCA).â
Questions fréquentes
- âTu fais quoi Ă 2h du matin ?â
- âTu redĂ©marres la DB ?â
- âComment tu annonces un ETA ?â
- âComment tu gĂšres un conflit app vs DB ?â
Réponses attendues (structure)
1) Jâaccuse rĂ©ception + jâĂ©value lâimpact 2) Je stabilise (stop la dĂ©gradation) 3) Je diagnostique (waits / top SQL / locks) 4) Jâapplique une action sĂ»re + je communique 5) RCA + prĂ©vention (runbook / monitoring / capacity)
| Question | Ce quâils testent | RĂ©ponse courte attendue |
|---|---|---|
| Instance vs Database ? | fondations | SGA+process vs fichiers (data/control/redo) |
| UNDO vs REDO ? | cohérence/durabilité | rollback/consistency vs recovery/commit |
| Base lente, tu fais quoi ? | mĂ©thodo prod | waits â SQL/sessions â locks â actions sĂ»res |
| AWR/ASH servent Ă quoi ? | outillage | historique vs pics courts / sessions actives |
| Plan estimé vs réel ? | tuning | DISPLAY_CURSOR + ALLSTATS LAST |
| RAC : un nĆud hot ? | exploitation | services, skew, interconnect, gv$ |
| Archive log full ? | incident | stop + backup + purge RMAN contrÎlée |
| PITR : quand ? | recovery | erreur logique / restore Ă T0 |
| Pourquoi pas ârestartâ ? | maturitĂ© | risque + perte diag + downtime |
