O documento resume uma apresentação sobre técnicas de tuning de banco de dados Oracle, incluindo AWR, ASH, SQL Trace e eventos de espera. O palestrante Marcus Vinicius Miguel Pedro discute como esses métodos podem ser usados para coletar métricas, identificar gargalos e melhorar o desempenho. Exemplos demonstram como analisar os dados desses recursos para diagnosticar e resolver problemas de desempenho.
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
2017 - GUOB Tech Day / OTN Tour LAD - Tuning DBA Day-by-Day
1. 05 de Agosto de 2017, São Paulo, Brasil
DBA Day-by-Day: ASH, AWR, SQL Trace and Wait Events
Marcus Vinicius Miguel Pedro
2. 05 de Agosto de 2017, São Paulo, Brasil
Agenda
• Speaker
• Tuning
• Como?
• Quando?
• Onde?
• Exemplos
• Q&A
• Contatos
3. 05 de Agosto de 2017, São Paulo, Brasil
Marcus Vinicius Miguel Pedro
• Blog: www.viniciusdba.com.br;
• 21 anos de experiência em T.I.;
• 12 anos de experiência como DBA Oracle;
• Conselheiro Técnico do GUOB;
• Palestrante em eventos do GUOB, IFSP, Fatec e outras Universidades;
• Líder do Oracle RAC SIG na América Latina;
• Trabalha como DBA Oracle na Oracle Corporation, pela equipe de ACS – Advanced Customer Support Services;
• Líder de LAD para o Global Virtual Team de Database;
• Foi DBA Oracle na Discover por 7 anos e Gerente de Operações por 2 anos;
• Atuação nos principais clientes dos mais diversos tipos de indústrias no Brasil;
• Foi professor das disciplinas: Arquitetura e Administração de BD; Backup; Alta Disponibilidade do MBA em Banco
de Dados Oracle do IBTA de Campinas e São Paulo;
• Certificações:
- Oracle Database 9i Administrator Certified Associate (OCA);
- Oracle Database 9i Administrator Certified Professional (OCP);
- Oracle Database 10g Administrator Certified Professional (OCP);
- Oracle Database 10g: RAC Administrator Certified Expert (OCE);
- Oracle Database 11g Administrator Certified Professional (OCP);
- Oracle Database 11g Certified Implementation Specialist (OCS);
- Oracle Database Cloud Service Operations Certified Associate;
- Oracle Database Cloud Administrator Certified Professional;
- Oracle ACE.
http://apex.oracle.com/pls/otn/f?p=19297:4:1452013536248361::NO:4:P4_ID:2540
4. 05 de Agosto de 2017, São Paulo, Brasil
Métodos de Tuning
Histórico
5. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
• Métricas efetivas de tuning:
• Específicas;
• Mensuráveis;
• Alcançáveis.
O banco de dados tem que responder o mais rápido suficiente!
Tempo é dinheiro!
6. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
• Métricas efetivas de tuning:
• Específicas;
• Mensuráveis;
• Alcançáveis.
O relatório de vendas precisa ser executado em 2 horas.
7. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
• Objetivo:
• Minimizar tempo de resposta;
• Melhor consumo de recursos;
• Aumento de throughput;
• Escalabilidade.
8. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
9. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
Aplicação escalável
SQL Tuning
Tuning de
Instância/DB
CPU
time
Wait
time
Não haverá ganho
adicionando mais
CPU ou nodes
DB time = DB CPU time + DB wait time
10. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
• O código é novo?
• Sim
11. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
• O código é novo?
• Não
O que mudou?
Há um baseline?
12. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
• Dados de Tuning Coletados:
• Estatísticas Cumulativas:
• Eventos de Espera com informação de tempo;
• Time Model
• Métricas: taxas de estatísticas;
• Amostragem de Estatísticas: Active Session History:
• Estatísticas por sessão;
• Estatísticas por SQL;
• Estatísticas por Serviços;
• Outras dimensões.
13. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
• Licenciamento
• Enterprise Edition + Diagnostic Pack: AWR, ASH, DBA_HIST*, etc...;
• Enterprise Edition: Statspack, V$* exceto V$ACTIVE_SESSION_HISTORY;
• Standard Edition: Statspack, V$* exceto V$ACTIVE_SESSION_HISTORY;
14. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Como?
• Diferenças entre AWR e Statspack:
• O Statspack não possui dados de ASH. No AWR os dados ficam em
DBA_HIST_ACTIVE_SESS_HISTORY;
• O Statspack não armazena histórico para as novas estatísticas de métricas que foram introduzidas
no 10g e podem ser consultadas pelas views-chave do AWR: DBA_HIST_SYSMETRIC_HISTORY e
DBA_HIST_SYSMETRIC_SUMMARY;
• Os snapshots do Statspack precisam ser coletados manualmente. No AWR a coleta dos snapshots
é realizada automaticamente a cada 60 minutos e podem ser alterados se necessário;
• O purge de dados históricos/antigos do Statspack deve ser realizado manualmente. No AWR o
purge é realizado todas as noites automaticamente pelo processo MMON. Por default o MMON tentará
deixar 1 semana de AWR disponível. Se o AWR detectar que há pouco espaço disponível no
tablespace SYSAUX, será realizado um purge automaticamente nos snapshots mais antigos.
15. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Quando?
O tempo todo!
16. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
Usuário!
17. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• AWR:
18. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• AWR – Baseline:
19. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• AWR – Purge:
20. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• AWR – Ajustes:
21. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• AWR – Dados:
22. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• ASH – Visão Geral:
• Armazena o histórico do database time;
• Faz amostragens das atividades de sessões no sistema incluindo:
• SQL_ID;
• OBJECT_ID, FILE_ID, BLOCK_ID;
• Evento de espera e parâmetros;
• SID e SERIAL#;
• MODULE e ACTION_NAME;
• Blocking Session;
• Etc.
• Sempre é usado como primeira análise para uma falha no ambiente;
• Não é necessário reproduzir a carga de trabalho.
23. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• ASH – Mecanismo:
24. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• ASH – Exemplo:
25. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• ASH – Como acessar os dados?
• Trace Dump ASH;
• V$ACTIVE_SESSION_HISTORY;
• DBA_HIST_ACTIVE_SESS_HISTORY;
• ASH Report;
• Página de performance do Enterprise Manager;
• ADDM.
26. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• Wait Events – O que são?
• Uma sessão não está em plena execução o tempo todo!
• Toda sessão sempre espera por algum recurso no banco de dados;
• Cada tipo de espera é um evento nomeado no banco de dados;
• No 11gR2 há 1367 eventos de espera;
• No 12cR1 há 1650 eventos de espera;
• Wait Events = Instrumentação no código;
27. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• SQL TRACE
• Pode ser ativado em instância ou sessão;
• Obtém estatísticas de instruções SQL;
• O arquivo pode ser formatado pelo TKPROF.
28. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• SQL TRACE – Parâmetros de Inicialização
29. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• SQL TRACE
• Para ativar na instância:
• Para ativar na sessão:
• Para ativar em outra sessão:
30. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• SQL TRACE
• Sintaxe tkprof
• Exemplos:
31. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• SQL TRACE
• Sintaxe tkprof
• Exemplos:
32. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• SQL TRACE
• Extended Trace: 10046 Trace levels
• 0 - no statistics;
• 1 - basic statistics CURSOR, PARSE, EXEC, FETCH ERROR, SORT UMAP, ERROR, UMAP, STATS
and XCTEND. O mesmo que sql_trace=true;
• 4 – Mesmo que o level 1 exceto por adicionar a seção de BIND;
• 8 – Mesmo que o level 1, incluindo wait events;
•12 – Combina todos os níveis.
33. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• SQL TRACE
• Extended Trace, com ORADEBUG:
34. 05 de Agosto de 2017, São Paulo, Brasil
Tuning – Onde?
• SQL TRACE
• Extended Trace, com ORADEBUG:
35. 05 de Agosto de 2017, São Paulo, Brasil
AWR
Exemplos
64. 05 de Agosto de 2017, São Paulo, Brasil
ASH
Exemplos
65. 05 de Agosto de 2017, São Paulo, Brasil
ASH
http://blog.tanelpoder.com/files/scripts/ash/dashtop.sql
66. 05 de Agosto de 2017, São Paulo, Brasil
ASH
@dashtop "session_state,event,sql_id,sql_plan_hash_value" "session_type='FOREGROUND'" "TO_TIMESTAMP('01-08-2017
15:00:00', 'DD-MM-YYYY HH24:MI:SS')" "TO_TIMESTAMP('01-08-2017 15:20:00', 'DD-MM-YYYY HH24:MI:SS')"
71. 05 de Agosto de 2017, São Paulo, Brasil
ASH
@dashtop "session_state,event,sql_id,sql_plan_hash_value" "session_type='FOREGROUND'" "TO_TIMESTAMP('02-08-2017
15:00:00', 'DD-MM-YYYY HH24:MI:SS')" "TO_TIMESTAMP('02-08-2017 15:20:00', 'DD-MM-YYYY HH24:MI:SS')"
72. 05 de Agosto de 2017, São Paulo, Brasil
ASH
Mesmo intervalo de tempo: 9:00 às 18:00
73. 05 de Agosto de 2017, São Paulo, Brasil
ASH – Drill Down
@dashtop "session_state,event" "session_type='FOREGROUND'" "TO_TIMESTAMP('01-08-2017 09:15:00', 'DD-MM-YYYY
HH24:MI:SS')" "TO_TIMESTAMP('01-08-2017 12:15:00', 'DD-MM-YYYY HH24:MI:SS')"
74. 05 de Agosto de 2017, São Paulo, Brasil
ASH – Drill Down
@dashtop "session_state,sql_id" "event='db file sequential read'" "TO_TIMESTAMP('01-08-2017 09:15:00', 'DD-MM-YYYY
HH24:MI:SS')" "TO_TIMESTAMP('01-08-2017 12:15:00', 'DD-MM-YYYY HH24:MI:SS')"
75. 05 de Agosto de 2017, São Paulo, Brasil
SQL Trace
Exemplo
76. 05 de Agosto de 2017, São Paulo, Brasil
SQL Trace - TKPROF
77. 05 de Agosto de 2017, São Paulo, Brasil
Wait Events
Exemplo
78. 05 de Agosto de 2017, São Paulo, Brasil
Wait Events
79. 05 de Agosto de 2017, São Paulo, Brasil
Wait Events
80. 05 de Agosto de 2017, São Paulo, Brasil
Perguntas?
81. 05 de Agosto de 2017, São Paulo, Brasil
Contatos
blog@viniciusdba.com.br
twitter.com/viniciusdba
facebook.com/viniciusdba
82. 05 de Agosto de 2017, São Paulo, Brasil
Obrigado!