đ Oracle â Monitoring & Tuning (Outils production)
Panorama des outils natif Oracle, open-source, SaaS et commercial pour diagnostiquer, monitorer, alerter et tuner une base Oracle en prod. Objectif : âvoir viteâ, âcomprendreâ, âagirâ (playbooks).
Oracle Enterprise Manager (OEM)
Supervision centralisée : alertes, métriques, jobs, dashboards, capacité, conformité.
OracleCentraliséAlertingAWR (Workload Repository)
Historique perf : CPU/IO/waits, top SQL, load profile, snapshots comparables.
HistoriqueBaselineTop SQLADDM (Diagnostic auto)
Analyse automatique sur AWR : goulots, recommandations, priorisation, impact.
DiagnosticRecommandationsAWRASH / ASH Analytics
âQui attend quoiâ : sessions actives, waits, verrous, hot SQL, pannes intermittentes.
Temps réelWaitsSessionsReal-Time SQL Monitoring
Pour les requĂȘtes lourdes : Ă©tapes du plan, progrĂšs, IO, parallĂ©lisme, temps par opĂ©rateur.
SQLPlanLong-runningSQL Tuning Advisor
Conseils ciblés : stats, index, SQL Profile (si applicable), rewriting/structure.
AdvisorTuningSQLPrometheus + Grafana
MĂ©triques & dashboards sur mesure : DB + OS + app. IdĂ©al âstack observabilityâ self-host.
Open-sourceDashboardsAlertingOracle Exporter
Expose des métriques Oracle à Prometheus (sessions, waits, cache hit, tablespace, etc.).
ExporterPrometheusMetricsELK / OpenSearch logs
Centralisation & recherche : alert.log, listener, audit, traces, corrélation avec logs applicatifs.
LogsSearchCorrelationDatadog / Dynatrace / New Relic
ObservabilitĂ© full-stack : APM + DB insights + alerting, corrĂ©lation traces â SQL.
SaaSAPMSLOSolarWinds DPA
Approche âwait-basedâ claire : historique, top waits, rĂ©gressions, recommandations.
CommercialWait-basedHistoriqueQuest / Redgate / Toad
Suites DBA : tuning SQL, diagnostics, comparaisons, dev-ops DB, tooling poste de travail.
DBA suiteTuningWorkflowPourquoi OEM est âle cockpit DBAâ en production
OEM (Cloud Control) sert de tour de contrĂŽle : surveillance multi-cibles, alerting, diagnostics, reporting, configuration & compliance. En environnement Oracle âsĂ©rieuxâ, OEM devient le point dâentrĂ©e : observer â comprendre â agir â prouver (reports).
Ce que OEM remplace (ou standardise)
| Besoin | Sans OEM | Avec OEM |
|---|---|---|
| Vue multi-DB | scripts + bricolage | console centralisée |
| Alerting | cron/grep | seuils + actions + historique |
| Diagnostic | approche âĂ lâĆilâ | AWR/ASH/ADDM intĂ©grĂ©s (si packs) |
| Capacity | Excel / estimations | tendances + forecast |
| Conformité | contrÎles manuels | policies / drift / audit |
Diagramme mental : OEM comme pipeline âsignal â enquĂȘte â actionâ
[Cibles] [Collecte] [Analyse] [Action]
DB/ASM/RAC --> Agent OEM --> Metric Store + Baselines --> Alerts/Incidents
| | | |
| | | +--> Notifications (mail/webhook)
| | +--> Perf (AWR/ASH/ADDM) +--> Runbooks / opérateurs
| +--> Config/Compliance +--> Jobs (maintenance)
+--> OS/Host (selon scope) +--> Reporting (audit/capacity)Dans une phrase
Architecture OEM (Cloud Control) â cibles, agents, OMS, dĂ©pĂŽt
Schéma (simplifié, mais fidÚle au concept)
+---------------------------+ +---------------------------+
| Console UI | | Notifications/ITSM |
| Dashboards / Reports | ----- | Email / Webhook / Ticket |
+---------------------------+ | +---------------------------+
^ Alerts
| |
| v
+---------------------------+ +---------------------------+
| OMS (Management | | Policies / Baselines |
| Service) |---| Rules / Incidents |
+---------------------------+ +---------------------------+
|
| writes/reads
v
+---------------------------+
| OEM Repository (DB) |
| Metrics / history / conf |
+---------------------------+
^
| agent upload
+--------------+--------------+------------------------------+
| Agents OEM sur les hĂŽtes / cibles |
| - DB targets (instance/CDB/PDB), listeners, ASM, host |
+--------------+--------------+------------------------------+
| |
v v
+------------------+ +------------------+
| Oracle DB target | | Host/OS target |
+------------------+ +------------------+Checklist déploiement (vue DBA)
| Ătape | But | Ă valider |
|---|---|---|
| Définir périmÚtre cibles | DB/ASM/RAC/Host | inventaire + criticité |
| Installer agents | collecte | latence réseau, firewall |
| Configurer repository | historique | capacité / maintenance |
| Importer templates | standardisation | mĂȘmes rĂšgles partout |
| Baselines | seuils intelligents | pĂ©riode âsaineâ |
| Canaux dâalerte | rĂ©action | mail/webhook/ITSM |
| Runbooks | MTTR bas | action immédiate |
Erreurs classiques (à éviter)
- Trop dâalertes â personne ne lit. RĂ©sultat : incident non dĂ©tectĂ©.
- Seuils statiques âau pifâ â faux positifs / faux nĂ©gatifs.
- Pas de runbook â OEM sonne⊠mais personne ne sait quoi faire.
- Repo OEM sous-dimensionnĂ© â console lente, historique inutilisable.
MĂ©triques & Dashboards (prod) â ce qui est rĂ©ellement utile
Dashboard âSRE/Prodâ (signaux rapides)
| Signal | Ce que tu veux voir | Lecture |
|---|---|---|
| CPU | DB CPU vs Host CPU | CPU bound vs OS saturation |
| DB Time | DB Time, AAS | charge réelle cÎté DB |
| Waits | Top wait events | oĂč se perd le temps |
| Sessions | active/blocked/new logons | pics / runaway / locks |
| Errors | ORA- rate / listener errors | bug / attaque / config |
| Storage | tablespace / FRA / ASM | risque incident imminent |
Dashboard âDBAâ (investigation)
| Bloc | Tu cherches | Action |
|---|---|---|
| Top SQL | rĂ©gression / nouvelle requĂȘte | SQL Monitor + plan |
| Concurrency | locks, enqueues, latches | ASH + blockers |
| IO profile | hot objects / latence | segments + storage |
| Parsing | hard parse / library cache | binds / pool |
| Redo | commit latency / log sync | app commits / I/O redo |
Diagramme : âDB Time se dĂ©compose enâŠâ
DB TIME = DB CPU + Wait Time
Wait Time â IO waits + Concurrency waits + Commit/Redo waits + Others
Si DB CPU >> waits â CPU bound (SQL/parse)
Si waits dominent â chercher lâĂ©vĂ©nement principal (IO/locks/log syncâŠ)Alerting âproâ â Ă©viter lâalert fatigue (et dĂ©tecter avant la panne)
Stratégie de seuils (baseline-first)
- Définir une période saine (baseline) : jours ouvrés / batch / pics.
- Seuils = écart à la baseline + seuils absolus (ex: FRA 90%).
- Différencier warning vs critical + délai (persistant X minutes).
- Chaque alerte doit avoir : owner, runbook, action.
Table dâalertes recommandĂ©es (production)
| Famille | Signal | Warn | Crit | Runbook (1Ăšre action) |
|---|---|---|---|---|
| Storage | Tablespace usage | 80% | 90% | identifier segments + plan extend/purge |
| Storage | FRA usage | 80% | 90% | archivelogs, backups, rétention |
| Perf | DB Time / AAS | +X% baseline | +Y% baseline | Top waits + top SQL (AWR/ASH) |
| Concurrency | Blocked sessions | > 0 persistant | > N | trouver blocker + SQL_ID + app owner |
| Stability | ORA- rate | burst | burst + persistant | corréler release/logs + rollback |
| IO | Read latency | p95 hausse | p99 hausse | storage path + hot objects |
Diagramme : pipeline dâalerte âOEM â actionâ
Metric breach
|
v
Incident (OEM) ---> auto-ticket (option)
|
+--> Notification (mail/webhook) --> on-call
|
+--> Runbook (lien) : "quoi regarder / quoi faire"
|
v
Investigation : AWR/ASH/SQL Monitor + logs
|
v
Fix (SQL / config / storage / app) + validation baselineAnti-patterns (les pires)
Tuning via OEM â quand tu bascules dans AWR/ASH/ADDM / SQL Monitor
Workflow âincident perfâ (OEM-guided)
1) SymptĂŽme : DB Timeâ / latence appâ / sessions bloquĂ©es
2) OEM : ouvrir la cible DB â Performance home
3) Identifier :
- Top wait events (dominant)
- Top SQL (elapsed / CPU / IO)
- AAS & sessions actives
4) Basculer :
- ASH (qui attend quoi, SQL_ID, blocker)
- SQL Monitor (requĂȘte lourde)
- AWR report (période incident vs baseline)
5) Action :
- SQL tuning (plan/stats/index/rewrite)
- Concurrency (locks/app)
- Storage/IO (hot objects / path)
6) Validation : retour baseline + fermeture incident + postmortemTable âsymptĂŽme â outilâ
| SymptĂŽme | Outil | Tu veux obtenir |
|---|---|---|
| pannes intermittentes | ASH | sessions actives / waits |
| dégradation sur 2h | AWR | diff baseline / top SQL |
| requĂȘte batch lente | SQL Monitor | oĂč le plan consomme |
| diagnostic global | ADDM | findings + priorité |
Diagramme : âTop waitâ â hypothĂšses
Top Wait Event HypothĂšses typiques
--------------------------------------------------------------
db file sequential read index reads / IO latency
db file scattered read full scans / stats/plan
log file sync commits fréquents / redo IO
enq: TX - row lock contention locks applicatifs / transactions
library cache lock/pin parsing / invalidations / shared pool
gc* (RAC) interconnect / hot blocks / skewCheck âSQL rĂ©gressionâ (ultra utile)
Jobs & Automation â OEM comme orchestrateur DBA
Ce que tu automatises classiquement
| Job | But | Fréquence | Risques |
|---|---|---|---|
| Health checks | dĂ©tection early | 5â15 min | bruit si mal calibrĂ© |
| Stats collection | plans stables | daily/weekly | charge (fenĂȘtre) |
| Tablespace audit | éviter saturation | hourly/daily | aucun si read-only |
| Backup verification | restores fiables | daily | temps/IO |
| Compliance scans | drift / sécurité | weekly | aucun |
Diagramme : OEM jobs â preuves (audit)
[Job OEM] --> [Exécution] --> [Résultat] --> [Evidence/Report]
| | | |
| | +--> OK/FAIL +--> PDF/HTML export / historique
| +--> logs
+--> schedule + notificationsConseil trĂšs prod
CapacitĂ© & Reporting â prouver, prĂ©voir, planifier
Capacity planning : ce que tu veux anticiper
| Objet | Métrique | But | Décision |
|---|---|---|---|
| Data growth | GB/day, tablespaces | prévenir saturation | extend/move/partition |
| FRA | rétention archivelogs | éviter blocage | policy / storage |
| CPU | AAS trend | prévoir scale | optimiser vs ajouter CPU |
| IO | latence + throughput | Ă©viter âIO wallâ | storage tier / tuning SQL |
Rapports utiles (et lisibles)
- Weekly health report : incidents, top alerts, top SQL, capacity delta.
- Monthly capacity : croissance, FRA, storage, tendances CPU/IO.
- Post-incident : timeline, métriques, root cause, action, prévention.
Diagramme : âreporting = preuveâ
Mesure (avant) ---> Changement ---> Mesure (aprĂšs) ---> Conclusion (ROI/risque)
SĂ©curitĂ© & RBAC â OEM doit ĂȘtre âsafeâ
Principes
- Comptes OEM : RBAC strict (DBA, viewer, auditor, ops).
- Agents : accÚs réseau minimal, segmentation.
- Audit : actions OEM tracées (qui a fait quoi, quand).
- Principe du moindre privilĂšge sur les cibles DB (collecte vs action).
ModĂšle RBAC (exemple)
| RĂŽle | Peut voir | Peut faire | Interdit |
|---|---|---|---|
| Viewer | dashboards | aucune action | jobs, config |
| Ops | alerts/incidents | runbooks, ack | tuning actions |
| DBA | perf + config | jobs maintenance | actions non validées |
| Auditor | reports | export | toute modification |
Diagramme : zones de confiance
[Admin Users] ---RBAC---> [OEM UI/OMS] ---agents---> [DB targets]
| |
| +--> Repository (metrics/history)
|
+--> Audit trail (who/when/what)Packs / Licensing â la rĂ©alitĂ© en production
OEM âde baseâ couvre dĂ©jĂ la supervision. Mais les diagnostics/tuning avancĂ©s sâappuient souvent sur des packs (ex: fonctionnalitĂ©s AWR/ASH/ADDM/SQL Monitoring selon contexte). Dans un environnement entreprise, la question âquâest-ce qui est autorisĂ©/licenciĂ© ?â fait partie du mĂ©tier DBA.
| Fonction | Valeur | Remarque |
|---|---|---|
| Monitoring centralisé | visibilité multi-DB | socle OEM |
| Diagnostics historiques | forensic + trends | souvent lié à AWR/ASH/ADDM |
| SQL deep analysis | plans/progrĂšs | SQL Monitoring / tuning |
| Compliance | policies / drift | selon modules/options |
Playbooks incidents â âquoi regarderâ en 5 minutes
| Incident | SymptĂŽmes | Dans OEM | Ensuite | Fix typique |
|---|---|---|---|---|
| CPU 100% | latence globale | DB Time vs DB CPU, Top SQL | SQL Monitor + plan | rewrite/stats/index/binds |
| Locks | blocked sessions | Blocking sessions, ASH | identifier blocker | corriger logique app / commits |
| IO bound | read latency high | Top waits IO, segments | AWR compare baseline | hot objects / storage / plan |
| FRA plein | archivelogs bloquent | FRA usage + alert | logs backup | rétention / purge / capacity |
| ORA- burst | erreurs soudaines | error metrics / incidents | corréler release | rollback / fix app / patch |
Mini runbook (template) â Ă coller dans tes tickets
1) SymptĂŽme / impact / start time
2) OEM target : DB + instance + host
3) Graphs : DB Time, AAS, CPU, top waits
4) Top SQL : SQL_ID, module, user, plan changes
5) HypothĂšse : (CPU/IO/locks/redo)
6) Action : (SQL fix / config / storage / app)
7) Validation : retour baseline + métrique OK
8) Postmortem : cause + prĂ©vention + seuils ajustĂ©sDiagramme âMTTRâ (ce qui fait gagner du temps)
MTTR â = Alert (bon signal) + Runbook + Outil (AWR/ASH/SQL Mon) + Owner clair
MTTR â = Bruit + Seuils au hasard + Pas de baseline + Pas d'ownershipĂ quoi sert AWR
AWR capture des snapshots pĂ©riodiques pour analyser une pĂ©riode (incident) ou comparer Ă une baseline. Câest lâoutil âforensicâ numĂ©ro 1 quand tu veux rĂ©pondre Ă : âquâest-ce qui a changĂ© ?â
| Section | Ce que tu cherches | Signal |
|---|---|---|
| Load Profile | DB Time, calls, parses | augmentation brutale |
| Top Wait Events | attentes dominantes | IO/locks/log sync |
| SQL ordered by ⊠| top SQL | requĂȘte rĂ©gressĂ©e |
| Instance Efficiency | ratios (indicatifs) | tendance anormale |
Générer un rapport AWR (script standard)
-- SQL*Plus (selon licences/options)
-- @?/rdbms/admin/awrrpt.sql
-- Mode âDBA proâ :
1) repérer les SNAP_ID (avant/aprÚs incident)
2) générer HTML / TEXT
3) comparer à une période saine (baseline)Lecture rapide (méthode 5 minutes)
ADDM : âAssistant de diagnosticâ
ADDM parcourt les donnĂ©es AWR et sort des findings hiĂ©rarchisĂ©es avec un impact estimĂ©. Câest utile pour accĂ©lĂ©rer lâanalyse quand on dĂ©bute un incident ou un audit perf.
| Sortie | Exemples | Valeur |
|---|---|---|
| Findings | CPU bottleneck, IO bottleneck, Concurrency | priorisation |
| Recommendations | stats/index, memory, config | plan dâaction |
| Rationale | preuves + corrélations | convaincre / documenter |
Comment le lire sans se faire piéger
- ADDM est un conseiller, pas une vérité : toujours recouper (AWR/ASH/SQL plan).
- Ne pas appliquer en prod des changements âparamĂštresâ sans test et rollback plan.
- Prendre les recommandations âSQL / stats / index / locksâ en premier (souvent les plus sĂ»res).
Actions typiques suite Ă ADDM
| SymptĂŽme | Action | Outils |
|---|---|---|
| Top SQL | plan, stats, rewriting | AWR + SQL Monitor + DBMS_XPLAN |
| IO waits | hot segments, storage | AWR + OS metrics + ASM |
| Locks | bloqueur, app logic | ASH + v$ views + app logs |
Pourquoi ASH est incontournable
Quand âça rameâ, ASH rĂ©pond vite Ă : qui est actif, sur quoi il attend, quelles requĂȘtes dominent, et si câest CPU / IO / locks.
Exemples de questions
- Qui est le session blocker ?
- Quels sont les top wait events sur 10 minutes ?
- Quel SQL_ID explose depuis la release ?
Mini requĂȘtes (DBA)
-- Sessions actives (simple)
SELECT s.sid, s.serial#, s.username, s.status, s.sql_id, s.event
FROM v$session s
WHERE s.type='USER'
ORDER BY s.status DESC;
-- Bloqueurs / attendus (concept)
-- (selon version, complĂ©ter via v$session / v$lock / gv$ views en RAC)Quand lâutiliser
- SQL long-running / batch qui dérape.
- Plan complexe avec parallélisme / gros IO.
- Tu veux savoir âoĂč ça passe le tempsâ dans le plan.
Ce que tu lis dans un SQL Monitor
| ĂlĂ©ment | Lecture | Signal |
|---|---|---|
| Plan steps | opĂ©rateur par opĂ©rateur | un step âexploseâ |
| Rows / buffers | cardinalitĂ© rĂ©elle | mismatch â stats |
| PX | répartition/ skew | parallélisme inefficace |
Actions typiques
- Comparer cardinalitĂ© estimĂ©e vs rĂ©elle â stats, histograms, rewriting.
- Isoler lâopĂ©rateur âhotâ â index, join order, filtre plus tĂŽt.
- Valider le plan via DBMS_XPLAN / hints (avec prudence).
Ce quâil propose (gĂ©nĂ©ralement)
- Recommandations stats (manquantes/obsolĂštes).
- Pistes index (quand évident).
- Rewriting (predicate pushdown, jointures, etc.).
- Ăventuellement SQL Profile selon contexte/licences.
Workflow recommandé
Pourquoi câest trĂšs âIDEO-Lab friendlyâ
Tu peux fabriquer des dashboards trÚs expressifs (spikes, amplitude, autoscale), et corréler Oracle + OS + Nginx + Django, exactement comme tu le fais déjà sur tes dashboards infra.
| Composant | RÎle | Résultat |
|---|---|---|
| Prometheus | collecte + TSDB | métriques historisées |
| Grafana | dashboards | visual âopsâ |
| Alertmanager | alerting | notif (mail/webhook) |
KPIs typiques Ă exporter
- Sessions (active/blocked), logons/s
- Waits (top events), DB time
- Buffer cache / library cache (tendance)
- Tablespace/FRA usage
- Redo / archive log rate
Idée
Un exporter exĂ©cute des requĂȘtes (ou lit des vues) et expose les rĂ©sultats sous forme de mĂ©triques Prometheus. Tu construis ensuite tes panneaux Grafana (spikes, autoscale, courbes dynamiques).
Checklist dâintĂ©gration (concept)
Pourquoi les logs sont indispensables
- Tu captures le âcontexteâ : ORA-errors, listener, authent, audit.
- Tu corrĂšles DB â app (ex: erreur HTTP + ORA-error mĂȘme minute).
- Tu peux faire du âsearch forensicâ aprĂšs incident.
Sources de logs (exemples)
| Source | Contenu | Usage |
|---|---|---|
| alert.log | événements DB | diagnostic |
| listener log | connexions | sécurité / perf |
| audit | qui fait quoi | compliance |
| traces | détails | deep dive |
Ce que ces outils apportent
| Force | Impact | Exemple |
|---|---|---|
| Traces APM | corrĂ©lation request â SQL | latence API = requĂȘte lente |
| Dashboards prĂȘts | gain de temps | DB + OS + app |
| Alerting/SLO | pilotage produit | latence p95, erreurs |
Quand éviter : contraintes coûts/compliance, besoin 100% on-prem.
Pourquoi lâapproche wait-based est efficace
PlutĂŽt que des ratios, tu analyses âoĂč le temps est passĂ©â (attentes), et tu peux repĂ©rer rapidement la contention, lâIO, les locks, etc.
Cas dâusage typiques
- Audit perf régulier + tendances.
- Régressions post-release.
- Réduction MTTR sur incidents.
à quoi ça sert (concret)
| Famille | Exemples | Valeur |
|---|---|---|
| Monitoring avancé | Foglight (Quest) | diagnostic, historiques, alerting |
| DevOps DB | Oracle Monitor (Redgate) | surveillance + workflows |
| Tuning SQL/IDE | Toad for Oracle | analyse SQL, plans, productivité |
Performance
| KPI | Pourquoi | Signal |
|---|---|---|
| DB Time / DB CPU | CPU bound vs wait bound | écart important |
| Top wait events | oĂč on perd le temps | locks/IO/log sync |
| Top SQL (elapsed/CPU/IO) | 1 requĂȘte peut tout casser | rĂ©gression |
Concurrence / Verrous
| KPI | Pourquoi | Signal |
|---|---|---|
| Blocked sessions | MTTR incident | persistant |
| Enqueue waits | contention logique | hausse brutale |
| Log file sync | commit latency | app âwrite heavyâ |
Storage
| KPI | Pourquoi | Signal |
|---|---|---|
| Tablespaces | prévenir saturation | 80/90% |
| FRA usage | archivelogs bloquent | pics |
| ASM diskgroup | capacité/IO | déséquilibre |
Stabilité
| KPI | Pourquoi | Signal |
|---|---|---|
| ORA errors rate | bug/régression | burst |
| Parse rate / hard parse | CPU waste | hausse |
| Stats freshness | plans instables | stale |
| Incident | SymptĂŽme | Outils | PremiĂšres actions |
|---|---|---|---|
| CPU 100% | latence globale | AWR + ASH + SQL Monitor | Top SQL, hard parse, plan regression |
| IO bound | db file read high | AWR + OS metrics + ASM | hot segments, index, storage latency |
| Locks | blocked sessions | ASH + v$session | identifier bloqueur, corriger logique app |
| Tablespace/FRA plein | Ă©checs / arrĂȘt | OEM + alerting + scripts | purge/extend, revoir rĂ©tention archivelogs |
| Contexte | Stack | Pourquoi |
|---|---|---|
| Oracle centric | OEM + AWR/ASH/ADDM + SQL Monitor | diagnostic guidé + cockpit DBA |
| Self-host observability | Prometheus + Exporter + Grafana + (ELK logs) | dashboards trÚs expressifs, corrélation OS/app |
| Entreprise multi-stack | Datadog/Dynatrace/New Relic + OEM | traces APM + DB insights + SLO |
Incidents (ordre de lecture)
1) AWR (période incident) : DB Time vs CPU + Top Waits + Top SQL
2) ASH : qui attend quoi (sessions / locks / event)
3) SQL Monitor : oĂč le plan consomme
4) Logs : ORA- burst / erreurs / listener / audit
5) OS : CPU, IO latency, saturationActions âsafeâ (souvent)
- Stats / histograms (avec méthode)
- Index manquant évident (aprÚs preuve)
- Fix SQL (binds, rewriting, join order)
- Réduction contention (app logic, commits)
- Alerting tablespace/FRA + housekeeping