![Page 1: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/1.jpg)
Ricardo Portilho [email protected]
Esta obra está licenciada sob a licençaCreative Commons Atribuição-SemDerivados 3.0 Brasil.Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.
Oracle Performance Diagnostics & Tuning 12cR2Em Oracle Enterprise Linux 7.3 – Modo Texto
Inclui CDB Architecture
![Page 2: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/2.jpg)
2
Comandos no Treinamento
Comando com o usuário root:# ls -lh
Comando com um usuário de manutenção:$ sudo ls -lh
Comando com um usuário normal:$ ls -lh
Adicionar texto a um arquivo:$ vi initORCL.ora...db_cache_size=500M...
Comando no Oracle:SQL> SELECT STATUS FROM V$INSTANCE;
Algo deve ser alterado de acordo com sua máquina:Hostname: nerv01.localdomain
Quando algo dá errado propositalmente:O que aconteceu?
Todas as senhas (root, oracle, SYS, SYSTEM) são Nerv2017.
![Page 3: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/3.jpg)
3
rlwrap
# yum -y installhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm# yum -y install rlwrap
$ rlwrap sqlplus / AS SYSDBA$ rlwrap rman TARGET /$ rlwrap lsnrctl$ rlwrap dgmgrl SYS/Nerv2017@ORCL
![Page 4: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/4.jpg)
4
LogsLinux$ sudo tail -f /var/log/messages
Oracle$ tail -f $ORACLE_BASE/diag/rdbms/<database>/<SID>/trace/alert_<SID>.log
- Mantenha os Logs visíveis o tempo todo.
![Page 5: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/5.jpg)
5
Multitenant / Singletenant Architecture
![Page 6: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/6.jpg)
Deprecation of Non-CDB Architecture
Documentação 12cR1:
Documentação 12cR2:
![Page 7: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/7.jpg)
12cR2 PDB New Features
✔ Subset Standby✔ Data Guard Broker PDB Migration or Failover✔ Cross-Platform Import of a Pluggable Database into a Multitenant Container Database✔ I/O Rate Limits for PDBs✔ Heat Map and Automatic Data Optimization Support for CDBs✔ PDB Character Set✔ PDB Refresh✔ Hints in CONTAINERS Query✔ Parallel PDB Creation Clause✔ PDB Archive Files (.pdb Files)✔ Default Tablespace Clause✔ Cloning a PDB✔ Near Zero Downtime PDB Relocation✔ Logical Standby Database to Support CDBs with PDBs with Different Character Sets✔ LogMiner to Support CDBs with PDBs with Different Character Sets✔ Support for PDBs with Different Character Sets, Time Zone File Versions, and Database Time
Zones in a CDB✔ Memory Resource Management✔ Per-Process PGA Limits✔ Performance Profiles and Mandatory PDB Profiles✔ CDB-Level PDB Lockdown
![Page 8: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/8.jpg)
12cR2 PDB New Features
✔ Application Root✔ Proxy PDB✔ Forwarding Connections to A New Address Based on Service✔ Service-Level ACLs for TCP Protocol✔ Flashback Pluggable Database✔ Upgrading a CDB With One or More PDBs in a Single Operation✔ Support for Thousands of Pluggable Databases for Each Multitenant Container Database✔ Pluggable Database Lockdown Profiles Enhancements✔ Pluggable Database Operating System Credentials✔ Oracle Enterprise Manager Database Express (EM Express) Resource Manager Support✔ EM Express: Simplifying Configuration for Multitenant Through Single Port Access✔ EM Express: Performance Hub Enhancements✔ Automatic Workload Repository (AWR) Support for a Pluggable Database (PDB)✔ Selective PDB Upgrades✔ AWR_PDB_AUTOFLUSH_ENABLED Initialization Parameter✔ ENABLE_AUTOMATIC_MAINTENANCE_PDB Initialization Parameter✔ AUTOTASK_MAX_ACTIVE_PDBS Initialization Parameter✔ Global and Shared Connection Pool for Oracle Cloud and Multitenant Oracle Databases✔ Prioritized Rebalancing✔ Oracle Database Vault Common Realms and Command Rules for Oracle Multitenant
![Page 9: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/9.jpg)
Option Multitenant
![Page 10: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/10.jpg)
Multitenant - EE
![Page 11: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/11.jpg)
Singletenant - SE2
![Page 12: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/12.jpg)
CDB, Root, PDBs, Containers
![Page 13: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/13.jpg)
Dicionário de Dados
![Page 14: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/14.jpg)
Verificação de informações
![Page 15: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/15.jpg)
Conectando a CDB / PDB
![Page 16: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/16.jpg)
Conectando a CDB / PDB
![Page 17: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/17.jpg)
Conectando a CDB / PDB
![Page 18: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/18.jpg)
Conectando a CDB / PDB
![Page 19: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/19.jpg)
Alteração de Parâmetros
![Page 20: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/20.jpg)
Alteração de Parâmetros
![Page 21: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/21.jpg)
TABLESPACEs
![Page 22: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/22.jpg)
Usuários e Privilégios
![Page 23: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/23.jpg)
Usuários e Privilégios
![Page 24: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/24.jpg)
Usuários e Privilégios
![Page 25: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/25.jpg)
Backup
CDB e PDBsRMAN> BACKUP DATABASE;RMAN> BACKUP DATAFILE 1;RMAN> BACKUP DATAFILE 1,3;
CDBRMAN> BACKUP DATABASE ROOT;RMAN> BACKUP TABLESPACE SYSTEM;RMAN> BACKUP TABLESPACE SYSTEM,SYSAUX;
PDBsRMAN> BACKUP PLUGGABLE DATABASE DEV1;RMAN> BACKUP PLUGGABLE DATABASE DEV1,DEV2;RMAN> BACKUP TABLESPACE DEV1:SYSTEM;
![Page 26: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/26.jpg)
Restore / Recover
CDB e PDBsRMAN> RESTORE DATABASE;RMAN> RECOVER DATABASE;RMAN> RESTORE DATAFILE 1;RMAN> RECOVER DATAFILE 1;
CDBRMAN> RESTORE DATABASE ROOT;RMAN> RECOVER DATABASE ROOT;RMAN> RESTORE TABLESPACE SYSTEM;RMAN> RECOVER TABLESPACE SYSTEM;
PDBsRMAN> RESTORE PLUGGABLE DATABASE DEV1;RMAN> RECOVER PLUGGABLE DATABASE DEV1;RMAN> RESTORE TABLESPACE DEV1:USERS;RMAN> RECOVER TABLESPACE DEV1:USERS;
![Page 27: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/27.jpg)
Restore / Recover
![Page 28: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/28.jpg)
28
1 - Bad connection management2 - Bad use of cursors and the shared pool3 - Bad SQL4 - Use of nonstandard initialization parameters5 - Getting database I/O wrong6 - Online redo log setup problems7 - Serialization of data blocks in the buffer cache due to lack of free lists, free list groups, transaction slots (INITRANS), or shortage of rollback segments.8 - Long full table scans9 - High amounts of recursive (SYS) SQL10 - Deployment and migration errors
Oracle Database Performance Tuning Guidehttp://docs.oracle.com/database/121/TGDBA/toc.htm 28
Tuning: Top Ten Mistakes
![Page 29: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/29.jpg)
29
● Performance de Sistemas Computacionais só pode ser medida em TEMPO.● Performance Tuning deve ser reativa.● Performance Tuning deve ter ROI.● Apenas os maiores gargalos devem ser solucionados.● O processo deve ser Diagnostics, e depois Tuning.● Alto consumo de CPU não é um problema.● O usuário não executa um SQL por prazer.● O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?).● Ferramentas Gráficas / Enterprise Manager / Wizards / Automação são bons auxiliares.● Bancos com bom desempenho devem ser observados.● Conheça outros RDBMSs: TI não é lugar para paixões.● Não acredite em nada (separar tabelas e índices?). Teste.● Se houvesse um parâmetro que sempre deixasse o Oracle mais rápido, sem nenhum efeito colateral, ele já viria habilitado.● Desenvolva um método de convencimento gerencial.● Por algo chamar-se Storage, não quer dizer que ele não tenha problemas.● KISS (Keep It Simple, Stupid): a probabilidade de falha cresce linearmente com o aumento de complexidade.● Saiba dizer “Não”.● Saiba dizer “Não sei”.
29
Minha abordagem
![Page 30: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/30.jpg)
3030
Tempo
![Page 31: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/31.jpg)
31
Tempo Computacional
31
R = S + W
OU
Response Time = Service Time + Wait Time
![Page 32: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/32.jpg)
3232
Instrumentação: Mainframe
![Page 33: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/33.jpg)
3333
Instrumentação: Solaris
![Page 34: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/34.jpg)
34
Oracle Wait Interface
34
![Page 35: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/35.jpg)
3535
Oracle Wait Interface
![Page 36: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/36.jpg)
36
● Versão 7.0.12: 104 Wait Events● Versão 8: 140 Wait Events● Versão 8i: 220 Wait Events● Versão 9i: 400 Waits Events● Versão 10gR1: >800 Wait Events● Versão 11gR2: >1100 Wait Events ● Versão 12cR1: >1650 Wait Events
36
Evolução da OWI
![Page 37: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/37.jpg)
3737
Enterprise Manager
![Page 38: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/38.jpg)
38
• Administrative• Application• Cluster• Commit• Concurrency• Configuration• Idle• Network• Other• Queueing• Scheduler• System I/O• User I/O
38
Wait Classes
![Page 39: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/39.jpg)
39
Sistema Operacional
39
![Page 40: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/40.jpg)
4040
top
![Page 41: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/41.jpg)
4141
vmstat
![Page 42: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/42.jpg)
42
Conceitos Básicos
42
![Page 43: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/43.jpg)
4343
Arquitetura Oracle
![Page 44: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/44.jpg)
4444
Configuração de Memória
![Page 45: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/45.jpg)
45
Automático – AMM (Automatic Memory Management) (>= 11g)memory_max_target = 16Gmemory_target = 16Gsga_target = 0pga_aggregate_target = 0pga_aggregate_limit = 2G
Automático – ASMM (Automatic Segment Memory Management) (>= 10g)memory_max_target = 0memory_target = 0sga_max_size = 15Gsga_target = 15Gpga_aggregate_target = 1Gpga_aggregate_limit = 2G
Semi-automático – ASMM (Automatic Segment Memory Management) (>= 10g)sga_max_size = 15Gsga_target = 15Gpga_aggregate_target = 1Gpga_aggregate_limit = 2Gdb_cache_size = 10G
45
Configuração de Memória
![Page 46: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/46.jpg)
46
Manual (>= 9i)sga_max_size = 15Gdb_cache_size = 10Gshared_pool_size = 2Glarge_pool_size = 128Mjava_pool_size = 128Mstreams_pool_size = 128M
46
Configuração de Memória
![Page 47: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/47.jpg)
47
db_block_size = 8192
db_2k_cache_size = 128Mdb_4k_cache_size = 128Mdb_8k_cache_size = 128Mdb_16k_cache_size = 128Mdb_32k_cache_size = 128M
db_keep_cache_size = 128M (< 10g: buffer_pool_keep)db_recycle_cache_size = 128M (<10g: buffer_pool_recycle)shared_pool_reserved_size = 128M
result_cache_mode = MANUALresult_cache_max_size = 10Mresult_cache_max_result = 5
db_file_multiblock_read_count = 128
log_buffer = 8388608
fast_start_mttr_target = 0
47
Configuração de Memória
![Page 48: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/48.jpg)
48
Compression
● 10g OLAP● 11g OLTP● 12c InMemory
![Page 49: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/49.jpg)
49
● Verifique os parâmetros elementares em seu banco de dados.● Altere o parâmetro memory_max_target para 0.● Altere o parâmetro memory_target para 0.● Altere o parâmetro sga_max_size para 800M.● Altere o parâmetro sga_target para 0.● Altere o parâmetro db_cache_size para 400M.● Altere o parâmetro shared_pool_size para 200M.● Altere o parâmetro pga_aggregate_target para 100M.
49
Lab 1.1: Configuração de Memória
![Page 50: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/50.jpg)
50
● SQL Statement● Session● Instance
50
Granularidades de Análise
![Page 51: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/51.jpg)
5151
Cenários de Análise● Há lentidão agora.● Tivemos lentidão ontem.
![Page 52: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/52.jpg)
52
● Dynamic Performance Views● Extended SQL Trace (Event 10046)● Statspack / AWR
52
Ferramentas de Análise
![Page 53: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/53.jpg)
53
Limitações da OWI
53
![Page 54: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/54.jpg)
54
● Não é um monitoramento End-to-End● Sem dados de consumo de CPU● Sem dados de consumo de Memória● Bugs● Imprecisões
54
Limitações: OWI
![Page 55: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/55.jpg)
55
● Sem histórico
55
Limitações: Views
![Page 56: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/56.jpg)
56
● Muitos dados● Altíssima granularidade● Desempenho● Correlação de informações● Sessões PARALLEL● Sessões SHARED SERVER● Waits só disponíveis em >=9iR1● Suporte oficial só em >10gR1
56
Limitações: Extended SQL Trace
![Page 57: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/57.jpg)
57
● Baixa granularidade● Apenas histórico
57
Limitações: Statspack / AWR
![Page 58: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/58.jpg)
58
→ V$SYSTEM_EVENT→ V$SESSION_EVENT
→ V$SESSION_WAIT
● Verifique as Dynamic Performance Views da OWI em seu banco de dados.● Quais suas colunas mais importantes?● Que Waits você tem em seu banco de dados?● Habitue-se a seu conteúdo.
58
Lab 2.1: Views
![Page 59: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/59.jpg)
59
Wait Events mais comuns
59
![Page 60: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/60.jpg)
60
● buffer busy● free buffer● read by oher session● control file single write / control file parallel write / control file sequential read● db file single write / db file parallel read / db file parallel write● db file scatteread read / db file sequential read● direct path read / direct path write● enqueue● free buffer● latch free / latch: library cache / latch: cache buffers chains● library cache pin / library cache lock● log buffer space● log file parallel write / log file single write / log file sequential read● log file switch (archiving needed)● log file switch (checkpoint incomplete) / log file switch completion● log file sync● SQL*Net message from client / SQL*Net message to client● SQL*Net more data from client / SQL*Net more data to client● SQL*Net break/reset from client / SQL*Net break/reset to client
60
Wait Events mais comuns
![Page 61: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/61.jpg)
61
Habilite o usuário SCOTT.SQL> ALTER USER SCOTT ACCOUNT UNLOCK IDENTIFIED BY TIGER;SQL> GRANT SELECT ANY DICTIONARY TO SCOTT;
Abra uma sessão com o SCOTT com SET TIMING ON.SQL> CONN SCOTT/TIGERSQL> SET TIMING ON
Em outra sessão, com o SYS, verifique (várias vezes seguidas) o conteúdo da V$SESSION_WAIT durante a execução dos comandos do SCOTT a seguir.
Com o usuário SCOTT, crie uma tabela de testes.SQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS; SQL> INSERT INTO T SELECT * FROM T; – – Execute 8 vezes.SQL> COMMIT;
61
Lab 3.1: Gravações
![Page 62: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/62.jpg)
62
Feche e abra a sessão com o SCOTT com SET TIMING ONSQL> CONN SCOTT/TIGERSQL> SET TIMING ON
Em outra sessão, com o SYS, verifique o conteúdo da V$SESSION_EVENT relacionado a sessão do SCOTT.SQL> SELECT SID FROM V$SESSION WHERE USERNAME = 'SCOTT';SQL> SELECT EVENT, TOTAL_WAITS, TOTAL_TIMEOUTS, AVERAGE_WAIT FROM V$SESSION_EVENT WHERE SID = 17 ORDER BY 4;
Com o usuário SCOTT, duplique a grande tabela.SQL> CREATE TABLE T2 AS SELECT * FROM T;
Na sessão do SYS, após a duplicação da tabela, verifique novamente o conteúdo da V$SESSION_EVENT relacionado a sessão do SCOTT
Remova a tabela T2, feche e abra a sessão com o SCOTT, e repita a operação. Durante a repetição da operação, verifique as mudanças do conteúdo da V$SESSION_EVENT relacionado a sessão do SCOTT.
62
Lab 3.2: Gravações
![Page 63: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/63.jpg)
63
Responda as seguintes perguntas: - Onde foi gasto mais tempo nesta sessão? - A que se referem os maiores Wait Events? - Qual dos maiores Wait Events podem ser reduzidos? - A eliminação de um Wait Event que pode ser reduzido, causará uma melhoria de quanto tempo? - Como reduzir este Wait Event?
Corrija a causa deste Wait Event.
Remova a tabela T2, feche e abra a sessão com o SCOTT, e repita a operação.
63
Lab 3.3: Gravações
![Page 64: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/64.jpg)
64
Extended SQL Trace
64
![Page 65: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/65.jpg)
65
● Em toda a instância● Em sua sessão● Em outra sessão
65
Extended SQL Trace: Ativação
![Page 66: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/66.jpg)
66
0 - Trace OFF 2 - Regular SQL Trace 4 - Nível 2, + Bind Variable 8 - Nível 2 + Wait Events 12 - Nível 2, + Bind Variable + Wait Events
Extended SQL Trace: Níveis
![Page 67: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/67.jpg)
67
Todas versões:SQL> ALTER SESSION SET SQL_TRACE=TRUE;SQL> ALTER SESSION SET SQL_TRACE=FALSE;
SQL> EXEC DBMS_SESSION.SET_SQL_TRACE(SQL_TRACE => TRUE);SQL> EXEC DBMS_SESSION.SET_SQL_TRACE(SQL_TRACE => FALSE);
SQL> EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(SID=>123, SERIAL#=>1234, SQL_TRACE=>TRUE);
SQL> EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(SID=>123, SERIAL#=>1234, SQL_TRACE=>FALSE);
SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
SQL> EXEC DBMS_SYSTEM.SET_EV(SI=>123, SE=>1234, EV=>10046, LE=>12, NM=>'');SQL> EXEC DBMS_SYSTEM.SET_EV(SI=>123, SE=>1234, EV=>10046, LE=>0, NM=>'');
Extended SQL Trace: Ativação
![Page 68: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/68.jpg)
68
Versões >= 8ISQL> SELECT P.SPID OS_PROCESS_ID
FROM V$SESSION S, V$PROCESS PWHERE S.PADDR = P.ADDR AND S.USERNAME = 'SCOTT';
SQL> ORADEBUG SETOSPID 12345;SQL> ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12;SQL> ORADEBUG TRACEFILE_NAME; SQL> ORADEBUG EVENT 10046 TRACE NAME CONTEXT OFF;
Extended SQL Trace: Ativação
![Page 69: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/69.jpg)
69
Todas versões: SQL> EXEC DBMS_SUPPORT.START_TRACE(WAITS=>TRUE, BINDS=>FALSE);SQL> EXEC DBMS_SUPPORT.STOP_TRACE;
SQL> EXEC DBMS_SUPPORT.START_TRACE_IN_SESSION(SID=>123, SERIAL=>1234, WAITS=>TRUE, BINDS=>TRUE);
SQL> EXEC DBMS_SUPPORT.STOP_TRACE_IN_SESSION (SID=>123, SERIAL=>1234);
Versões >= 10GSQL> EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE
(SESSION_ID =>1234, SERIAL_NUM=>1234, WAITS=>TRUE, BINDS=>FALSE);SQL> EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE (SESSION_ID=>1234, SERIAL_NUM=>1234);
SQL> EXEC DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE(CLIENT_ID=>'PORTILHO', WAITS=>TRUE, BINDS=>TRUE);
SQL> EXEC DBMS_MONITOR.CLIENT_ID_TRACE_DISABLE(CLIENT_ID=>'PORTILHO');
SQL> EXEC DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE(SERVICE_NAME=>'OLTP', MODULE_NAME=>'TESTE', ACTION_NAME=>'RUNNING',
WAITS=>TRUE, BINDS=>TRUE);SQL> EXEC DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE
(SERVICE_NAME=>'OLTP', MODULE_NAME=>'TESTE', ACTION_NAME=>'RUNNING');
SQL> ALTER SESSION SET EVENTS 'trace[rdbms.SQL_Optimizer.*][sql:sql_id]';
Extended SQL Trace: Ativação
![Page 70: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/70.jpg)
70
CREATE OR REPLACE TRIGGER SET_TRACE AFTER LOGON ON DATABASEBEGINIF USER IN ('SCOTT') THEN
EXECUTE IMMEDIATE'ALTER SESSION SET TRACEFILE_IDENTIFIER=''SESSAO_RASTREADA_PORTILHO''';
EXECUTE IMMEDIATE'ALTER SESSION SET TIMED_STATISTICS=TRUE';
EXECUTE IMMEDIATE'ALTER SESSION SET MAX_DUMP_FILE_SIZE=UNLIMITED';
EXECUTE IMMEDIATE'ALTER SESSION SET EVENTS ''10046 TRACE NAME CONTEXT FOREVER, LEVEL 12''';
END IF; END;/
Extended SQL Trace: Ativação
![Page 71: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/71.jpg)
71
SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
OU
SQL> SELECT P.SPID, P.TRACEFILEFROM V$SESSION S, V$PROCESS PWHERE S.PADDR = P.ADDR AND S.USERNAME = 'SCOTT';
SQL> oradebug setospid 9999;SQL> oradebug tracefile_name;SQL> oradebug unlimit;SQL> oradebug event 10046 trace name context forever, level 12;
Extended SQL Trace: Ativação
![Page 72: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/72.jpg)
72
Extended SQL Trace: tkprof
$ tkprofUsage: tkprof tracefile outputfile [explain= ] [table= ] [print= ] [insert= ] [sys= ] [sort= ] table=schema.tablename Use 'schema.tablename' with 'explain=' option. explain=user/password Connect to ORACLE and issue EXPLAIN PLAN. print=integer List only the first 'integer' SQL statements. aggregate=yes|no insert=filename List SQL statements and data inside INSERT statements. sys=no TKPROF does not list SQL statements run as user SYS. record=filename Record non-recursive statements found in the trace file. waits=yes|no Record summary for any wait events found in the trace file. sort=option Set of zero or more of the following sort options: prscnt number of times parse was called prscpu cpu time parsing prsela elapsed time parsing prsdsk number of disk reads during parse prsqry number of buffers for consistent read during parse prscu number of buffers for current read during parse prsmis number of misses in library cache during parse...
![Page 73: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/73.jpg)
73
Extended SQL Trace: tkprof
![Page 74: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/74.jpg)
74
Extended SQL Trace: SQL Developer
![Page 75: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/75.jpg)
75
Feche e abra a sessão com o SCOTT com SET TIMING ONSQL> EXIT$ sqlplus SCOTT/TIGERSQL> SET TIMING ON
Com o usuário SYS, habilite o Extended Trace para a sessão do SCOTT:SQL> SELECT P.SPID
FROM V$SESSION S, V$PROCESS PWHERE S.PADDR = P.ADDR AND S.USERNAME = 'SCOTT';
SQL> oradebug setospid 8708;SQL> oradebug tracefile_name;SQL> oradebug unlimit;SQL> oradebug event 10046 trace name context forever, level 12;
Em outro terminal, verifique o conteúdo do Trace.$ tail -f /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_8708.trc
75
Lab 4.1: Extended SQL Trace
![Page 76: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/76.jpg)
76
Com o usuário SCOTT, apague o conteúdo da grande tabela, altere o valor do parâmetro db_file_multiblock_read_count (apenas na sessão) e reinsira os dados.SQL> TRUNCATE TABLE T2;SQL> ALTER SESSION SET db_file_multiblock_read_count = 8;SQL> INSERT INTO T2 SELECT * FROM T;SQL> COMMIT;
Continue verificando o conteúdo do Trace durante a execução da operação.
Ao término da execução, verifique os valores de V$SESSION_EVENT da sessão do SCOTT. Guarde este resultado.
Execute o tkprof nos Trace gerado.$ tkprof /u01/app/oracle/diag/rdbms/test11gr2/TEST11GR2/trace/TEST11GR2_ora_8708.trc
Analise o relatório gerado pelo tkprof.Repita a operação, mas sem os REDO LOGs de 1G.Repita a operação, mas com db_file_multiblock_read_count de 50 e 1000.
76
Lab 4.2: Extended SQL Trace
![Page 77: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/77.jpg)
77
Lendas do Oracle
77
![Page 78: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/78.jpg)
78
Não utilizarás mais que 50% de tua RAM para a SGA.
[ricardo@Melquior ~]$ free total used free shared buffers cachedMem: 3719480 3262932 456548 797828 6308 1094712-/+ buffers/cache: 2161912 1557568Swap: 16777212 764576 16012636
[ricardo@Melquior ~]$ df -hFilesystem Size Used Avail Use% Mounted on/dev/sda1 443G 325G 96G 78% /tmpfs 1.8G 2.3M 1.8G 1% /dev/shm[ricardo@Melquior ~]$
RAM Total do Servidor - (quantidade máxima de conexões simultâneas + 40) x 2MB
- Memória do Sistema Operacional = (OLTP) 80% SGA e 20% PGA OU
= (OLAP) 80% PGA e 20% SGA
78
RAM x SGA
![Page 79: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/79.jpg)
7979
SWAP
Terás uma área de SWAP com o dobro de tua RAM.
![Page 80: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/80.jpg)
8080
Checkpoint
Eventos relacionados● control file single write● control file parallel write● control file sequential read● db file single write
Checkpoints:● Full Checkpoint● Thread Checkpoint● File Checkpoint● Object Checkpoint● Parallel Checkpoint ● Incremental Checkpoint● Checkpoint Log Switch
Teus DATAFILEs deverão ter no máximo 2GB / 10GB / xGB.
![Page 81: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/81.jpg)
8181
UNDO
Qual a transação mais longa que o sistema deve suportar?UNDO_RETENTIONCREATE UNDO TABLESPACE … RETENTION GUARANTEEAUTOEXTEND ON
Deverás executar COMMIT a cada N linhas.
![Page 82: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/82.jpg)
82
● Todo teu SELECT deverá utilizar um índice, para que ele seja rápido.● Utilizarás HINTs, pois tu és mais sábio que o Oracle.● Se coletar estatísticas em 100%, os planos de execução serão perfeitos.● Não coletarás estatísticas do dicionário de dados.● Deverás separar teus dados e índices.● Deverás separar teus dados em diversas TABLESPACEs.● Não habilitarás AUTOEXTEND ON.● Utilizarás RAID 5, pois é mais rápido para leituras.● Colocar os Redo Logs em SSD (ODA?).● Não permitirás mais que um SWITCH a cada 20 minutos.● Mas não terás grandes REDO LOGs.● Executarás REBUILD de índices regularmente.● Executarás MOVE de tabelas regularmente.● Se grande a tabela tornar-se, a particionarás.● Se quiseres mais velocidade, usarás RAC.● Quanto mais CPUs, mais rápido teu banco de dados será.● Se teus RATIOS estiverem altos, felizes estarão teus usuários.● Sempre que possível, aumentarás seu DB_CACHE_SIZE e SHARED_POOL.● Se os dados estão na memória, tudo será rápido.● O Exadata resolve todos os problemas de desempenho.● Desabilitarás o AWR / STATSPACK, pois ele causa lentidão.● Não utilizarás memória automática. Tu és mais sábio que o Oracle.● Se usar, deixarás a SGA_TARGET um pouco menor que a SGA_MAX_SIZE. ● AUTOMATIC SQL TUNING é um dos cavaleiros do apocalipse.
82
Lendas do Oracle
![Page 83: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/83.jpg)
83
Wait Events - Monitoração
83
![Page 84: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/84.jpg)
84
SELECT W.SID, W.EVENT, W.SECONDS_IN_WAIT, SQL.SQL_TEXTFROM GV$SESSION_WAIT W,GV$SESSION S,GV$PROCESS P,GV$SQLTEXT SQL
WHERE W.SID = S.SIDAND S.PADDR = P.ADDRAND SQL.ADDRESS = S.SQL_ADDRESSAND SQL.HASH_VALUE = S.SQL_HASH_VALUEAND W.WAIT_CLASS != 'Idle'AND W.INST_ID = S.INST_IDAND W.INST_ID = P.INST_IDAND W.INST_ID = SQL.INST_ID
ORDER BY W.SECONDS_IN_WAIT, W.SID, SQL.PIECE;
84
V$SESSION_WAIT
![Page 85: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/85.jpg)
85
SELECT EVENT, SUM(TIME_WAITED)FROM V$SESSION_EVENTWHERE WAIT_CLASS != 'Idle'AND SID IN
(SELECT SID FROM V$SESSION WHERE USERNAME IS NOT NULL) GROUP BY EVENTORDER BY 2;
SELECT EVENT, SUM(TIME_WAITED)FROM V$SESSION_EVENTWHERE WAIT_CLASS != 'Idle'AND SID IN
(SELECT SID FROM V$SESSION WHERE USERNAME IS NULL) GROUP BY EVENTORDER BY 2;
85
V$SESSION_EVENT
![Page 86: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/86.jpg)
86
CREATE TABLE PRE_SYSTEM_EVENT AS SELECT * FROM V$SYSTEM_EVENT;EXECUTE DBMS_LOCK.SLEEP(60);CREATE TABLE POS_SYSTEM_EVENT AS SELECT * FROM V$SYSTEM_EVENT;
SELECT A.EVENT, A.TIME_WAITED, B.TIME_WAITED, (B.TIME_WAITED-A.TIME_WAITED) DIFFFROM PRE_SYSTEM_EVENT A, POS_SYSTEM_EVENT BWHERE A.EVENT = B.EVENTAND A.TIME_WAITED IS NOT NULLAND ((B.TIME_WAITED-A.TIME_WAITED) > 0)AND A.WAIT_CLASS != 'Idle'ORDER BY DIFF;
DROP TABLE PRE_SYSTEM_EVENT;DROP TABLE POS_SYSTEM_EVENT;
86
V$SYSTEM_EVENT
![Page 87: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/87.jpg)
8787
oratop
$ /home/oracle/oratop.RDBMS_12.1_LINUX_X64 -h$ /home/oracle/oratop.RDBMS_12.1_LINUX_X64 / AS SYSDBA$ /home/oracle/oratop.RDBMS_12.1_LINUX_X64 -f -i2 / AS SYSDBA
![Page 88: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/88.jpg)
8888
Wait Events - Detalhes
![Page 89: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/89.jpg)
8989
Referência
![Page 90: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/90.jpg)
9090
Performance Tuning Guide
![Page 91: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/91.jpg)
9191
Performance Tuning Guide
![Page 92: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/92.jpg)
9292
MOS
![Page 93: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/93.jpg)
93
Oracle Database Reference (explicação simples, direta)http://docs.oracle.com/database/121/REFRN/waitevents003.htm#BGGIBDJI
Oracle Database Performance Tuning Guide (explicação melhor, orientada a causas / soluções)http://docs.oracle.com/database/121/TGDBA/pfgrf_instance_tune.htm#TGDBA94497
MOS / My Oracle Support / Metalink (várias notas sobre Wait Events específicos)https://support.oracle.com/
Livro "Oracle Wait Interface"http://www.amazon.com/Oracle-Wait-Interface-Performance-Diagnostics/dp/007222729X
93
OWI: Fontes de Consulta
![Page 94: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/94.jpg)
94
Explicação: O bloco solicitado está em uso, pois outra sessão está carregando o bloco para o DB_CACHE_SIZE, ou outra sessão está utilizando o bloco no DB_CACHE_SIZE em um modo incompatível.Causa: DB_CACHE_SIZE insuficiente, ou SQL ineficiente.Correção: Aumente o DB_CACHE_SIZE ou altere o SQL.
P1: Número do DATAFILE.P2: Número do bloco.P3: ID – a solicitação vem de diferentes locais da sessão.
94
buffer busy
![Page 95: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/95.jpg)
9595
buffer busy
![Page 96: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/96.jpg)
96
Explicação: O RDBMS aguarda blocos de DB_CACHE_SIZE livres.Causa: DB_CACHE_SIZE insuficiente.Correção: Aumente o DB_CACHE_SIZE.
P1: Número do DATAFILE.P2: Número do bloco.
96
free buffer
![Page 97: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/97.jpg)
97
Explicação: O bloco solicitado está em uso, pois outra sessão está carregando o bloco para o DB_CACHE_SIZE, ou outra sessão está utilizando o bloco no DB_CACHE_SIZE em um modo incompatível.Causa: DB_CACHE_SIZE insuficiente, ou SQL ineficiente.Correção: Aumente o DB_CACHE_SIZE ou altere o SQL.
P1: Número do DATAFILE.P2: Número do bloco.P3: Razão (<10g).P3: Wait Class (>=10g).
97
read by other session
![Page 98: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/98.jpg)
98
Explicação: Espera de I/O para gravar em CONTROLFILEs.Causa: Excesso de gravação nos CONTROLFILEs ou I/O ineficiente.Correção: Minimize as gravações nos CONTROLFILEs ou melhore o mecanismo de I/O.
P1: Quntidade de CONTROLFILEs.P2: Quantidade de blocos.P3: Quantidade de solicitações de I/O.
98
control file parallel write
![Page 99: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/99.jpg)
99
Explicação: Espera de I/O para gravar em CONTROLFILEs.Causa: Excesso de gravação nos CONTROLFILEs ou I/O ineficiente.Correção: Minimize as gravações nos CONTROLFILEs ou melhore o mecanismo de I/O.
P1: Número do CONTROLFILE.P2: Número do bloco.P3: Quantidade de blocos.
99
control file single write
![Page 100: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/100.jpg)
100
Explicação: Espera de I/O para ler os CONTROLFILEs.Causa: Excesso de leitura nos CONTROLFILEs ou I/O ineficiente.Correção: Minimize as leituras nos CONTROLFILEs ou melhore o mecanismo de I/O.
P1: Número do CONTROLFILE.P2: Número do bloco.P3: Quantidade de blocos.
100
control file sequential read
![Page 101: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/101.jpg)
101
Explicação: Gravações de dados nos DATAFILEs esperam pelo I/O.Causa: Excesso de gravações ou lentidão de I/O.Correção: Minimize as gravações ou melhore o mecanismo de I/O.
P1: Quantidade de requisições.P2: Interrupt.P3: Timeout.
101
db file parallel write
![Page 102: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/102.jpg)
102
Explicação: Uma gravação no HEADER do DATAFILE espera pelo I/O.Causa: Excesso de gravações no HEADER dos DATAFILEs ou lentidão de I/O.Correção: Minimize as gravações no HEADER dos DATAFILEs ou melhore o mecanismo de I/O.
P1: Quantidade de requisições.P2: Interrupt.P3: Timeout.
102
db file single write
![Page 103: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/103.jpg)
103
Explicação: Durante RECOVER ou durante PREFETCHING, leituras de DATAFILEs esperam pelo I/O.Causa: RECOVER muito longo, PREFETCHING excessivo, ou lentidão de I/O.Correção: Acelere o RECOVER, minimize o PREFETCHING, ou melhore o mecanismo de I/O.
P1: Quantidade de DATAFILEs.P2: Quantidade de blocos.P3: Quantidade de requisições.
103
db file parallel read
![Page 104: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/104.jpg)
104104
User I/O
![Page 105: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/105.jpg)
105
Em “db file scatteread read” ocorre “db file sequential read” quando: - O bloco já está no cache; - O bloco está no final do Extent; - Excede o limite do sistema operacional; - UNDO.
MBRC: scatteread / sequential
![Page 106: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/106.jpg)
106
● OPTIMIZER_MODE (FIRST_ROWS_n / ALL_ROWS)● < DB_FILE_MULTIBLOCK_READ_COUNT● RESULT_CACHE● INMEMORY
● OPTIMIZER_SECURE_VIEW_MERGING● QUERY_REWRITE_ENABLED● QUERY_REWRITE_INTEGRITY● STAR_TRANSFORMATION_ENABLED
● GATHER_SYSTEM_STATISTICS● GATHER_DATABASE_STATISTICS● OPTIMIZER_DYNAMIC_SAMPLING
● WORKAREA_SIZE_POLICY (AUTO / MANUAL)● AUTO: PGA_AGGREGATE_TARGET● MANUAL: BITMAP_MERGE_AREA_SIZE
HASH_AREA_SIZESORT_AREA_SIZESORT_AREA_RETAINED_SIZE
● > OPTIMIZER_INDEX_CACHING● < OPTIMIZER_INDEX_COST_ADJ● Histograms● Extended Statistics
Configuração do CBO - OLTP
![Page 107: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/107.jpg)
107
● OPTIMIZER_MODE (FIRST_ROWS_n / ALL_ROWS)● > DB_FILE_MULTIBLOCK_READ_COUNT● RESULT_CACHE● INMEMORY
● OPTIMIZER_SECURE_VIEW_MERGING● QUERY_REWRITE_ENABLED● QUERY_REWRITE_INTEGRITY● STAR_TRANSFORMATION_ENABLED
● GATHER_SYSTEM_STATISTICS● GATHER_DATABASE_STATISTICS● OPTIMIZER_DYNAMIC_SAMPLING
● WORKAREA_SIZE_POLICY (AUTO / MANUAL)● AUTO: PGA_AGGREGATE_TARGET● MANUAL: BITMAP_MERGE_AREA_SIZE
HASH_AREA_SIZESORT_AREA_SIZESORT_AREA_RETAINED_SIZE
● < OPTIMIZER_INDEX_CACHING● > OPTIMIZER_INDEX_COST_ADJ● Histograms● Extended Statistics
Configuração do CBO - OLAP
![Page 108: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/108.jpg)
108
Explicação: Durante FTS, leituras de DATAFILEs esperam pelo I/O.Causa: DB_CACHE_SIZE insuficiente, FTS desnecessário ou lentidão de I/OCorreção: Aumente o DB_CACHE_SIZE, elimine o FTS, ou melhore o mecanismo de I/O.
P1: Número do DATAFILE.P2: Bloco inicial.P3: Quantidade de blocos.
108
db file scattered read
![Page 109: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/109.jpg)
109
Explicação: Durante a leitura de um bloco, leituras de DATAFILEs esperam pelo mecanismo de I/O.Causa: DB_CACHE_SIZE insuficiente, leitura desnecessária ou lentidão de I/OCorreção: Aumente o DB_CACHE_SIZE, elimine a leitura desnecessária, ou melhore o mecanismo de I/O.
P1: Número do DATAFILE.P2: Bloco inicial.P3: Quantidade de blocos.
109
db file sequential read
![Page 110: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/110.jpg)
110
Explicação: Leitura / gravação entre DATAFILEs / TEMPFILEs e PGA.Causa: PGA insuficiente, ou lentidão de I/O.Correção: Aumente a PGA, ou melhore o mecanismo de I/O.
P1: Número do arquivo (DATAFILE ou TEMPFILE).P2: Bloco inicial.P3: Quantidade de blocos.
110
direct path read / direct path write
![Page 111: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/111.jpg)
111
Explicação: Mecanismo de fila ordenada do RDBMS.Causa: Diversas, dependendo do tipo de fila.Correção: Diversas, dependendo do tipo de fila.
P1: Tipo ou modo da enqueue.P2: ID1 (como na V$LOCK).P3: ID2 (como na V$LOCK).
Problemas mais comuns:● TX, Transaction (80%)● TM, DML Enqueue (10%)● HW, High-Water Lock (1%)● SQ, Sequence Number Enqueue (1%)● CF, Controlfile Transaction (0.1%)
111
enqueue
![Page 112: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/112.jpg)
112
Explicação: Mecanismo de fila desordenada do RDBMS.Causa: Diversas, dependendo do tipo de fila.Correção: Diversas, dependendo do tipo de fila.
P1: Endereço da Latch (como na V$LATCH).P2: Número da Latch (como na V$LATCH).P3: Quantidade de tentativas.
Problemas mais comuns:● shared pool (40%)● library cache (40%)● cache buffers lru chain (5%)● cache buffers chains (5%)● row cache objects (1%)
112
latch free
![Page 113: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/113.jpg)
113
Explicação: Uso incompatível do objeto entre duas sessões.Causa: Uso do objeto de forma incompatível entre duas sessões.Correção: Finalizar o uso do objeto por uma das sessões.
P1: Endereço do objeto.P2: Endereço do load lock.P3: Mode + Namespace.
SQL> SELECT /*+ ORDERED */ W1.SID WAITING_SESSION, H1.SID HOLDING_SESSION, W.KGLLKTYPE LOCK_OR_PIN, W.KGLLKHDL ADDRESS, DECODE(H.KGLLKMOD,0,’None’,1,’Null’,2,’Share’,3,’Exclusive’,'Unknown’) MODE_HELD, DECODE(W.KGLLKREQ,0,’None’,1,’Null’,2,’Share’,3,’Exclusive’,'Unknown’) MODE_REQUESTED FROM DBA_KGLLOCK W, DBA_KGLLOCK H, V$SESSION W1, V$SESSION H1 WHERE (((H.KGLLKMOD != 0) AND (H.KGLLKMOD != 1) AND ((H.KGLLKREQ = 0) OR (H.KGLLKREQ = 1))) AND (((W.KGLLKMOD = 0) OR (W.KGLLKMOD= 1)) AND ((W.KGLLKREQ != 0) AND (W.KGLLKREQ != 1)))) AND W.KGLLKTYPE = H.KGLLKTYPE AND W.KGLLKHDL = H.KGLLKHDL AND W.KGLLKUSE = W1.SADDR AND H.KGLLKUSE = H1.SADDR; SQL> SELECT TO_NAME FROM V$OBJECT_DEPENDENCY WHERE TO_ADDRESS = ‘0700000010F62750';
113
library cache pin / library cache lock
![Page 114: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/114.jpg)
114
Explicação: Mais espaço no LOG_BUFFER é necessário para gravações.Causa: LOG_BUFFER insuficiente, REDO LOGs insuficientes, ou I/O lento.Correção: Aumente o LOG_BUFFER, aumente a quantidade / tamanho de REDO LOGs, ou melhore o mecanismo de I/O.
P1: Quantidade de REDO LOGs.P2: Quantidade de blocos do sistema operacional.P3: Quantidade de requisições de I/O.
114
log buffer space
![Page 115: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/115.jpg)
115
Explicação: Durante gravação de REDO LOGs, o LGWR espera pelo I/O.Causa: Excesso de membros nos grupos de REDO LOGs ou lentidão de I/O.Correção: Reduza a quantidade de membros nos grupos de REDO LOGs ou melhore o mecanismo de I/O.
P1: Quantidade de REDO LOGs.P2: Quantidade de blocos de sistema operacional.P3: Quantidade de requisições de I/O.
115
log file parallel write
![Page 116: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/116.jpg)
116
Explicação: Durante gravação no HEADER de um REDO LOGs, o LGWR espera pelo I/O.Causa: Excesso de gravações no HEADER do REDO LOG ou lentidão de I/O.Correção: Reduza a quantidade de gravações no HEADER do REDO LOG ou melhore o mecanismo de I/O.
P1: Número do REDO LOG.P2: Número do bloco.P3: Quantidade de blocos.
116
log file single write
![Page 117: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/117.jpg)
117
Explicação: Durante leitura de REDO LOGs, o LGWR espera pelo I/O.Causa: Lentidão de I/O.Correção: Melhore o mecanismo de I/O.
P1: Número do REDO LOG.P2: Número do bloco.P3: Quantidade de blocos.
117
log file sequential read
![Page 118: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/118.jpg)
118
Explicação: Todos os grupos de REDO LOGs foram utilizados e ainda são necessários para um eventual RECOVER, pois o ARCn ainda não criou os ARCHIVED REDO LOGs e o DBWR ainda não gravou seu conteúdo nos DATAFILEs.Causa: REDO LOGs sub-dimensionados, configuração inadequada de destino de ARCHIVED REDO LOGs ou I/O ineficiente.Correção: Aumentar os REDO LOGs em quantidade e/ou tamanho, corrigir a configuração de destino do ARCn, ou melhorar o mecanismo de I/O.
P1: Não utilizado.P2: Não utilizado.P3: Não utilizado.
Variações:● log file switch (clearing log file)● log file switch (archiving needed)● log file switch (checkpoint incomplete)● log file switch (private strand flush incomplete)● log file switch completion
118
log file switch
![Page 119: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/119.jpg)
119
Explicação: Um CHECKPOINT foi executado, e precisa ser registrado no REDO LOG, e o LGRW está aguardando pelo mecanismo de I/O.Causa: COMMIT em quantidade excessiva, ou I/O ineficiente.Correção: Reduzir a quantidade de COMMITs ou otimizar o mecanismo de I/O.
P1: Número do Log Buffer.P2: Não utilizado.P3: Não utilizado.
119
log file sync
![Page 120: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/120.jpg)
120
Explicação: Espera durante comunicação via rede com o protocolo SQL*Net.Causa: Sessão inativa, latência de rede ou limitação do cliente.Correção: Eliminar a sessão inativa, minimizar a latência na rede ou minimizar a limitação do cliente.
P1: Driver de rede.P2: Quantidade de bytes.P3: Não utilizado.
Variações● SQL*Net message from client● SQL*Net message to client● SQL*Net more data from client● SQL*Net more data to client● SQL*Net break/reset to client● SQL*Net message from dblink● SQL*Net message to dblink● SQL*Net more data from dblink● SQL*Net more data to dblink● SQL*Net break/reset to dblink
120
SQL*Net message to / from client
![Page 121: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/121.jpg)
121
Feche e abra a sessão com o SCOTT com SET TIMING ONSQL> CONN SCOTT/TIGERSQL> SET TIMING ON
Com o usuário SCOTT, apague o conteúdo da grande tabela, e reinsira os dados.SQL> TRUNCATE TABLE T2;SQL> INSERT INTO T2 SELECT * FROM T;SQL> COMMIT;
Ao término da execução, verifique os valores de V$SESSION_EVENT da sessão do SCOTT. Guarde o resultado.
Altere o valor do parâmetro log_buffer para 512k, repita a operação, e compare.Altere o valor do parâmetro log_buffer para 10m, repita a operação, e compare.Altere o valor do parâmetro log_buffer para 100m, repita a operação, e compare.Mantenha log_buffer com a configuração mais otimizada.Altere o parâmetro FAST_START_MTTR_TARGET para 1, repita a operação, e compare.
Lab 5.1: LGWR x DBWR
![Page 122: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/122.jpg)
122
Parallel SQL
122
![Page 123: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/123.jpg)
123
Permite Query, DML e DDL.
Um objeto pode ter Parallel permanente, independente do SQL:SQL> ALTER TABLE SCOTT.T PARALLEL 4;
O Parallel SQL pode ser utilizado diretamente no SQL:SQL> SELECT /*+ PARALLEL(T2 4) */ COUNT(*) FROM T2;SQL> SELECT /*+ PARALLEL(T2 4,2) */ COUNT(*) FROM T2;
123
Parallel SQL
![Page 124: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/124.jpg)
124
Parâmetros:PARALLEL_MAX_SERVERS = De 0 a 3600.PARALLEL_MIN_SERVERS = Número entre 0 e PARALLEL_MAX_SERVERS.PARALLEL_MIN_PERCENT = De 0 a 100.
PARALLEL_DEGREE_POLICY = MANUAL, LIMITED ou AUTO.PARALLEL_MIN_TIME_THRESHOLD = AUTO | Segundos. PARALLEL_ADAPTIVE_MULTI_USER = true ou false.PARALLEL_DEGREE_LIMIT = CPU, IO ou Número.PARALLEL_SERVERS_TARGET = Número entre 0 e PARALLEL_MAX_SERVERS.PARALLEL_THREADS_PER_CPU = Qualquer número.
PARALLEL_EXECUTION_MESSAGE_SIZE = De 2148 a 32768
PARALLEL_FORCE_LOCAL = true ou false.PARALLEL_INSTANCE_GROUP = Oracle RAC service_name ou group_name.
PARALLEL_AUTOMATIC_TUNING: Deprecated.PARALLEL_IO_CAP_ENABLED = Deprecated.
124
Parallel SQL
![Page 125: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/125.jpg)
125
Abra a sessão com o SCOTT com SET TIMING ON.Em seguida, faça um SELECT da tabela toda.$ sqlplus SCOTT/TIGERSQL> SET TIMING ONSQL> SELECT COUNT(*) FROM T;
Ao término da execução, verifique os valores de V$SESSION_EVENT da sessão do SCOTT. Guarde o resultado.
Repita a operação com PARALLEL, e compare.SQL> SELECT /*+ PARALLEL(T 4) */ COUNT(*) FROM T;SQL> SELECT /*+ PARALLEL(T 20) */ COUNT(*) FROM T;
125
Lab 6.1: Design de Aplicação
![Page 126: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/126.jpg)
126126
Paralelismo
SQL> SELECT SID, SERIAL#, QCSID, QCSERIAL# FROM V$PX_SESSION;
SID SERIAL# QCSID QCSERIAL#---------- ---------- ---------- ---------- 202 5249 12 387 20 3587 12 387 75 4043 12 387 141 233 12 387 204 751 12 387 16 229 12 387 73 3279 12 387 137 403 12 387 203 1137 12 387 18 103 12 387 79 5 12 387 134 3431 12 387 206 5 12 387 19 5 12 387 76 31 12 387 140 5 12 387 12 387 12
![Page 127: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/127.jpg)
127127
Lab 6.2: Design de Aplicação
Crie esta tabela com o usuário SCOTT:SQL> CREATE TABLE T3 (NUMERO NUMBER);
Observe o conteúdo dos seguintes scripts Perl, os execute, e compare:$ time perl /home/oracle/CommitBAD_BindsBAD.pl$ time perl /home/oracle/CommitBAD_BindsGOOD.pl$ time perl /home/oracle/CommitGOOD_BindsBAD.pl$ time perl /home/oracle/CommitGOOD_BindsGOOD.pl
![Page 128: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/128.jpg)
128128
Lab 6.3: Design de Aplicação
1a Sessão:SQL> CREATE BITMAP INDEX IDX_BITMAP_T3 ON T3(NUMERO);
SQL> INSERT INTO T3 VALUES (1);
SQL> COMMIT;
SQL> INSERT INTO T3 VALUES (1);
SQL> COMMIT;
SQL> INSERT INTO T3 VALUES (1);
SQL> INSERT INTO T3 VALUES (10);
2a Sessão:
SQL> INSERT INTO T3 VALUES (10);
SQL> COMMIT;
SQL> INSERT INTO T3 VALUES (1);
COMMIT;
SQL> INSERT INTO T3 VALUES (10);
SQL> INSERT INTO T3 VALUES (1);
![Page 129: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/129.jpg)
129129
BITMAP x BTREE
SQL> SELECT COUNT(*) FROM T; - - Sem índice.COUNT(1)———-10936000
SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T; - - Sem índice.COUNT(DISTINCT(OWNER))———————-28Decorrido: 00:00:26.75
SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T; - - Com índice BTREE.COUNT(DISTINCT(OWNER))———————-28Decorrido: 00:00:05.29
SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T; - - Com índice BITMAP.COUNT(DISTINCT(OWNER))———————-28Decorrido: 00:00:01.84
![Page 130: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/130.jpg)
130130
BITMAP x BTREE
SQL> SELECT COUNT(*) FROM T;COUNT(1)———-10936000
SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T;COUNT(DISTINCT(OWNER))———————-28
SQL> SELECT COUNT(DISTINCT(OBJECT_NAME)) FROM T; -- Com índice BTREECOUNT(DISTINCT(OBJECT_NAME))—————————-40998Decorrido: 00:00:08.95
SQL> SELECT COUNT(DISTINCT(OBJECT_NAME)) FROM T; – Com índice BITMAPCOUNT(DISTINCT(OBJECT_NAME))—————————-40998Decorrido: 00:00:03.15
![Page 131: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/131.jpg)
131131
Lab 6.4: Design de Aplicação
Abra uma sessão com o usuário SCOTT com SET TIMING ON:
Crie um índice BTREE na coluna OWNER da tabela T:SQL> CREATE INDEX IDX_T ON T(OWNER);
Execute este SQL:SQL> SELECT COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';
Com o usuário SYS, verifique o conteúdo da V$SESSION_EVENT da sessão do SCOTT. Guarde o resultado.
Feche e abra a sessão com o SCOTT com SET TIMING ON
Execute este SQL:SQL> SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';
![Page 132: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/132.jpg)
132
Estatísticas
132
![Page 133: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/133.jpg)
133
Optimizer StatisticsTable statistics
Number of rowsNumber of blocksAverage row length
Column statisticsNumber of distinct values (NDV) in columnNumber of nulls in columnData distribution (histogram)Extended statistics
Index statisticsNumber of leaf blocksAverage data blocks per KeyLevelsIndex clustering factor
System StatisticsI/O performance and utilizationCPU performance and utilization
Estatísticas e SQL Engine
![Page 134: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/134.jpg)
134
Estatísticas - TabelaDBA_TABLES / ALL_TABLES / USER_TABLESSELECT TABLE_NAME, NUM_ROWS, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, CHAIN_CNT, AVG_ROW_LEN, SAMPLE_SIZE, LAST_ANALYZED FROM USER_TABLES ORDER BY 1;
![Page 135: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/135.jpg)
135
Estatísticas - Índices
DBA_INDEXES / ALL_INDEXES / USER_INDEXESSELECT TABLE_NAME, INDEX_NAME, NUM_ROWS, BLEVEL, LEAF_BLOCKS, DISTINCT_KEYS, CLUSTERING_FACTOR, AVG_LEAF_BLOCKS_PER_KEY, AVG_DATA_BLOCKS_PER_KEY, SAMPLE_SIZE, LAST_ANALYZED FROM USER_INDEXES ORDER BY 1,2;
![Page 136: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/136.jpg)
136
Estatísticas - Colunas
DBA_TAB_COLUMNS / ALL_TAB_COLUMNS / USER_TAB_COLUMNSSELECT TABLE_NAME, COLUMN_NAME, NUM_DISTINCT, NUM_NULLS, DENSITY, LOW_VALUE, HIGH_VALUE, DATA_LENGTH, AVG_COL_LEN, SAMPLE_SIZE, LAST_ANALYZED FROM USER_TAB_COLUMNS ORDER BY 1,2;
![Page 137: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/137.jpg)
137
OPTIMIZER_DYNAMIC_SAMPLING
![Page 138: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/138.jpg)
138
OPTIMIZER_DYNAMIC_SAMPLING
![Page 139: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/139.jpg)
139
Coleta de Estatísticas - ANALYZE
ANALYZE TABLE emp VALIDATE STRUCTURE;ANALYZE TABLE emp VALIDATE STRUCTURE CASCADE;ANALYZE TABLE emp VALIDATE STRUCTURE CASCADE FAST;ANALYZE TABLE emp VALIDATE STRUCTURE CASCADE ONLINE;
UTLCHAIN.SQL / UTLCHN1.SQLANALYZE TABLE emp LIST CHAINED ROWS INTO CHAINED_ROWS;
![Page 140: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/140.jpg)
140
Automatic Optimizer Statistics CollectionSQL> SELECT CLIENT_NAME, STATUS FROM DBA_AUTOTASK_CLIENT;
SQL> BEGIN DBMS_AUTO_TASK_ADMIN.DISABLE ( CLIENT_NAME => 'AUTO OPTIMIZER STATS COLLECTION' ,OPERATION => NULL ,WINDOW_NAME => NULL );END;/
SQL> BEGIN DBMS_AUTO_TASK_ADMIN.ENABLE ( CLIENT_NAME => 'AUTO OPTIMIZER STATS COLLECTION' ,OPERATION => NULL ,WINDOW_NAME => NULL );END;/
Estatísticas: Coleta Automática
![Page 141: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/141.jpg)
141
Procedures para coletaDBMS_STATS.GATHER_DATABASE_STATSDBMS_STATS.GATHER_SCHEMA_STATSDBMS_STATS.GATHER_TABLE_STATSDBMS_STATS.GATHER_INDEX_STATS
141
Estatísticas: Coleta Manual
![Page 142: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/142.jpg)
142
ESTIMATE_PERCENT (Percentual ou DBMS_STATS.AUTO_SAMPLE_SIZE)EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10);EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE);
DEGREE (Quantidade ou DBMS_STATS.DEFAULT_DEGREE)EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2);EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>DBMS_STATS.DEFAULT_DEGREE);
CASCADE (TRUE, FALSE, ou AUTO_CASCADE)EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>TRUE);EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>AUTO_CASCADE);
142
Estatísticas: Opções de Coleta
![Page 143: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/143.jpg)
143
OPTIONS (GATHER, GATHER_STALE, GATHER_EMPTY, GATHER_AUTO)EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>TRUE, OPTIONS=>'GATHER_STALE');EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>AUTO_CASCADEOPTIONS=>'GATHER_AUTO);
GRANULARITY (ALL, AUTO, DEFAULT, GLOBAL, GLOBAL AND PARTITION, PARTITION, SUBPARTITION)EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>AUTO_CASCADEOPTIONS=>'GATHER_AUTO, GRANULARITY=ALL);
EXEC DBMS_STATS.GATHER_DATABASE_STATS(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>AUTO_CASCADEOPTIONS=>'GATHER_AUTO, GRANULARITY=AUTO);
143
Estatísticas: Opções de Coleta
![Page 144: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/144.jpg)
144
NO_INVALIDATE (TRUE, FALSE, ou DBMS_STATS.AUTO_INVALIDATE)EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>AUTO_CASCADEOPTIONS=>'GATHER_AUTO, GRANULARITY=AUTO, NO_INVALIDATE=TRUE);
EXEC DBMS_STATS.GATHER_DATABASE_STATS(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>AUTO_CASCADEOPTIONS=>'GATHER_AUTO, GRANULARITY=AUTO,NO_INVALIDATE='DBMS_STATS.AUTO_INVALIDATE');
144
Estatísticas: Opções de Coleta
![Page 145: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/145.jpg)
145
Estatísticas - HistogramasDBA_TAB_COLUMNS / ALL_TAB_COLUMNS / USER_TAB_COLUMNSDBA_TAB_HISTOGRAMS / ALL_TAB_HISTOGRAMS / USER_TAB_HISTOGRAMSSELECT H.TABLE_NAME, H.COLUMN_NAME, C.HISTOGRAM, H.ENDPOINT_NUMBER, H.ENDPOINT_ACTUAL_VALUE, H.ENDPOINT_REPEAT_COUNT FROM USER_TAB_HISTOGRAMS H, USER_TAB_COLUMNS C WHERE H.TABLE_NAME = C.TABLE_NAME AND H.COLUMN_NAME = C.COLUMN_NAME AND HISTOGRAM <> 'NONE' ORDER BY 1,2,4;
![Page 146: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/146.jpg)
146
- Buckets: máximo de 254 / 127 (2048 no 12c);- Frequency Histograms;- Height-Balanced Histograms;- Top Frequency Histograms (12c);- Hybrid Histograms (12c).
Problemas: - Tabelas que não precisam de Histogramas; - Custo de coleta; - Sensibilidade a coleta por SAMPLE; - Sensibilidade a momento da coleta (Novos pedidos às 22:00?); - Bind Variables (pré ACS); - Frequency: Se um valor não está em um Bucket, será considerada metade da cardinalidade do valor menos popular; - Height-Balanced: Se um valor não é popular (só está em 1 Bucket), será considerada a cardinalidade = número de linhas não populares / número de valor não populares (11gR2).
http://docs.oracle.com/database/121/TGSQL/tgsql_histo.htm
Histogramas
![Page 147: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/147.jpg)
147
Frequency Histograms
Utilizados se: - Se o NDV é menor ou igual que a quantidade de Buckets indicados na coleta; - É utilizado AUTO_SAMPLE_SIZE na execução da coleta.
![Page 148: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/148.jpg)
148
Height Balanced Histograms
Utilizados se: - Se o número de Buckets indicados na coleta é menor que o NDV.
![Page 149: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/149.jpg)
149
Top Frequency Histograms (12c)
Utilizados se: - Se o NDV é maior que a quantidade de Buckets indicados na coleta; - É utilizado AUTO_SAMPLE_SIZE na execução da coleta; - Se o percentual de linhas ocupadas pelos Top Values é igual ou maior que p, sendo que p = (1-(1/Buckets))*100.
![Page 150: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/150.jpg)
150
Hybrid Histograms (12c)
Utilizados se: - Se o número de Buckets indicados na coleta é menor que o NDV; - É utilizado AUTO_SAMPLE_SIZE na execução da coleta; - Se os critétios para Top Frequency Histograms não se aplicam.
![Page 151: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/151.jpg)
151
METHOD_OPTFOR ALL COLUMNS SIZE 100FOR ALL COLUMNS SIZE AUTOFOR ALL COLUMNS SIZE REPEATFOR ALL COLUMNS SIZE SKEWONLYFOR ALL INDEXED COLUMNS SIZE 100FOR ALL INDEXED COLUMNS SIZE AUTOFOR ALL INDEXED COLUMNS SIZE REPEATFOR ALL INDEXED COLUMNS SIZE SKEWONLYFOR COLUMNS C1 SIZE 100FOR COLUMNS C1 SIZE AUTOFOR COLUMNS C1 SIZE REPEAT
EXEC DBMS_STATS.GATHER_DATABASE_STATS(ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,METHOD_OPT=>'FOR ALL INDEXED COLUMNS SIZE AUTO');
151
Estatísticas: Opções de Coleta
![Page 152: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/152.jpg)
152
Coleta geralEXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,DEGREE=>2,CASCADE=>AUTO_CASCADEOPTIONS=>'GATHER_AUTO,GRANULARITY=>AUTO,NO_INVALIDATE=>'DBMS_STATS.AUTO_INVALIDATE');
Coleta por exceçãoEXEC DBMS_STATS.UNLOCK_TABLE_STATS('SCOTT','EMP');
EXEC DBMS_STATS.GATHER_TABLE_STATS ('SCOTT', 'EMP', ESTIMATE_PERCENT=>100, DEGREE=>1, CASCADE=>TRUE, OPTIONS=>'GATHER', GRANULARITY=>'ALL',NO_INVALIDATE=>TRUE,METHOD_OPT=>'FOR ALL INDEXED COLUMNS SIZE AUTO');
EXEC DBMS_STATS.LOCK_TABLE_STATS('SCOTT','EMP');
152
Estatísticas: Opções de Coleta
![Page 153: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/153.jpg)
153
Fixed Objects Statistics (V$SQL, V$SESSION, etc.)SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
Dictionary Statistics (DBA_SEGMENTS, DBA_TABLES, etc.);SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
Outras Estatísticas
![Page 154: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/154.jpg)
154
ConsultaSQL> SELECT PNAME, PVAL1 FROM SYS.AUX_STATS$;
RemoçãoSQL> EXEC DBMS_STATS.DELETE_SYSTEM_STATS;
Coleta NOWORKLOADSQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS;
Coleta WORKLOADSQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('START');SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('STOP');
System Statistics
![Page 155: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/155.jpg)
155
Extended Statistics – Column Groups
![Page 156: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/156.jpg)
156
SQL> CONN SH/SHSQL> SELECT DBMS_STATS.CREATE_EXTENDED_STATS(USER, 'CUSTOMERS')FROM DUAL;
SQL> BEGINDBMS_STATS.GATHER_TABLE_STATS( 'SH','CUSTOMERS',METHOD_OPT=>'FOR ALL COLUMNS SIZE SKEWONLY ' || 'FOR COLUMNS SIZE
SKEWONLY (CUST_STATE_PROVINCE,COUNTRY_ID)');END;/
SQL> SELECT SYS.DBMS_STATS.SHOW_EXTENDED_STATS_NAME('SH','CUSTOMERS', '(CUST_STATE_PROVINCE,COUNTRY_ID)') COL_GROUP_NAME FROM DUAL;
SQL> SELECT EXTENSION_NAME, EXTENSION FROM USER_STAT_EXTENSIONS WHERE TABLE_NAME='CUSTOMERS';
156
Extended Statistics – Column Groups
![Page 157: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/157.jpg)
157
Extended Statistics – Expression
![Page 158: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/158.jpg)
158
SQL> CONN SH/SHSQL> SELECT DBMS_STATS.CREATE_EXTENDED_STATS(USER, 'CUSTOMERS')FROM DUAL;
SQL> BEGIN DBMS_STATS.GATHER_TABLE_STATS('SH','CUSTOMERS'
,METHOD_OPT => 'FOR ALL COLUMNS SIZE SKEWONLY FOR COLUMNS (LOWER(CUST_STATE_PROVINCE)) SIZE SKEWONLY');END;/
158
Extended Statistics – Expression
![Page 159: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/159.jpg)
159
Estatísticas Pendentes
![Page 160: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/160.jpg)
160
Estatísticas PendentesSQL> CONN SH/SHSQL> EXEC DBMS_STATS.SET_TABLE_PREFS
('SH','CUSTOMERS','PUBLISH','FALSE');SQL> SELECT * FROM USER_TAB_PENDING_STATS;SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SH','CUSTOMERS');SQL> SELECT * FROM USER_TAB_PENDING_STATS;SQL> EXEC DBMS_STATS.PUBLISH_PENDING_STATS('SH','CUSTOMERS');SQL> SELECT * FROM USER_TAB_PENDING_STATS;
SQL> EXEC DBMS_STATS.SET_TABLE_PREFS ('SH','SALES','PUBLISH','FALSE');SQL> SELECT * FROM USER_TAB_PENDING_STATS;SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SH','SALES');SQL> SELECT * FROM USER_TAB_PENDING_STATS;SQL> EXEC DBMS_STATS.DELETE_PENDING_STATS('SH','SALES');SQL> SELECT * FROM USER_TAB_PENDING_STATS;
![Page 161: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/161.jpg)
161
Restore de Estatísticas
![Page 162: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/162.jpg)
162
Restore de EstatísticasSQL> CONN OE/OESQL> COL TABLE_NAME FORMAT A10SQL> SELECT
TABLE_NAME, TO_CHAR(STATS_UPDATE_TIME,'YYYY-MM-DD:HH24:MI:SS') AS STATS_MOD_TIME
FROM DBA_TAB_STATS_HISTORY WHERE TABLE_NAME='ORDERS'AND OWNER='OE'ORDER BY STATS_UPDATE_TIME DESC;
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('OE', 'ORDERS');
SQL> EXEC DBMS_STATS.RESTORE_TABLE_STATS( 'OE','ORDERS', TO_TIMESTAMP('2015-01-28:15:00:00','YYYY-MM-DD:HH24:MI:SS') );
![Page 163: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/163.jpg)
163
Transporte de Estatísticas
![Page 164: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/164.jpg)
164
Transporte de EstatísticasOrigemEXEC DBMS_STATS.CREATE_STAT_TABLE (ownname => 'HR', stattab => TESTE_STATS'));
EXEC DBMS_STATS.GATHER_SCHEMA_STATS ('HR');BEGIN DBMS_STATS.EXPORT_SCHEMA_STATS (ownname => 'HR', stattab => 'TESTE_STATS'
$ expdp HR/HR DIRECTORY=dump_directory DUMPFILE=TESTE_STATS.dmp TABLES=TESTE_STATS
Destino:$ impdp PORTILHO DIRECTORY=dump_directory DUMPFILE=TESTE_STATS.dmp TABLES=TESTE_STATS
SQL> EXEC DBMS_STATS.IMPORT_SCHEMA_STATS(ownname => 'HR', stattab => 'TESTE_STATS');
![Page 165: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/165.jpg)
165
DBMS_SQLTUNE
165
![Page 166: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/166.jpg)
166
DBMS_SQLTUNE
![Page 167: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/167.jpg)
167
DBMS_SQLTUNE
![Page 168: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/168.jpg)
168168
Lab 7.1: DBMS_SQLTUNE
Escolha um dos SQLs mais lentos na V$SQL e o analise com DBMS_SQLTUNE.
DECLARE RET_VAL VARCHAR2(4000);BEGIN
RET_VAL := DBMS_SQLTUNE.CREATE_TUNING_TASK(SQL_ID => '12345678910', SCOPE => DBMS_SQLTUNE.SCOPE_COMPREHENSIVE, TIME_LIMIT => 60, TASK_NAME => 'Portilho Tuning Task', DESCRIPTION => 'Portilho Tuning Task');END;/
BEGIN DBMS_SQLTUNE.EXECUTE_TUNING_TASK('Portilho Tuning Task'); END;/
SET LONG 9000eSELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('Portilho Tuning Task') RECOMMENTATION FROM DUAL;SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK('Portilho Tuning Task') RECOMMENTATION FROM DUAL;
BEGIN DBMS_SQLTUNE.DROP_TUNING_TASK('Portilho Tuning Task'); END;/
![Page 169: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/169.jpg)
169
Fragmentação
169
![Page 170: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/170.jpg)
170
● Blocos logicamente contíguos espalhados fisicamente.● Espaço livre na TABLESPACE / DATAFILEs.● Espaço livre da TABELA.● Espaço livre no ÍNDICE.● Row Chaining.● Migrated Rows.● EXTENTs.
170
Fragmentação
![Page 171: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/171.jpg)
171171
Fragmentação: SHRINK
● ALTER TABLESPACE ... COALESCE● ALTER TABLE ... ENABLE ROW MOVEMENT● ALTER TABLE ... SHRINK SPACE COMPACT● ALTER TABLE ... SHRINK SPACE● ALTER TABLE ... MOVE
![Page 172: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/172.jpg)
172172
Fragmentação: Row Chaining
What’s the Difference between Row Migration and Row Chaining?https://antognini.ch/2016/10/whats-the-difference-between-row-migration-and-row-chaining/
![Page 173: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/173.jpg)
173173
Fragmentação: Row Migration
![Page 174: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/174.jpg)
174
$ sqlplus SCOTT/TIGERSQL> CREATE TABLE T1 AS SELECT * FROM ALL_OBJECTS;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> COMMIT;SQL> SELECT COUNT(*) FROM T1;SQL> CREATE INDEX T1_IDX1 ON T1(OBJECT_TYPE);
SQL> SELECT LF_ROWS, DEL_LF_ROWS FROM INDEX_STATS WHERE NAME = 'T1_IDX1';SQL> ANALYZE INDEX T1_IDX1 VALIDATE STRUCTURE;SQL> SELECT LF_ROWS, DEL_LF_ROWS FROM INDEX_STATS WHERE NAME = 'T1_IDX1';SQL> DELETE FROM T1 WHERE OBJECT_TYPE = 'SYNONYM';SQL> COMMIT;SQL> SELECT LF_ROWS, DEL_LF_ROWS FROM INDEX_STATS WHERE NAME = 'T1_IDX1';SQL> ANALYZE INDEX T1_IDX1 VALIDATE STRUCTURE;SQL> SELECT LF_ROWS, DEL_LF_ROWS FROM INDEX_STATS WHERE NAME = 'T1_IDX1';SQL> SELECT NAME FROM INDEX_STATS WHERE ((DEL_LF_ROWS/LF_ROWS)*100) > 50;
SQL> SET AUTOTRACE ON STATISTICSSQL> SELECT COUNT(OBJECT_TYPE) FROM T1;SQL> ALTER INDEX T1_IDX1 REBUILD;SQL> SELECT COUNT(OBJECT_TYPE) FROM T1;
174
Fragmentação Índices - DELETEs
![Page 175: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/175.jpg)
175
$ sqlplus SCOTT/TIGERSQL> SET AUTOTRACE OFFSQL> @IndexesToRebuild-UPDATEs.sqlSQL> UPDATE T1 SET OBJECT_TYPE = 'NO';SQL> COMMIT;SQL> @IndexesToRebuild-UPDATEs.sqlSQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT', 'T1');SQL> @IndexesToRebuild-UPDATEs.sqlSQL> ALTER INDEX T1_IDX1 REBUILD;SQL> @IndexesToRebuild-UPDATEs.sql
175
Fragmentação Índices - UPDATEs
![Page 176: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/176.jpg)
176176
Lab 8.1: DBMS_ADVANCED_REWRITE
Abra uma sessão com o usuário SCOTT com SET TIMING ON:
Execute este SQL e anote seu tempo de execução:SQL> SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';
Execute este SQL e anote seu tempo de execução:SQL> SELECT COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';
Com o usuário SYS, dê as permissões necessárias para que o usuário SCOTT utilize o DBMS_ADVANCED_REWRITE:$ sqlplus / AS SYSDBASQL> GRANT EXECUTE ON DBMS_ADVANCED_REWRITE TO SCOTT;SQL> GRANT CREATE MATERIALIZED VIEW TO SCOTT;
![Page 177: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/177.jpg)
177177
Lab 8.2: DBMS_ADVANCED_REWRITE
Na sessão do usuário SCOTT, execute o DBMS_ADVANCE_REWRITE:BEGIN SYS.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE ( NAME => 'PORTILHO_REWRITE', SOURCE_STMT => 'SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = ''T''', DESTINATION_STMT => 'SELECT COUNT(OBJECT_NAME) FROM T T_ALIAS WHERE OBJECT_NAME = ''T''', VALIDATE => FALSE, REWRITE_MODE => 'TEXT_MATCH');END;/
Execute novamente este SELECT e verifique seu tempo de execução:SQL> SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';
Remova o REWRITE, execute novamente o SELECT e verifique seu tempo de execução:SQL> EXEC SYS.DBMS_ADVANCED_REWRITE.DROP_REWRITE_EQUIVALENCE (NAME => 'PORTILHO_REWRITE');SQL> SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';
![Page 178: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/178.jpg)
178
Resource Plan
178
![Page 179: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/179.jpg)
179
● 11.2.0.1: CPU_COUNT● 12.1.0.1: PROCESSOR_GROUP_NAME
179
Instance Caging
![Page 180: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/180.jpg)
180
Separação de Recursos por:● ORACLE_USER● SERVICE_NAME● CLIENT_OS_USER● CLIENT_PROGRAM● CLIENT_MACHINE● MODULE_NAME● MODULE_NAME_ACTION● SERVICE_MODULE● SERVICE_MODULE_ACTION
Controle dos Recursos:● CPU● Sessões Ativas● Paralelismo● I/O (>= 11gR1)
180
Resource Plan
![Page 181: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/181.jpg)
181181
Resource Plan
![Page 182: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/182.jpg)
182
Mudanças de planos:ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'PEAKTIME';ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'OFF-PEAK';
Monitoração:● DBA_RSRC_CONSUMER_GROUP_PRIVS ● DBA_RSRC_PLANS ● V$SESSION ● V$RSRC_PLAN● V$RSRC_CONSUMER_GROUP● V$RSRC_SESSION_INFO● V$RSRC_PLAN_HISTORY● V$RSRC_CONS_GROUP_HISTORY● V$RSRCMGRMETRIC● V$RSRCMGRMETRIC_HISTORY
182
Resource Plan
![Page 183: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/183.jpg)
183
Analise o código do arquivo ResourcePlan.sql.
Altere o arquivo para suprir as necessidades de três tipos de uso do banco de dados:● Usuário SOE: OLTP, deve ter muita prioridade durante o dia, e pouca durante a noite.● Usuario HR: BI, deve ter pouca prioridade durante o dia e muita durante a noite.● Usuário SCOTT: AD-HOC, só pode utilizar CPU que nenhum dos usuários acima estiver utilizando.● Outros: OTHERS_GROUP, só podem utilizar CPU que nenhum dos usuários acima estiver utilizando.
183
Lab 9.1 – Resource Plan
![Page 184: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/184.jpg)
184
Relatório AWR
184
![Page 185: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/185.jpg)
185
Tire um SNAPSHOT avulso.$ sqlplus / AS SYSDBASQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
Execute a carga no sistema.$ unzip -q swingbench25971.zip$ cd swingbench/bin./charbench -uc 10 -cs //localhost/ORCL
Tire outro SNAPSHOT avulso.$ sqlplus / AS SYSDBASQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
Tire um relatório AWR comparando os dois SNAPSHOTs.SQL> @?/rdbms/admin/awrrpt.sql
Analise o relatório AWR.
185
Lab 10.1: AWR
![Page 186: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/186.jpg)
186
Revisão
186
![Page 187: Oracle Performance Diagnostics & Tuning 12cR2nervinformatica.com.br/Downloads/Materiais/OPDT-12cR2.pdf · O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?). Ferramentas](https://reader031.vdocuments.site/reader031/viewer/2022013117/5be5830509d3f23a518b680b/html5/thumbnails/187.jpg)
187
● O Banco de Dados está lento agora:● Encontrar indícios do gargalo na V$SYSTEM_EVENT.● Encontrar indícios do gargalo na V$SESSION_WAIT.● Encontrar o(s) SID(s) ofensor na V$SESSION_WAIT.● Encontrar o maior Wait Event deste(s) SID(s) na V$SESSION_EVENT.● Corrigir o maior Wait Event possível.● Se o tempo esta satisfatório, finalizar o processo.
● O Banco de Dados estava lento ontem:● Encontrar indícios do gargalo na V$SYSTEM_EVENT (histórico).● Encontrar o maior Wait Event via Statspack / AWR.● Corrigir o maior Wait Event possível.● Se o tempo esta satisfatório, finalizar o processo.
● Este SQL está lento:● Executar o comando SQL com Extended SQL Trace.● Encontrar indícios do gargalo durante a execução do SQL Trace.● Encontrar o maior Wait Event via tkprof.● Corrigir o maior Wait Event possível.● Se o tempo esta satisfatório, finalizar o processo.
187
Método de Tuning