oracle-tuning-ptbr — v2.0.0
Performance tuning Oracle 19c — análise de planos de execução, índices, AWR e ASH em tempo real.
Desenvolvido por: Maxwell da Silva Oliveira — M&S do Brasil LTDA
Áreas cobertas
| Área | Reference | Assets |
|---|---|---|
| Performance | references/performance-tuning.md |
explain_plan_workflow.sql, index_strategy_examples.sql |
Quando ativar
- Query lenta — análise de explain plan,
AUTOTRACE,DBMS_XPLAN.DISPLAY_CURSOR - Índices:
B-Tree,Bitmap,Function-Based,Composite,Invisible V$SQL,V$SQLAREA— top SQL porELAPSED_TIME,CPU_TIME,BUFFER_GETSV$SESSION_WAIT,V$SYSTEM_EVENT— wait event analysis- Hard parse alto: bind variables ausentes, cursor sharing
- Cardinality errada:
DBMS_STATS,METHOD_OPT,HISTOGRAM - AWR em tempo real:
DBA_HIST_SQLSTAT,DBA_HIST_SYSTEM_EVENT(requer Diagnostics Pack) - ASH:
V$ACTIVE_SESSION_HISTORY,DBA_HIST_ACTIVE_SESS_HISTORY - Hints:
/*+ APPEND */,/*+ INDEX */,/*+ PARALLEL */,/*+ FIRST_ROWS */ MERGEvs loop,BULK COLLECTpara I/O pesado- Estatísticas:
GATHER_SCHEMA_STATS,GATHER_TABLE_STATS, lock stats
Não usar para: DBA ops (sessão/lock/kill), código PL/SQL novo, APEX, ORDS.
Princípios canônicos
- Medir antes de otimizar. Baseline com
SET TIMING ON+AUTOTRACE. Sem medição, otimização é placebo. - Bind variables primeiro. Hard parse elevado em
V$SQLAREAresolve antes de qualquer tuning de index. - Index ≠ sempre melhor. Full scan em tabela pequena ou query retornando > 10% das linhas geralmente vence B-Tree.
- AWR requer licença.
DBA_HIST_*→ Diagnostics Pack obrigatório. Checarcontrol_management_pack_access. - Histogram nas colunas com skew. Sem histogram, optimizer usa densidade plana → plano errado em distribuição assimétrica.
- CREATE INDEX ONLINE em produção — sem
ONLINE, bloqueia DML.
Referências cruzadas
| Precisa de | Skill |
|---|---|
| PL/SQL com BULK COLLECT, loop otimizado | oracle-plsql-ptbr |
| AWR histórico, sessões, DBA operacional | oracle-dba-ptbr |
| Query lenta em report APEX | oracle-apex-ptbr |
| Naming Trivadis em scripts de tuning | oracle-trivadis-ptbr |