oracle tuning - sqlnervinformatica.com.br/downloads/materiais/otsql-12cr2.pdf · comandos no...
TRANSCRIPT
![Page 1: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/1.jpg)
Oracle Tuning – SQLEm Oracle Enterprise Editin 12.2.0.1 (RU 12.2.0.1.180417)
Em Oracle Enterprise Linux 7.5Inclui CDB Architecture
Ricardo Portllo [email protected]
Esta ibra está licenciada sib a licençaCreatve Cimmins Atribuiçãi-SemDerivadis 3.0 Brasil.
Para ver uma cópia desta licença, visite htp://creatvecimmins.irg/licenses/by-nd/3.0/br/.
![Page 2: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/2.jpg)
2
- Intriduçãi - CDB Architecture - Lendas de SQL - SQL - Custi - Seletvidade e Cardinalidade - Cinfiguraçãi di CBO - Ferramentas Básicas - SQL Engine - Access Paths - Midelagem - Query Transfirmatin - DBMS_SQLTUNE - Jiin Methids e Jiin Optins - Índices - Estatstcas - Otmizações - Extraçãi de Planis de Execuçãi - Análise de Planis de Execuçãi - Estabilidade de Plani de Execuçãi - SQLT
2
Agenda
![Page 3: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/3.jpg)
3
Iremos abordar: - SQL
Não iremos abordar: - PL/SQL - Analytc / OLAP / Data Mining - LOB / SecureFiles - XML - HTML DB / APEX - Oracle Text - Oracle Spatal - Intermedia / Image - JDBC / OCI - ODBC / ADO / .NET
3
Conteúdo
![Page 4: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/4.jpg)
Isenção de responsabilidade
● Nãi acredite em tudi i que lê. Questine tudi.● Pir algi estar escriti, nãi significa que é verdade.● O que é verdade aqui, pide nãi ser verdade lá.● O que era verdade intem, pide nãi ser verdade hije.● O que é verdade hije, pide nãi ser verdade amanhã.● Se is fatis nãi se adequam à teiria, midifique a teiria.● Questine, e só acredite em fatis: teste.● Também tente privar que vicê está erradi.● Implemente a siluçãi ni menir escipi pissível.● Quandi vicê mudar algi, pide acintecer uma de três ciisas.
![Page 5: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/5.jpg)
Tendemos a encontrar soluções fáceis
http://www.tylervigen.com/spurious-correlations
![Page 6: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/6.jpg)
Correlação != Causalidade
http://www.tylervigen.com/spurious-correlations
![Page 7: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/7.jpg)
7
Comandos no Treinamento
Comando com o usuário root:# ls -lh
Comando com um usuário administrador:$ 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:Histname: nerv01.licaldimain
Quando algo dá errado propositalmente:O que aconteceu?
![Page 8: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/8.jpg)
8
rlwrap# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm# yum -y install 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 9: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/9.jpg)
9
glogin.sql$ cat $ORACLE_HOME/sqlplus/admin/glogin.sql…SET PAGESIZE 1000SET LINESIZE 220SET TIMING ONSET TIME ONSET SQLPROMPT '&_user@&_connect_identifier> 'DEFINE _EDITOR=vi…
09:08:44 SYS@ORCL> SELECT 1 FROM DUAL;
1---------- 1
Elapsed: 00:00:00.0009:09:00 SYS@ORCL>
![Page 10: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/10.jpg)
10
LogsOracle (11gR2, 12cR1, 12cR2)$ tail -f $ORACLE_BASE/diag/rdbms/<database>/<SID>/trace/alert_<SID>.log
![Page 11: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/11.jpg)
11
CDB Architecture
![Page 12: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/12.jpg)
Deprecaton of Non-CDB Arclitecture
Documentação 12cR1:
Documentação 12cR2:
![Page 13: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/13.jpg)
12cR2 CDB New Features
✔ Subset Standby✔ Data Guard Briker PDB Migratin ir Failiver✔ Criss-Platirm Impirt if a Pluggable Database inti a Multtenant Cintainer Database✔ I/O Rate Limits fir PDBs✔ Heat Map and Autimatc Data Optmizatin Suppirt fir CDBs✔ PDB Character Set✔ PDB Refresh✔ Hints in CONTAINERS Query✔ Parallel PDB Creatin Clause✔ PDB Archive Files (.pdb Files)✔ Default Tablespace Clause✔ Clining a PDB✔ Near Zeri Diwntme PDB Relicatin✔ Ligical Standby Database ti Suppirt CDBs with PDBs with Diferent Character Sets✔ LigMiner ti Suppirt CDBs with PDBs with Diferent Character Sets✔ Suppirt fir PDBs with Diferent Character Sets, Time Zine File Versiins, and Database Time
Zines in a CDB✔ Memiry Resiurce Management✔ Per-Pricess PGA Limits✔ Perfirmance Prifiles and Mandatiry PDB Prifiles✔ CDB-Level PDB Lickdiwn
![Page 14: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/14.jpg)
12cR2 CDB New Features
✔ Applicatin Riit✔ Prixy PDB✔ Firwarding Cinnectins ti A New Address Based in Service✔ Service-Level ACLs fir TCP Priticil✔ Flashback Pluggable Database✔ Upgrading a CDB With One ir Mire PDBs in a Single Operatin✔ Suppirt fir Thiusands if Pluggable Databases fir Each Multtenant Cintainer Database✔ Pluggable Database Lickdiwn Prifiles Enhancements✔ Pluggable Database Operatng System Credentals✔ Oracle Enterprise Manager Database Express (EM Express) Resiurce Manager Suppirt✔ EM Express: Simplifying Cinfiguratin fir Multtenant Thriugh Single Pirt Access✔ EM Express: Perfirmance Hub Enhancements✔ Autimatc Wirkliad Repisitiry (AWR) Suppirt fir a Pluggable Database (PDB)✔ Selectve PDB Upgrades✔ AWR_PDB_AUTOFLUSH_ENABLED Initalizatin Parameter✔ ENABLE_AUTOMATIC_MAINTENANCE_PDB Initalizatin Parameter✔ AUTOTASK_MAX_ACTIVE_PDBS Initalizatin Parameter✔ Glibal and Shared Cinnectin Piil fir Oracle Cliud and Multtenant Oracle Databases✔ Priiritzed Rebalancing✔ Oracle Database Vault Cimmin Realms and Cimmand Rules fir Oracle Multtenant
![Page 15: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/15.jpg)
Opton Multtenant
![Page 16: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/16.jpg)
Multtenant - EE
![Page 17: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/17.jpg)
Singletenant - SE2
![Page 18: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/18.jpg)
Esse banco utliza CDB Arquitecture?
![Page 19: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/19.jpg)
Que Containers / PDBs este banco tem?
![Page 20: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/20.jpg)
Em que Container estou conectado?
![Page 21: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/21.jpg)
Como conectar em um PDB? SET CONTAINER
![Page 22: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/22.jpg)
Como conectar em um PDB?
$ lsnrctl status...Services Summary...Service "5397376af7702ac5e0536a00a8c0505d" has 1 instance(s). Instance "ORCL", status READY, has 1 handler(s) for this service...Service "ORCL" has 1 instance(s). Instance "ORCL", status READY, has 1 handler(s) for this service...Service "ORCLXDB" has 1 instance(s). Instance "ORCL", status READY, has 1 handler(s) for this service...Service "prod" has 1 instance(s). Instance "ORCL", status READY, has 1 handler(s) for this service...The command completed successfully$
![Page 23: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/23.jpg)
Como conectar em um PDB? tnsnames.ora
$ cat $ORACLE_HOME/network/admin/tnsnames.ora...ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = nerv06.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) )
PROD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = nerv06.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD) ) )
...$
![Page 24: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/24.jpg)
Como conectar em um PDB? tnsnames.ora
![Page 25: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/25.jpg)
Como conectar em um PDB? Easy Connect
![Page 26: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/26.jpg)
E agora, qual o nome da Instância? E do Banco?
![Page 27: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/27.jpg)
E agora, qual o nome da Instância? E do Banco?
![Page 28: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/28.jpg)
CDB e PDBs: STARTUP
![Page 29: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/29.jpg)
CDB e PDBs: STARTUP
![Page 30: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/30.jpg)
Alert Log
![Page 31: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/31.jpg)
DATAFILEs
![Page 32: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/32.jpg)
DATAFILEs
![Page 33: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/33.jpg)
DATAFILEs
![Page 34: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/34.jpg)
Dicionário de Dados
![Page 35: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/35.jpg)
VIEWs
![Page 36: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/36.jpg)
VIEWs
![Page 37: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/37.jpg)
Parâmetros
![Page 38: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/38.jpg)
Parâmetros
![Page 39: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/39.jpg)
TABLESPACEs
![Page 40: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/40.jpg)
USERs
![Page 41: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/41.jpg)
USERs
![Page 42: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/42.jpg)
USERs
![Page 43: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/43.jpg)
USERs
![Page 44: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/44.jpg)
SELECT em outros Containers
![Page 45: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/45.jpg)
Criando (Clonando) um PDB
![Page 46: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/46.jpg)
Criando (Clonando) um PDB
![Page 47: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/47.jpg)
Criando (Clonando) um PDB
![Page 48: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/48.jpg)
Criando (Clonando) um PDB
![Page 49: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/49.jpg)
Criando (Clonando) um PDB
![Page 50: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/50.jpg)
Unplug / Plug
![Page 51: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/51.jpg)
Unplug / Plug
![Page 52: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/52.jpg)
DROP
![Page 53: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/53.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 54: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/54.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 55: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/55.jpg)
55
55
“Dicas” de SQL Tuning?
![Page 56: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/56.jpg)
56
● O Custi nãi quer dizer nada?● Índice BITMAP em baixa “cardinalidade”?● Sintaxe Oracle iu ANSI?● SELECT(1) iu SELECT COUNT(*)?● Ordem da cláusula WHERE?● Ordem de JOIN?● CHAR é mais rápidi di que VARCHAR2?● Tabelas pequenas nãi utlizam índice?● Cláusulas de negaçãi nãi utlizam índice?● Busca pir NULL nãi utliza índice?● Evite Subqueries?● Evite VIEWs?● Evite EXISTS?● Evite Listas IN?● NESTED LOOPs é ruim?● < > é melhir que BETWEEN?
Lendas de SQL
![Page 57: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/57.jpg)
Lab 1 – Lendas de SQL
Hands On !
57
![Page 58: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/58.jpg)
58
Execute logon com o usuário SCOTT, e verifque qual é seu arquivo de TRACE:$ sqlplus SCOTT/TIGERSQL> COLUMN TRACEFILE FORMAT A100SQL> SELECT P.TRACEFILE FROM V$SESSION S, V$PROCESS P
WHERE S.PADDR = P.ADDR AND S.USERNAME = 'SCOTT';
Coloque sua sessão em TRACE 10053, e execute os comandos abaixo.SQL> ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';SQL> SELECT COUNT(EMPNO) FROM EMP;SQL> SELECT COUNT(1) FROM EMP;SQL> SELECT COUNT(2) FROM EMP;SQL> SELECT COUNT(*) FROM EMP;SQL> SELECT COUNT(ROWID) FROM EMP;SQL> SELECT COUNT(MGR) FROM EMP;SQL> SELECT E.ENAME, E.JOB, D.DNAME
FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO;SQL> SELECT E.ENAME, E.JOB, D.DNAME
FROM EMP E INNER JOIN DEPT D ON E.DEPTNO = D.DEPTNO;SQL> SELECT E.ENAME, E.JOB, D.DNAME FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNOAND EMPNO IN (7369,7499,7521,7566,7654);
Edite o seu arquivo de TRACE.$ vi /u01/app/oracle/rdbms/ORCL/orcl/trace/ORCL_ora_1234.trc
Lab 1.1: Lendas de SQL - COUNT(*)
![Page 59: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/59.jpg)
59
Procure novamente pelo texto “CNT”:CNT: Considering count(col) to count(*) on query block SEL$1 (#0)*************************Count(col) to Count(*) (CNT)*************************CNT: Converting COUNT(EMPNO) to COUNT(*).CNT: COUNT() to COUNT(*) done.
Procure pelo texto “Final query”:Final query after transformations:******* UNPARSED QUERY IS *******SELECT COUNT(*) "COUNT(EMPNO)" FROM "SCOTT"."EMP" "EMP"
Lab 1.2: Lendas de SQL - COUNT(*)
![Page 60: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/60.jpg)
60
Cost Based Optmizer
![Page 61: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/61.jpg)
61
61
Database SQL Tuning Guide
Database SQL Tuning Guidehttp:////�ocsd.oradcsle..csom.//�dtdb.dde.//222//TGSQL///tocs.htm.
Database Performance Tuning Guidehttp:////�ocsd.oradcsle..csom.//�dtdb.dde.//222//TGD/BA//tocs.htm.
![Page 62: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/62.jpg)
62
62
Livros
![Page 63: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/63.jpg)
Oracle Optmizer Blog
![Page 64: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/64.jpg)
64
“Exite. um.d te.oraid �e. que. de. dlguém. �e.dcsob.raira o que. o CBO fdz e. csom.o e.le. funcsiond, e.le. iraá �e.ddtpdrae.cse.ra indtdntdne.dm.e.nte. e. de.raá dub.dttuí�o tpora dlgo din�d m.did b.izdrarao e. ine.xtplicsáve.l.
Exidte. outrad te.oraid �e. que. idto já dcsonte.cse.u... �udd ve.ze.d.”
Jinathan Lewis, parafraseandi Diuglas Adams.
64
Cost Based Optmizer
![Page 65: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/65.jpg)
CBO - Cost Based Optmizer – O que é o custo?
Cist = (#SRds * sreadtm +#MRds * mreadtm +#CPUCycles / cpuspeed) / sreadtm
OU
Custi = (Quantdade de leituras de um únici blici * Tempi de leitura de um únici blici +Quantdade de leituras de múltplis blicis * Tempi de leitura de múltplis blicis +Ciclis de CPU / Velicidade da CPU) / Tempi de leitura de um únici blici
O CBO foi ldnçd�o no Oradcsle. 7.3.O RBO foi csondi�e.rad�o le.gd�o no 20g, m.dd e.xidte. dté no 22.2.0.2.
![Page 66: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/66.jpg)
66
O que é o Custo?
![Page 67: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/67.jpg)
67
O que é o Custo?
![Page 68: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/68.jpg)
68
SeletvidadeÉ um valir entre 0 e 1 (iu um percentual) que representa a fraçãi de linhas ibtdas pir uma iperaçãi.
CardinalidadeÉ i númeri de linhas retirnadas pir uma iperaçãi.
Exemplo:SQL> SELECT MODELS FROM CARS;120 rows selected.Cardinalidade = 120.Seletvidade = 1.00 (120/120).
SQL> SELECT MODELS FROM CARS WHERE FAB = 'FORD';18 rows selected.Cardinalidade = 18.Seletvidade = 0.15 (18/120).
SQL> SELECT COUNT(MODELS) FROM CARS WHERE FAB = 'FORD';1 row selected.Cardinalidade = 1.Seletvidade = 0.15 (18/120).
Seletvidade e Cardinalidade
![Page 69: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/69.jpg)
69
● 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 (0 a 100, padrãi 0)● OPTIMIZER_INDEX_COST_ADJ (1 a 10000, padrãi 100)● Histigrams● Extended Statstcs
Confguração do CBO
![Page 70: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/70.jpg)
70
● 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 Statstcs
Confguração do CBO - OLTP
![Page 71: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/71.jpg)
71
● 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 Statstcs
Confguração do CBO - OLAP
![Page 72: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/72.jpg)
72
Ferramentas Básicas
![Page 73: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/73.jpg)
73
SQL> SET AUTOTRACE ON;SQL> SELECT ENAME FROM EMP;ENAME----------SMITH...14 rows selected.
Execution Plan----------------------------------------------------------Plan hash value: 3956160932
--------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 14 | 84 | 3 (0)| 00:00:01 || 1 | TABLE ACCESS FULL| EMP | 14 | 84 | 3 (0)| 00:00:01 |--------------------------------------------------------------------------
Statistics----------------------------------------------------------
1 recursive calls...
0 sorts (disk) 14 rows processed
AUTOTRACE
![Page 74: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/74.jpg)
74
SQL> SET AUTOTRACE TRACEONLY;SQL> SELECT ENAME FROM EMP;
14 rows selected.
Execution Plan----------------------------------------------------------Plan hash value: 3956160932
--------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 14 | 84 | 3 (0)| 00:00:01 || 1 | TABLE ACCESS FULL| EMP | 14 | 84 | 3 (0)| 00:00:01 |--------------------------------------------------------------------------
Statistics----------------------------------------------------------
0 recursive calls 0 db block gets
... 0 sorts (disk) 14 rows processed
AUTOTRACE
![Page 75: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/75.jpg)
75
SQL> SET AUTOTRACE TRACEONLY EXPLAIN;SQL> SELECT ENAME FROM EMP;
Execution Plan----------------------------------------------------------Plan hash value: 3956160932
--------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 14 | 84 | 3 (0)| 00:00:01 || 1 | TABLE ACCESS FULL| EMP | 14 | 84 | 3 (0)| 00:00:01 |--------------------------------------------------------------------------
SQL>
AUTOTRACE
![Page 76: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/76.jpg)
76
SQL> SET AUTOTRACE TRACEONLY STATISTICS;SQL> SELECT ENAME FROM EMP;
14 rows selected.
Statistics----------------------------------------------------------
0 recursive calls 0 db block gets 8 consistent gets 0 physical reads 0 redo size731 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 14 rows processed
SQL>
AUTOTRACE
![Page 77: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/77.jpg)
77
SQL Developer: Plano de Execução
![Page 78: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/78.jpg)
78
SQL Developer: Plano de Execução
![Page 79: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/79.jpg)
79
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
SQL Trace (Event 10046): Níveis
![Page 80: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/80.jpg)
80
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=>'');
SQL Trace (Event 10046): Atvação
![Page 81: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/81.jpg)
81
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;
SQL Trace (Event 10046): Atvação
![Page 82: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/82.jpg)
82
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;/
SQL Trace (Event 10046): Atvação
![Page 83: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/83.jpg)
83
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');
Versões >= 11gSQL> ALTER SESSION SET EVENTS 'trace[rdbms.SQL_Optimizer.*][sql:sql_id]';
SQL Trace (Event 10046): Atvação
![Page 84: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/84.jpg)
84
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;
SQL Trace (Event 10046): Atvação
![Page 85: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/85.jpg)
85
SQL> ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';SQL> ALTER SESSION SET EVENTS '10053 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 10053 trace name context forever, level 1;
SQL Trace (Event 10053)
![Page 86: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/86.jpg)
Lab 2 – SQL Trace
Hands On !
86
![Page 87: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/87.jpg)
87
Lab 2.1: SQL Trace (Event 10046)SQL> CONN SCOTT/TIGERSQL> SELECT P.SPID, P.TRACEFILE
FROM V$SESSION S, V$PROCESS PWHERE S.PADDR = P.ADDR AND S.USERNAME = 'SCOTT';
SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';SQL> SELECT ENAME FROM EMP WHERE EMPNO = 7369;SQL> SELECT * FROM EMP;SQL> CREATE TABLE T21 AS SELECT * FROM ALL_OBJECTS;
![Page 88: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/88.jpg)
88
Lab 2.2: tkprof (Event 10046)
![Page 89: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/89.jpg)
89
Lab 2.3: SQL Trace (Event 10046)
![Page 90: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/90.jpg)
90
Lab 2.4: SQL Trace (Event 10053)SQL> CONN SCOTT/TIGERSQL> SELECT P.SPID, P.TRACEFILE
FROM V$SESSION S, V$PROCESS PWHERE S.PADDR = P.ADDR AND S.USERNAME = 'SCOTT';
SQL> ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';SQL> SELECT EMPNO, ENAME, DNAME, LOC
FROM EMP, DEPTWHERE EMP.DEPTNO = DEPT.DEPTNO;
![Page 91: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/91.jpg)
91
Lab 2.5: SQL Trace (Event 10053)
![Page 92: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/92.jpg)
92
Lab 2.6: SQL Trace (Event 10053)
![Page 93: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/93.jpg)
93
Lab 2.7: SQL Trace (Event 10053)
![Page 94: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/94.jpg)
94
Lab 2.8: SQL Trace (Event 10053)
![Page 95: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/95.jpg)
95
Lab 2.9: SQL Trace (Event 10053)
![Page 96: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/96.jpg)
96
Lab 2.10: SQL Trace (Event 10053)
![Page 97: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/97.jpg)
97
Lab 2.11: SQL Trace (Event 10053)
![Page 98: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/98.jpg)
98
Lab 2.12: SQL Trace (Event 10053)
![Page 99: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/99.jpg)
99
Lab 2.13: SQL Trace (Event 10053)
![Page 100: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/100.jpg)
100
Lab 2.14: SQL Trace (Event 10053)
![Page 101: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/101.jpg)
101
Lab 2.15: SQL Trace (Event 10053)
![Page 102: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/102.jpg)
102
SQL Engine
![Page 103: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/103.jpg)
103
● Sif Parse / Hard Parse● LIO (Ligical Input/Output)● PIO (Physical Input/Output)● Latch / Mutex● Bufer Cache● Shared Piil● Library Cache
Terminologia
![Page 104: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/104.jpg)
104
PGA
![Page 105: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/105.jpg)
105
5: SELECT (COLUMN / DISTINCT COLUMN / expressiin / scalar subquery)1: FROM / FROM JOIN ON (fintes: TABLE, VIEW, MVIEW, PARTITION, SUBQUERY...)2: * WHERE (cindições: TRUE, FALSE, UNKNOWN)3: * GROUP BY (ipções: ROLLUP / CUBE)4: * HAVING (cindiçãi: TRUE)6: * ORDER BY (COLUMN)
Exemplo:SELECT C.CUSTOMER_ID, COUNT(O.ORDER_ID) AS ORDER_CT
FROM OE.CUSTOMERS CJOIN OE.ORDERS O ON C.CUSTOMER_ID = O.CUSTOMER_ID
WHERE C.GENDER = 'F'GROUP BY C.CUSTOMER_IDHAVING COUNT(O.ORDER_ID) > 4ORDER BY ORDERS_CT, C_CUSTOMER_ID;
- Nd fdde. 2, od �d�od já foradm. de.le.csiond�od (IN MEMORY Colum.n SQtorae.). - Ludl d �ife.rae.nçd �e. tpraocse.dddm.e.nto e.ntrae. WHERE e. HAVING?
SELECT
![Page 106: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/106.jpg)
106
● OPEN CURSOR● PARSE● BIND● EXEC● FETCH (ARRAYSIZE, DEFAULT_SDU_SIZE (512 a 32767), RECV_BUF_SIZE, SEND_BUF_SIZE (sqlnet.ira)● CLOSE CURSOR
SQL*Net Message From ClientPARSESQL*Net Message To ClientSQL*Net Message From ClientBINDSQL*Net Message To ClientSQL*Net Message From ClientEXECSQL*Net Message To ClientSQL*Net Message From ClientFETCHSQL*Net Message To ClientSQL*Net Message From ClientFETCHSQL*Net Message To ClientSQL*Net Message From Client...
Atpe.ndd SQE/ECT tpoddui d fdde. FETCH.
Processamento de SQL
![Page 107: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/107.jpg)
107
Processamento de SQL
![Page 108: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/108.jpg)
108
Parse Time
![Page 109: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/109.jpg)
109
PL/SQL Engine
![Page 110: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/110.jpg)
110
SQL Recursivos
![Page 111: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/111.jpg)
111
SQL Recursivos
![Page 112: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/112.jpg)
112
Hard Parse / Sof Parse
![Page 113: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/113.jpg)
113
Hard Parse / Sof Parse
![Page 114: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/114.jpg)
114
SQL> SELECT /* Quero achar este SQL */ COUNT(*) FROM T1;SQL> SELECT /* Quero achar este SQL também */ COUNT(*) FROM T1;SQL> SELECT /* Quero achar este SQL */ COUNT(*) FROM T1;SQL> select /* Quero achar este SQL */ count(*) from t1;SQL> SELECT /* Quero achar este SQL também */ COUNT(*) FROM T1;
SQL> SELECT SQL_ID, SQL_TEXT FROM V$SQL WHERE SQL_TEXT LIKE '%Quero achar este SQL%';
Hard Parse
![Page 115: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/115.jpg)
Lab 3 – SQL Engine
Hands On !
115
![Page 116: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/116.jpg)
116
Execute os comandos abaixo.SQL> CONN HR/HRSQL> SET AUTOTRACE TRACEONLY STATISTICSSQL> SELECT * FROM EMPLOYEES;
107 rows selected.Statistics----------------------------------------------------------
1 recursive calls 0 db block gets 15 consistent gets 6 physical reads 0 redo size10499 bytes sent via SQL*Net to client 629 bytes received via SQL*Net from client 9 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 107 rows processed
Lab 3.1: FETCH
![Page 117: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/117.jpg)
117
Execute os mesmo SELECT anterior, mas com o ARRAYSIZE diferente.SQL> SET ARRAYSIZE 100SQL> SELECT * FROM EMPLOYEES;
107 rows selected.
Statistics----------------------------------------------------------
0 recursive calls 0 db block gets 9 consistent gets 0 physical reads 0 redo size9335 bytes sent via SQL*Net to client 563 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 107 rows processed
Lab 3.2: FETCH
![Page 118: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/118.jpg)
118
Reinicie a instância, e execute os comandos abaixo.SQL> CONN / AS SYSDBASQL> SHUTDOWN IMMEDIATESQL> STARTUPSQL> CONN SCOTT/TIGER
SQL> SET AUTOTRACE TRACEONLY STATISTICSSQL> SELECT ENAME FROM EMP WHERE EMPNO = 7369;
104 recursive calls 0 db block gets164 consistent gets 7 physical reads 0 redo size550 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 9 sorts (memory) 0 sorts (disk) 1 rows processed
Lab 3.3: Slared Pool
![Page 119: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/119.jpg)
119
Execute novamente o mesmo SELECT.SQL> SELECT ENAME FROM EMP WHERE EMPNO = 7369;
0 recursive calls 0 db block gets 2 consistent gets 0 physical reads 0 redo size550 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
Lab 3.4: Slared Pool
![Page 120: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/120.jpg)
120
Execute o mesmo SQL, duas vezes, mas solicitando outro registro.SQL> SELECT ENAME FROM EMP WHERE EMPNO = 7499;
36 recursive calls 0 db block gets 53 consistent gets 0 physical reads 0 redo size550 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 5 sorts (memory) 0 sorts (disk) 1 rows processed
SQL> SELECT ENAME FROM EMP WHERE EMPNO = 7499; 0 recursive calls 0 db block gets 2 consistent gets 0 physical reads 0 redo size550 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
Lab 3.5: Slared Pool
![Page 121: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/121.jpg)
121
Execute o mesmo SQL, também duas vezes, mas solicitando outro registro.SQL> SELECT ENAME FROM EMP WHERE EMPNO = 7521;
1 recursive calls 0 db block gets 2 consistent gets 0 physical reads 0 redo size549 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
SQL> SELECT ENAME FROM EMP WHERE EMPNO = 7521; 0 recursive calls 0 db block gets 2 consistent gets 0 physical reads 0 redo size549 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
Lab 3.6: Slared Pool
![Page 122: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/122.jpg)
122
Execute o seguinte SQL, também duas vezes.SQL> SELECT ENAME FROM EMP WHERE EMPNO IN (7654, 7698, 7782);
5 recursive calls 0 db block gets 13 consistent gets 2 physical reads 0 redo size619 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 3 rows processed
SQL> SELECT ENAME FROM EMP WHERE EMPNO IN (7654, 7698, 7782); 0 recursive calls 0 db block gets 4 consistent gets 0 physical reads 0 redo size619 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 3 rows processed
Lab 3.7: Slared Pool
![Page 123: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/123.jpg)
123
Remova as estatstcas da tabela, e execute o primeiro SQL, também duas vezes.SQL> EXEC DBMS_STATS.DELETE_TABLE_STATS('SCOTT', 'EMP');SQL> SELECT ENAME FROM EMP WHERE EMPNO = 7369;
0 recursive calls 0 db block gets 2 consistent gets 16 physical reads 0 redo size
... 0 sorts (memory) 0 sorts (disk) 1 rows processed
SQL> SELECT ENAME FROM EMP WHERE EMPNO = 7369; 0 recursive calls 0 db block gets 2 consistent gets 0 physical reads 0 redo size
... 0 sorts (memory) 0 sorts (disk) 1 rows processed
Lab 3.8: Slared Pool
![Page 124: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/124.jpg)
124
Execute o SQL abaixo, que retorna mais dados, também duas vezes.SQL> SELECT * FROM DEPT;
40 recursive calls 0 db block gets 88 consistent gets 41 physical reads 0 redo size
... 6 sorts (memory) 0 sorts (disk) 4 rows processed
SQL> SELECT * FROM DEPT; 0 recursive calls 0 db block gets 8 consistent gets 0 physical reads 0 redo size
... 0 sorts (memory) 0 sorts (disk) 4 rows processed
Lab 3.9: Slared Pool
![Page 125: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/125.jpg)
125
Limpe a Slared Pool, e execute novamente o SQL, também duas vezes.SQL> CONN / AS SYSDBASQL> ALTER SYSTEM FLUSH SHARED_POOL;
SQL> CONN SCOTT/TIGERSQL> SET AUTOTRACE TRACEONLY STATISTICSSQL> SELECT * FROM DEPT;1a execução:
71 recursive calls 0 db block gets 90 consistent gets 0 physical reads 0 redo size
... 6 sorts (memory) 0 sorts (disk) 4 rows processed
SQL> SELECT * FROM DEPT; 0 recursive calls 0 db block gets 8 consistent gets 0 physical reads 0 redo size
... 0 sorts (memory) 0 sorts (disk) 4 rows processed
Lab 3.10: Slared Pool
![Page 126: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/126.jpg)
126
Execute novamente o primeiro SQL, mas com variáveis Bind, também duas vezes.SQL> VARIABLE vEMPNO NUMBERSQL> EXEC :vEMPNO := 7369SQL> SELECT ENAME FROM EMP WHERE EMPNO = :vEMPNO;
0 recursive calls 0 db block gets 2 consistent gets 0 physical reads 0 redo size
... 1 rows processed
SQL> EXEC :vEMPNO := 7499SQL> SELECT ENAME FROM EMP WHERE EMPNO = :vEMPNO;
0 recursive calls 0 db block gets 2 consistent gets 0 physical reads 0 redo size
... 1 rows processed
Lab 3.11: Slared Pool
![Page 127: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/127.jpg)
127
Execute novamente o SELECT na DEPT, verifcado os Parses.SQL> SET AUTOTRACE OFFSQL> SELECT S.NAME, M.VALUE FROM V$STATNAME S, V$MYSTAT M WHERE S.STATISTIC# = M.STATISTIC# AND S.NAME IN ('parse count (total)', 'parse count (hard)');parse count (total) 30parse count (hard) 6
SQL> SELECT * FROM DEPT;...parse count (total) 32parse count (hard) 6
SQL> SELECT * FROM DEPT;...parse count (total) 34parse count (hard) 6
SQL> SELECT * FROM DEPT ORDER BY 1;...parse count (total) 43parse count (hard) 7
SQL> SELECT * FROM DEPT ORDER BY 1,2;...parse count (total) 45parse count (hard) 8
Lab 3.12: Hard Parse / Sof Parse
![Page 128: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/128.jpg)
128
Limpe o Bufer Cacle, e execute novamente o SQL da DEPT, também duas vezes.SQL> CONN / AS SYSDBASQL> ALTER SYSTEM FLUSH BUFFER_CACHE;
SQL> CONN SCOTT/TIGERSQL> SET AUTOTRACE TRACEONLY STATISTICSSQL> SELECT * FROM DEPT;1a execução:
0 recursive calls 0 db block gets 8 consistent gets 6 physical reads 0 redo size
... 0 sorts (memory) 0 sorts (disk) 4 rows processed
2a execução: 0 recursive calls 0 db block gets 8 consistent gets 0 physical reads 0 redo size
... 0 sorts (memory) 0 sorts (disk) 4 rows processed
Lab 3.13: Bufer Cacle
![Page 129: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/129.jpg)
129
Lab 3.14: Connect / Parse / CommitCrie a tabela abaixo com o usuário SCOTT.SQL> CREATE TABLE T314 (C1 NUMBER);
Observe o conteúdo dos seguintes scripts Perl, os execute, e compare.$ time perl /home/oracle/ConnectBAD_CommitBAD_BindsBAD.pl 10000$ time perl /home/oracle/ConnectBAD_CommitBAD_BindsGOOD.pl 10000$ time perl /home/oracle/ConnectBAD_CommitGOOD_BindsBAD.pl 10000$ time perl /home/oracle/ConnectBAD_CommitGOOD_BindsGOOD.pl 10000$ time perl /home/oracle/ConnectGOOD_CommitBAD_BindsBAD.pl 10000$ time perl /home/oracle/ConnectGOOD_CommitBAD_BindsGOOD.pl 10000$ time perl /home/oracle/ConnectGOOD_CommitGOOD_BindsBAD.pl 10000$ time perl /home/oracle/ConnectGOOD_CommitGOOD_BindsBAD_ONE.pl 10000$ time perl /home/oracle/ConnectGOOD_CommitGOOD_BindsGOOD.pl 10000$ time perl /home/oracle/ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000
Re-execute os testes ConnectGOOD com os parâmetros abaixo alterados.ALTER SYSTEM SET CURSOR_SHARING=FORCE;ALTER SYSTEM SET COMMIT_LOGGING=BATCH;
![Page 130: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/130.jpg)
130
Lab 3.15: PL/SQL EngineCrie esta tabela com o usuário SCOTT:SQL> CREATE TABLE T315 (C1 NUMBER);
Observe o conteúdo dos seguintes scripts Perl, os execute, e compare:$ time perl /home/oracle/SemPLSQL.pl 10000$ time perl /home/oracle/ComPLSQL.pl 10000
![Page 131: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/131.jpg)
131
Access Patls
![Page 132: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/132.jpg)
132
• Full Table Scan (FTS)• Table Access by ROWID• Index Unique Scan• Index Range Scan• Index Range Scan descending• Index Skip Scan• Full Index Scan (FIS)• Fast Full Index Scan (FFIS)
Access Patls
![Page 133: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/133.jpg)
133
Depende de:• Percentual de dadis que serãi acessadis;• Quantdade de blicis lidis em leituras múltplas (db_file_multblick_read_ciunt);• Velicidade de leitura de múltplis blicis x únici blici (System Statstcs);• Distribuiçãi das linhas nis blicis;• HWM.
Full Table Scan
![Page 134: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/134.jpg)
134
Crie as duas tabelas abaixo com o usuário SCOTT, e compare as duas.SQL> CONN SCOTT/TIGER
SQL> CREATE TABLE T1 ASSELECT TRUNC((ROWNUM-1)/100) ID, RPAD(ROWNUM,100) NAMEFROM DBA_SOURCEWHERE ROWNUM <= 10000;
SQL> CREATE INDEX T1_IDX1 ON T1(ID);
SQL> CREATE TABLE T2 ASSELECT MOD(ROWNUM,100) ID, RPAD(ROWNUM,100) NAMEFROM DBA_SOURCEWHERE ROWNUM <= 10000;
SQL> CREATE INDEX T2_IDX1 ON T2(ID);
SQL> SELECT COUNT(*) FROM T1;SQL> SELECT COUNT(*) FROM T2;SQL> SELECT MIN(ID) FROM T1;SQL> SELECT MIN(ID) FROM T2;SQL> SELECT MAX(ID) FROM T1;SQL> SELECT MAX(ID) FROM T2;SQL> SELECT COUNT(*) FROM T1 WHERE ID = 1;SQL> SELECT COUNT(*) FROM T2 WHERE ID = 1;
Lab 4.1: FTS e Clustering Factor
![Page 135: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/135.jpg)
135
Compare os planos de execução de SQL iguais para as duas tabelas.SQL> SET AUTOTRACE TRACEONLY EXPLAINSQL> SELECT ID, NAME FROM T1 WHERE ID = 1;SQL> SELECT ID, NAME FROM T2 WHERE ID = 1;SQL> SELECT ID, NAME FROM T1 WHERE ID < 5;SQL> SELECT ID, NAME FROM T2 WHERE ID < 5;SQL> SELECT ID, NAME FROM T1 WHERE ID < 10;SQL> SELECT ID, NAME FROM T2 WHERE ID < 10;
Verifque a ordenação fsica dos dados das tabelas.SQL> SET AUTOTRACE OFFSQL> SELECT ID, NAME FROM T1;SQL> SELECT ID, NAME FROM T2;SQL> SELECT ROWID, ID, NAME FROM T1 ORDER BY 2;SQL> SELECT ROWID, ID, NAME FROM T2 ORDER BY 2;
Lab 4.2: FTS e Clustering Factor
![Page 136: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/136.jpg)
136
Compare as estatstcas das duas tabelas.SQL> SET AUTOTRACE OFFSQL> COL TABLE_NAME FORMAT A20SQL> COL INDEX_NAME FORMAT A20
SQL> SELECTT.TABLE_NAME,I.INDEX_NAME,I.CLUSTERING_FACTOR,T.BLOCKS,T.NUM_ROWS
FROM DBA_TABLES T, DBA_INDEXES IWHERE T.TABLE_NAME = I.TABLE_NAME AND
T.TABLE_NAME IN ('T1', 'T2') ANDT.OWNER = 'SCOTT'ORDER BY T.TABLE_NAME, I.INDEX_NAME;
Lab 4.3: FTS e Clustering Factor
![Page 137: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/137.jpg)
137
Compare as estatstcas deste SELECT, antes e depois do DELETE.SQL> CREATE TABLE T4 AS SELECT * FROM ALL_OBJECTS;SQL> SET AUTOTRACE TRACEONLYSQL> SELECT COUNT(*) FROM T4;SQL> SELECT COUNT(*) FROM T4;SQL> SELECT COUNT(*) FROM T4;
SQL> DELETE FROM T4;SQL> SELECT COUNT(*) FROM T4;SQL> SELECT COUNT(*) FROM T4;SQL> SELECT COUNT(*) FROM T4;
Lab 4.4: FTS e HWM
![Page 138: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/138.jpg)
138
Verifque os blocos utlizados pela tabela, antes e depois do DELETE.SQL> SET AUTOTRACE OFFSQL> DROP TABLE T4;
SQL> CREATE TABLE T4 AS SELECT * FROM ALL_OBJECTS;SQL> SELECT MIN(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)) MIN_BLK,MAX(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)) MAX_BLK FROM T4;
SQL> DELETE FROM T4;SQL> SELECT MIN(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)) MIN_BLK,MAX(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)) MAX_BLK FROM T4;
SQL> ROLLBACK;SQL> SELECT MIN(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)) MIN_BLK,MAX(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)) MAX_BLK FROM T4;
Lab 4.5: FTS e HWM
![Page 139: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/139.jpg)
139
Index Scan
• Index Unique Scan• Index Range Scan• Index Skip Scan• Index Full Scan (Pora que. le.ra to�od b.locsod �e. um. ín�icse. E od �d tdb.e.ld, e. não dó od �d tdb.e.ld?)• Index Fast Full Scan
![Page 140: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/140.jpg)
140
Index Scan
• B-tree = Árvire Balanceada• Riit Blick / Branch Blicks / Leaf Blicks• Height / BEVEL (quandi i Height / BLEVEL aumenta?)• Average Leaf Blicks per Key / Average Data Blicks per Key• Clustering Factir
![Page 141: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/141.jpg)
141
Compare as estatstcas destes SELECTs.SQL> SET AUTOTRACE TRACEONLY STATISTICSSQL> SELECT NAME FROM T1 WHERE ID = 0 AND NAME = 1;
0 recursive calls 0 db block gets 6 consistent gets 0 physical reads 0 redo size
636 bytes sent via SQL*Net to client 552 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
SQL> SELECT COUNT(NAME) FROM T1 WHERE ID = 0 AND NAME = 1; 0 recursive calls 0 db block gets 4 consistent gets 0 physical reads 0 redo size
545 bytes sent via SQL*Net to client 552 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
Lab 5.1: Index Scan
![Page 142: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/142.jpg)
142
Compare as estatstcas deste SELECTs, com os do Lab 5.1.SQL> SELECT NAME FROM T2 WHERE ID = 0 AND NAME = 1;
0 recursive calls 0 db block gets156 consistent gets 0 physical reads 0 redo size348 bytes sent via SQL*Net to client540 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 rows processed
SQL> SELECT COUNT(NAME) FROM T2 WHERE ID = 0 AND NAME = 1; 0 recursive calls 0 db block gets156 consistent gets 0 physical reads 0 redo size552 bytes sent via SQL*Net to client551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
Lab 5.2: Index Scan
![Page 143: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/143.jpg)
143
Compare as estatstcas deste SELECTs.SQL> SELECT NAME FROM T1 WHERE ID = 1; 1 recursive calls 0 db block gets 7 consistent gets 0 physical reads 0 redo size 11484 bytes sent via SQL*Net to client 552 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory)
0 sorts (disk) 100 rows processed
SQL> SELECT NAME FROM T2 WHERE ID = 1; 1 recursive calls 0 db block gets 157 consistent gets 0 physical reads 0 redo size 11176 bytes sent via SQL*Net to client 552 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 100 rows processed
Lab 5.3: Index Scan
![Page 144: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/144.jpg)
144
Index Unique Scan
![Page 145: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/145.jpg)
145
Index Unique Scan
• Utlizadi cim Primary Key iu Unique Key;• Cinsistent Gets mínimi = (Riws x 2) + BLEVEL + 1.
![Page 146: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/146.jpg)
146
Index Range Scan
![Page 147: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/147.jpg)
147
Index Range Scan
• Utlizadi cim Primary Key, Unique Key, iu Nin-unique Key;• Cinsistent Gets mínimi = (Riws x 2) + BLEVEL + 1.
![Page 148: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/148.jpg)
148
Index Range Scan - Sort
![Page 149: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/149.jpg)
149
Index Full Scan
![Page 150: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/150.jpg)
150
Index Full Scan
Utlizado quando:• Não lá predicado, mas uma das colunas está indexada;• Predicadi nãi é a primeira ciluna de um índice;• Um índice pide ecinimizar um SORT.
![Page 151: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/151.jpg)
151
Index Full Scan
• Sem predicadi, mas uma das cilunas está indexada;• Predicado não é a primeira coluna de um índice;• Um índice pide ecinimizar um SORT.
![Page 152: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/152.jpg)
152
Index Full Scan
• Sem predicadi, mas uma das cilunas está indexada;• Predicadi nãi é a primeira ciluna de um índice;• Um índice pode economizar um SORT.
![Page 153: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/153.jpg)
153
Index Full Scan
• Sem predicadi, mas uma das cilunas está indexada;• Predicadi nãi é a primeira ciluna de um índice;• Um índice pode economizar um SORT.
![Page 154: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/154.jpg)
154
Index Full Scan
![Page 155: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/155.jpg)
155
Index Full Scan
![Page 156: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/156.jpg)
156
Index Skip Scan
• O predicadi cintém uma cindiçãi em uma ciluna indexada, mas esta ciluna nãi é a primeira di índice, e as primeiras cilunas tem um baixi NDV.
![Page 157: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/157.jpg)
157
Index Fast Full Scan● Utlizado quando todas as colunas do SELECT estão incluídas no índice;● Utliza MBRC;● Nãi há acessi à tabela;● Nãi pide ser utlizadi para evitar um SORT;● Peli menis uma das cilunas di índice deve ser NOT NULL.
![Page 158: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/158.jpg)
158
Modelagem
![Page 159: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/159.jpg)
159
Natural (RG, CPF, Nita Fiscal, Matrícula, Apólice...)• Naturalidade ni entendimenti das cilunas;• Reduçãi da largura da linha;• Menir quantdade de JOINs para exibir i resultadi final;• Validaçãi natural de regras de negócii.
Artfcial (SEQUENCE, IDENTITY, MAX + 1 cim FOR UPDATE)• Alterações cim menir impacti;• Reduçãi da largura das chaves;• Reduçãi da pissibilidade de cincirrência em alterações de campis;• Cimpisiçãi desnecessária;• Simplicidade de JOINs.• Pissibilidade de usi para Parttinamenti.
PK: Natural ou Artfcial?
![Page 160: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/160.jpg)
160
Lab 6.1: Data Types
Verifque os planos de execução dos SQL abaixo.SQL> CONN SCOTT/TIGER
SQL> CREATE TABLE T61 (ID VARCHAR(255), NAME VARCHAR(255));SQL> CREATE INDEX T61_IDX ON T61(ID);SQL> INSERT INTO T61 SELECT * FROM T1;SQL> COMMIT;
SQL> SET AUTOTRACE TRACEONLY EXPLAINSQL> SELECT COUNT(*) FROM T1 WHERE ID=1;SQL> SELECT COUNT(*) FROM T61 WHERE ID=1;SQL> SELECT COUNT(*) FROM T61 WHERE ID='1';
SQL> SET AUTOTRACE OFFSQL> INSERT INTO T61 VALUES ('X', 'X');SQL> SELECT COUNT(*) FROM T61 WHERE ID=1;SQL> ROLLBACK;SQL> SELECT COUNT(*) FROM T61 WHERE ID=1;
![Page 161: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/161.jpg)
161
Lab 6.2: Data Types
Verifque o plano de execução do SQL abaixo.SQL> CONN SCOTT/TIGERSQL> CREATE TABLE T62 ASWITH GENERATOR AS ( SELECT --+ materialize ROWNUM ID FROM ALL_OBJECTS WHERE ROWNUM <= 2000)SELECT DECODE( MOD(ROWNUM - 1,1000), 0, TO_DATE('31-Dec-4000'), TO_DATE('01-Jan-2008') + trunc((rownum - 1)/100) ) DATA_PEDIDOFROM GENERATOR V1, GENERATOR V2WHERE ROWNUM <= 1827 * 100;
SQL> SELECT COUNT(*) FROM T62;SQL> SELECT COUNT(*) FROM T62 WHERE DATA_PEDIDO = TO_DATE('31-Dec-4000');
SQL> SET AUTOTRACE TRACEONLY EXPLAINSQL> SELECT COUNT(*) FROM T62 WHERE DATA_PEDIDO BETWEEN TO_DATE('01-Jan-2010','dd-mon-yyyy') AND TO_DATE('31-Dec-2010','dd-mon-yyyy');
![Page 162: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/162.jpg)
162
Lab 6.3: Data Types
Verifque o plano de execução do SQL abaixo.SQL> CONN SCOTT/TIGERSQL> CREATE TABLE T63 ASSELECT DATA_DATE, TO_NUMBER(TO_CHAR(DATA_DATE,'yyyymmdd')) DATA_NUMBER, TO_CHAR(DATA_DATE,'yyyymmdd') DATA_CHARFROM (SELECT TO_DATE('31-Dec-2007') + ROWNUM DATA_DATE FROM ALL_OBJECTS WHERE ROWNUM <= 1827);
SQL> SET AUTOTRACE TRACEONLY EXPLAINSQL> SELECT COUNT(*) FROM T63 WHERE DATA_DATE
BETWEEN TO_DATE('01-Jan-2010','dd-mon-yyyy')AND TO_DATE('31-Dec-2010','dd-mon-yyyy');
SQL> SELECT COUNT(*) FROM T63 WHERE DATA_NUMBERBETWEEN 20100101 AND 20101231;
SQL> SELECT COUNT(*) FROM T63 WHERE DATA_CHARBETWEEN '20100101' AND '20101231';
![Page 163: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/163.jpg)
163
Query Transformaton
![Page 164: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/164.jpg)
164
De acordo com a Documentação:● OR Expansiin● View Merging● Predicate Pushing● Subquery Unnestng● In-Memiry Aggregatin● Table Expansiin● Jiin Factirizatin● Query Rewrite with Materialized Views● Star Transfirmatin
Query Rewrite
![Page 165: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/165.jpg)
165
● Cintrile: Hints QUERY_TRANSFORMATION / NO_QUERY_TRANSFORMATION
SQL> CONN HR/HRSQL> ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';SQL> SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM DEPARTMENTS);
Query Rewrite
![Page 166: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/166.jpg)
166
Controle: MERGE / NO_MERGE / Parâmetri _cimplex_view_merging (TRUE de 9i em diante).
Geralmente utlizada quando o Outer Query Block contém: - Uma ciluna que pide ser utlizada em um índice cim iutri Query Blick; - Uma ciluna que pide ser utlizada para Parttin Pruning cim iutri Query Blick; - Uma cindiçãi que limita as linhas retirnadas de uma das tabelas em uma Jiined View.
Geralmente não será utlizada se: - Um Query Blick cintver uma funçãi de agregaçãi iu analítca; - Um Query Blick cintver Set Operatins (UNION, INTERSECT, MINUS); - Um Query Blick cintver ORDER BY; - Um Query Blick cintver ROWNUM.
Fom.od trae.ind�od tpdrad e.nte.n�e.ra que. e.dtdd �udd e.xtprae.ddõe.d rae.torandm. rae.dultd�od �ife.rae.nte.d:● 6 + 4 // 2 = 8● (6 + 4) // 2 = 5
View Merging
![Page 167: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/167.jpg)
167
Execute o SELECT abaixo, e encontre no arquivo trace o View Merging.SQL> CONN OE/OESQL> ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';SQL> SELECT * FROM ORDERS O, (SELECT SALES_REP_ID FROM ORDERS) O_VIEW
WHERE O.SALES_REP_ID = O_VIEW.SALES_REP_ID (+)AND O.ORDER_TOTAL > 100000;
Lab 7.1: View Merging
Execute o SELECT abaixo, e encontre no arquivo trace o View Merging.SQL> CONN OE/OESQL> ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';SQL> SELECT * FROM ORDERS O, (SELECT SALES_REP_ID FROM ORDERS ORDER BY SALES_REP_ID) O_VIEW WHERE O.SALES_REP_ID = O_VIEW.SALES_REP_ID (+) AND O.ORDER_TOTAL > 100000 AND ROWNUM < 10 ORDER BY ORDER_TOTAL;
![Page 168: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/168.jpg)
168
- Cintrile: HINT NO_UNNEST, unnest_subquery (TRUE de 9i em diante). - Similar a View Merging, icirre quandi a Subquery está licalizada na cláusula WHERE; - A transfirmaçãi mais cimum é em um JOIN;
SQL> CONN HR/HRSQL> ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';SQL> SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM DEPARTMENTS);
Subquery Unnestng
![Page 169: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/169.jpg)
169
Subquery Unnestng + JE
O tpldno �e. e.xe.csução utlizd qudid tdb.e.ldd?
![Page 170: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/170.jpg)
170
Execute os SELECTs abaixo, e compare os Planos de Execução.SQL> CONN HR/HRSQL> SET AUTOTRACE TRACEONLY EXPLAIN
SQL> SELECT OUTER.EMPLOYEE_ID, OUTER.LAST_NAME, OUTER.SALARY, OUTER.DEPARTMENT_ID FROM EMPLOYEES OUTERWHERE OUTER.SALARY > (SELECT AVG(INNER.SALARY) FROM EMPLOYEES INNER WHERE INNER.DEPARTMENT_ID = OUTER.DEPARTMENT_ID);
SQL> SELECT OUTER.EMPLOYEE_ID, OUTER.LAST_NAME, OUTER.SALARY, OUTER.DEPARTMENT_ID FROM EMPLOYEES OUTERWHERE OUTER.SALARY > (SELECT /*+ NO_UNNEST */ AVG(INNER.SALARY) FROM EMPLOYEES INNER WHERE INNER.DEPARTMENT_ID = OUTER.DEPARTMENT_ID);
SQL> SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM DEPARTMENTS);SQL> SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT /*+ NO_UNNEST */ DEPARTMENT_ID FROM DEPARTMENTS);
Lab 7.2: Subquery Unnestng
![Page 171: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/171.jpg)
171
Execute o SELECT abaixo, e encontre no arquivo trace o Subquery Unnestng.SQL> CONN HR/HRSQL> ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';SQL> SELECT
OUTER.EMPLOYEE_ID,OUTER.LAST_NAME,OUTER.SALARY,OUTER.DEPARTMENT_IDFROM EMPLOYEES OUTER
WHERE OUTER.SALARY > (SELECT AVG(INNER.SALARY)
FROM EMPLOYEES INNERWHERE INNER.DEPARTMENT_ID = OUTER.DEPARTMENT_ID);
Lab 7.3: Subquery Unnestng
![Page 172: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/172.jpg)
172
Lab 7.4: Subquery Unnestng
![Page 173: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/173.jpg)
173
- Cintrile: Hints PUSH_PRED / NO_PUSH_PRED; - Geralmente utlizadi para aplicar is predicadis de um Query Blick em iutri Query Blick, quandi nãi pide icirrer uma transfirmaçãi de Merging, para permitr a utlizaçãi de um índice e filtrar mais cedi ni plani de execuçãi.
Predicate Pusling
![Page 174: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/174.jpg)
174
Execute o SELECT abaixo, e encontre no arquivo trace o Predicate Pusling.SQL> CONN HR/HRSQL> ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';SQL> SELECT E1.LAST_NAME, E1.SALARY, V.AVG_SALARY FROM EMPLOYEES E1, (SELECT DEPARTMENT_ID, AVG(SALARY) AVG_SALARY FROM EMPLOYEES E2 GROUP BY DEPARTMENT_ID) V WHERE E1.DEPARTMENT_ID = V.DEPARTMENT_ID AND E1.SALARY > V.AVG_SALARY AND E1.DEPARTMENT_ID = 60;
Lab 7.5: Predicate Pusling
E csom. D/EPARTMENT_ID/ IN (20,40,60)?
![Page 175: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/175.jpg)
175
DBMS_SQLTUNE
![Page 176: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/176.jpg)
176
DBMS_SQLTUNE
![Page 177: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/177.jpg)
177
Lab 8.1: DBMS_SQLTUNE
SQL> CONN SCOTT/TIGERSQL> CREATE TABLE T8 AS SELECT * FROM ALL_OBJECTS;SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T8;SQL> SELECT SQL_ID FROM V$SQL WHERE SQL_TEXT LIKE ‘%T8%’;
Execute o SQL_TUNE nos SQLs analizados.SQL> CONN / AS SYSDBASQL> DECLARE RET_VAL VARCHAR2(4000);BEGIN
RET_VAL := DBMS_SQLTUNE.CREATE_TUNING_TASK(SQL_ID => '3a7wvqqf1tsun', SCOPE => DBMS_SQLTUNE.SCOPE_COMPREHENSIVE, TIME_LIMIT => 60, TASK_NAME => 'Portilho Tuning Task', DESCRIPTION => 'Portilho Tuning Task');
END;/
SQL> EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK('Portilho Tuning Task');
SQL> SET LONG 9000SQL> SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('Portilho Tuning Task') FROM DUAL;SQL> SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK('Portilho Tuning Task') FROM DUAL;
Remova o SQL_TUNE executado, após executar a correção.SQL> EXEC DBMS_SQLTUNE.DROP_TUNING_TASK('Portilho Tuning Task');
![Page 178: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/178.jpg)
178
Join Metlods & Optons
![Page 179: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/179.jpg)
179
Join Metlods• Nested Liips• Hash Jiins• Sirt-merge Jiins
Driving Table (maiir / OUTER / BUILD / PK / UNIQUE) / Pribe Table (menir / INNER):
A silent movie on joinshtps://www.yiutube.cim/watch?v=-ldqQY5XiKg
![Page 180: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/180.jpg)
180
Join Optons• Inner Jiin• Outer Jiin• Criss Jiin / Cartesian Jiins• Semi-Jiin• Ant-Jiin
![Page 181: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/181.jpg)
181
Nested Loops• É um LOOP dentri de um LOOP.• É mais eficiente cim pequenis Result Sets;• Geralmente icirre quandi há índices nas cilunas utlizadas peli Jiin;• Utliza piuca memória, piis i Result Set é cinstruídi uma linha pir vez;• HINT: /*+ leading(ORDER_ITENS ORDERS) use_nl(ORDERS) index(ORDERS(ORDER_ID)) */• HINT: /*+ leading(ORDERS ORDER_ITENS) use_nl(ORDER_ITENS)
index(ORDER_LINES(ORDER_ID)) */
![Page 182: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/182.jpg)
182
Nested Loops
SQL> SELECT EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10);
SQL> SELECT EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10,20);SQL> SELECT EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
Por que Rows = 5?SELECT COUNT(*) FROM EMP / SELECT COUNT(DISTINCT(DEPTNO)) FROM EMP;
![Page 183: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/183.jpg)
183
Nested LoopsSQL> CONN SCOTT/TIGER
SQL> SET AUTOTRACE ON EXPLAINSQL> SELECT EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10);SQL> SELECT /*+ leading(DEPT EMP) use_nl(EMP) */ EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10);SQL> SELECT /*+ leading(EMP DEPT) use_nl(DEPT) */ EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10);
SQL> SET AUTOTRACE OFFSQL> SELECT /*+ GATHER_PLAN_STATISTICS */ EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10);SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
![Page 184: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/184.jpg)
184
Sort-Merge Joins
![Page 185: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/185.jpg)
185
Sort-Merge Joins• Lê as duas tabelas de firma independente, irdena, e junta is Result Sets, descartandi linhas
que nãi cimbinam;• Geralmente é utlizadi para Result Sets maiires, e quandi nãi há índices;• Geralmente é utlizadi quandi é uma iperaçãi de desigualdade;• O maiir custi é a irdenaçãi;• Piderá ser utlizada apenas PGA, iu pide ser necessárii TEMP;• HINTs: USE_MERGE / NO_USE_MERGE
SQL> SELECT EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO NOT IN (10);
![Page 186: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/186.jpg)
186
Hasl Joins● Só icirre em equi-jiins;● Geralmente é utlizadi para grandes Result Sets;● Geralmente é utlizadi se i menir Result Set cabe em memória;● A tabela cim i menir Result Set é lida e armazenada em memória cimi um HASH;● Em seguida a iutra tabela (maiir Result Set) é lida, é aplicadi i HASH, e entãi cimparada cim a menir;● Piderá ser utlizada apenas PGA, iu pide ser necessárii TEMP;
![Page 187: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/187.jpg)
187
Hasl Joins
![Page 188: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/188.jpg)
188
Hash Joins
SQL> CONN SCOTT/TIGERSQL> SET AUTOTRACE TRACEONLY EXPLAIN
SQL> SELECT T1.ID, T2.NAME FROM T1, T2 WHERE T1.ID = T2.ID;SQL> SELECT /*+ USE_HASH (T1 T2) */ T1.ID, T2.NAME FROM T1, T2 WHERE T1.ID = T2.ID;SQL> SELECT /*+ USE_MERGE (T1 T2) */ T1.ID, T2.NAME FROM T1, T2 WHERE T1.ID = T2.ID;SQL> SELECT /*+ USE_NL (T1 T2) */ T1.ID, T2.NAME FROM T1, T2 WHERE T1.ID = T2.ID;
![Page 189: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/189.jpg)
189
Cartesian Joins / Cross Joins● Geralmente trata-se da ausência de cindiçãi di Jiin (DISTINCT!);● O tamanhi di resultadi é i priduti dis diis Result Sets;● Piderá ser utlizada apenas PGA, iu pide ser necessárii TEMP.
O BUFFER SQORT �e. um. Cdrate.didn Join não é um. SQORT.
![Page 190: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/190.jpg)
190
Cartesian Joins / Cross Joins
SQL> SELECT T1.ID, T2.NAME FROM T1, T2 WHERE T1.ID = T2.ID;
![Page 191: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/191.jpg)
191
Outer Joins● Sintaxe Oracle: (+);● A sintaxe Oracle nãi supirta FULL OUTER JOIN;● Sintaxe ANSI: LEFT [OUTER] JOIN / RIGHT [OUTER] JOIN;● Um OUTER JOIN pide utlizar qualquer métidi de JOIN;● 12c: Mult-table LEFT OUTER JOIN.
![Page 192: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/192.jpg)
192
Semi-Joins (IN)● Cintrile: HINTs SEMIJOIN, NO_SEMIJOIN, NL_SJ, MERGE_SJ, HASH_SJ● Uma itmizaçãi de INNER JOIN, de custi menir;● Utlizadi em listas IN iu EXISTS;● É necessárii utlizar uma Subquery;● Se fir utlizadi EXISTS, é necessárii utlizar uma Cirrelated Subquery;● As cláusulas IN iu EXISTS nãi pidem estar dentri de um OR.
SQL> CONN HR/HRSQL> SELECT DEPARTMENT_NAME
FROM DEPARTMENTS DEPT WHERE DEPARTMENT_ID IN
(SELECT DEPARTMENT_ID FROM HR.EMPLOYEES EMP);
![Page 193: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/193.jpg)
193
Semi-Joins (EXISTS)
SQL> CONN HR/HRSQL> SELECT DEPARTMENT_NAME
FROM DEPARTMENTS DEPT WHERE EXISTS
(SELECT NULLFROM HR.EMPLOYEES EMPWHERE EMP.DEPARTMENT_ID = DEPT.DEPARTMENT_ID);
![Page 194: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/194.jpg)
194
Ant-Joins (NOT IN)● Uma itmizaçãi de INNER JOIN, de custi menir;● Utlizadi em listas NOT IN iu NOT EXISTS;● É necessárii utlizar uma Subquery;● Se fir utlizadi NOT EXISTS, é necessárii utlizar uma Cirrelated Subquery;● As cláusulas NOT IN iu NOT EXISTS nãi pidem estar dentri de um OR;● A Subquery nãi pide retirnar NULL (<=10g) (SNA).● Cintrile: HINTs ANTIJOIN, NL_AJ, MERGE_AJ, HASH_AJ● Cintrile: Parâmetris _always_ant, _gs_ant_semi_jiin_alliwed, _iptmizer_null_aware_antjiin, _iptmizer_iuter_ti_ant_enabled
![Page 195: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/195.jpg)
195
Ant-Joins (NOT IN)
SQL> SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID NOT IN
(SELECT DEPARTMENT_IDFROM DEPARTMENTSWHERE LOCATION_ID = 1700)ORDER BY LAST_NAME;
![Page 196: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/196.jpg)
196
Anti-Joins (NOT EXISTS)
SQL> SELECT DEPARTMENT_NAME FROM DEPARTMENTS DEPT WHERE NOT EXISTS
(SELECT NULLFROM EMPLOYEES EMPWHERE EMP.DEPARTMENT_ID = DEPT.DEPARTMENT_ID);
![Page 197: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/197.jpg)
197
Bloom Filters● Cintrile: HINTs PX_JOIN_FILTER, NO_PX_JOIN_FILTER;● Utliza piuca memória para i filtri em relaçãi di cinjunti de dadis;● É mais utlizadi quandi a maiiria das linhas sãi descartadas em um JOIN;● Reduz a quantdade de dadis transferidis entre pricessis paralelis;● É mais utlizadi se mais partções firem eliminadas pir Parttin Pruning;● Pide utlizar Result Cache;● É utlizadi em Exatada, especialmente em JOINs em STAR SCHEMAs.
![Page 198: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/198.jpg)
198
Partton-wise Joins● Ni parttin-wise jiin
![Page 199: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/199.jpg)
199
Partton-wise Joins● Full parttin-wise jiin● Partal parttin-wise jiins
![Page 200: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/200.jpg)
200
Índices
![Page 201: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/201.jpg)
201
● B-tree● Bitmap● Bitmap Jiin● IOT (Index-Organized Table)● Functin-Based● Bitmap Functin-Based● Reverse Key● Invisible Indexes (11g / OPTIMIZER_USE_INVISIBLE_INDEXES)● Virtual Indexes (_use_nisegment_indexes)● Parttined Indexes● Partal Indexes (12c)● Dimain Indexes● Cimpressed● Ascending / Descending● Table Clusters
Índices
![Page 202: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/202.jpg)
202
Bitmap JoinSQL> CREATE BITMAP INDEX cust_sales_bji
ON sales(customers.state)FROM sales, customersWHERE sales.cust_id = customers.cust_id;
IOTCREATE TABLE locations
(id NUMBER(10) NOT NULL, description VARCHAR2(50) NOT NULL, map BLOB, CONSTRAINT pk_locations PRIMARY KEY (id))ORGANIZATION INDEX TABLESPACE iot_tablespacePCTTHRESHOLD 20INCLUDING descriptionOVERFLOW TABLESPACE overflow_tablespace;
ReverseCREATE INDEX bowie_reverse_idx ON bowie(id) REVERSE;
Índices
![Page 203: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/203.jpg)
203
InvisibleSQL> ALTER INDEX IDX_T INVISIBLE;SQL> ALTER INDEX IDX_T VISIBLE;
VirtualSQL> CREATE INDEX IDX_T ON T(OBJECT_NAME) NOSEGMENT;
Functon BasedSQL> CREATE INDEX IDX_T ON T(UPPER(OBJECT_NAME));
Partal Index (12c)SQL> ALTER TABLE T1 MODIFY PARTITION ANO_2014 INDEXING OFF;SQL> CREATE INDEX T1_IDX ON T1(YEAR) LOCAL;SQL> CREATE INDEX T1_IDX ON T1(YEAR) LOCAL INDEXING FULL;SQL> CREATE INDEX T1_IDX ON T1(YEAR) LOCAL INDEXING PARTIAL;SQL> CREATE INDEX T1_IDX ON T1(YEAR) GLOBAL;SQL> CREATE INDEX T1_IDX ON T1(YEAR) GLOBAL INDEXING FULL;SQL> CREATE INDEX T1_IDX ON T1(YEAR) GLOBAL INDEXING PARTIAL;
Índices
![Page 204: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/204.jpg)
204
• Utlize se as tabelas sãi frequentemente utlizadas em JOINs (NF e ITEM_NF);• Utlize se as tabelas sifrem mais JOINs di que iperações DML;• Evite se é utlizadi FTS de apenas uma das tabelas;• Evite para linhas largas (PEDIDO_NOTA_FISCAL cim OBS);• Evite se i númeri de linhas nas chaves das duas tabelas é muiti diferente.
Índices - Table Clusters
![Page 205: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/205.jpg)
205
Índices e Access Patls
![Page 206: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/206.jpg)
206
Índices e Access Patls
![Page 207: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/207.jpg)
207
Geral● Cintrile: HINTs INDEX, INDEX_COMBINE, NO_INDEX, FULL;● Crie índices em cilunas utlizadas na cláusula WHERE;● Crie índices em cilunas utlizadas em JOINs;● Crie índices em cilunas de alta seletvidade;● Crie índices em cilunas de baixa seletvidade mas que cintenham dadis cim seletvidades muiti distntas;● Prefira índices PRIMARY KEY, se i mideli permitr;● Prefira índices UNIQUE, se i mideli permitr, mas PRIMARY KEY nãi é pissível;● Crie índices cimpistis em cilunas utlizadas frequentemente na mesma cláusula WHERE;● Em índices cimpistis, utlize as cilunas cim maiir seletvidade à esquerda;● Se um valir de uma ciluna indexada nãi fir utlizadi em uma cláusula WHERE, verifique se este valir pide ser tricadi para NULL;● Busque sempre minimizar a quantdade de índices de uma tabela;● Cinsidere i espaçi utlizadi pir um índice (60% - 40%).
Índices - Guidelines
![Page 208: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/208.jpg)
208
DML● Crie índices em Fireign Keys (FKs) que sifrem DML de firma cincirrente;● Evite índices em cilunas que sifrem muitis UPDATEs;● Evite índices em tabelas que sifrem muitis INSERTs iu DELETEs.
Tipos● Prefira índices BTREE em cilunas de alta seletvidade (CPF, NF);● Prefira índices BITMAP em cilunas de baixa seletvidade (ESTADO, CIDADE);● Evite índices em cilunas utlizadas em cláusula WHERE apenas cim funções;● Prefira índices BITMAP para grandes tabelas;● Evite índices BITMAP em cilunas que sifrem muiti DML, principalmente de firma
cincirrente;● Prefira partções HASH em índices pequenis que sifrem DML em alta cincirrência;● Utlize IOTs em PKs frequentemente utlizadas na cláusula WHERE;● Utlize Functin Based Index em cilunas utlizadas em cláusula WHERE mais frequentemente
cim funções;● Utlize índices REVERSE em cilunas que sifrem DML em alta cincirrência;● Se um valir de uma ciluna indexada utlizadi em uma cláusula WHERE fir rari, cinsidere um Functin Based Index:
CREATE INDEX IDX_ORDER_NEWON ORDERS(CASE STATUS WHEN 'N' THEN 'N' ELSE NULL END);
Índices - Guidelines
![Page 209: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/209.jpg)
209
BITMAP x BTREE
SQL> SELECT COUNT(*) FROM T4; - - 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 210: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/210.jpg)
210
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 211: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/211.jpg)
211
Lab 9.1: DML e BITMAP Index
1a Sessão:SQL> CREATE BITMAP INDEX IDX_BITMAP_T314 ON T314(C1);
SQL> INSERT INTO T314 VALUES (1);
SQL> COMMIT;
SQL> INSERT INTO T314 VALUES (1);
SQL> COMMIT;
SQL> INSERT INTO T314 VALUES (1);
SQL> INSERT INTO T314 VALUES (10);
2a Sessão:
SQL> INSERT INTO T314 VALUES (10);
SQL> COMMIT;
SQL> INSERT INTO T314 VALUES (1);
COMMIT;
SQL> INSERT INTO T314 VALUES (10);
SQL> INSERT INTO T314 VALUES (1);
![Page 212: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/212.jpg)
212
Lab 9.2: Impacto de Índices
Execute novamente o mellor script de INSERT, mas com a adição de índices como abaixo.$ cd /home/oracle$ time perl ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000$ time perl ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000$ time perl ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000
SQL> DROP INDEX IDX_BITMAP_T314;SQL> CREATE INDEX IDX_BTREE_T314 ON T314(C1);$ time perl ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000$ time perl ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000$ time perl ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000
SQL> DROP INDEX IDX_BTREE_T314;$ time perl ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000$ time perl ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000$ time perl ConnectGOOD_CommitGOOD_BindsGOOD_PERFECT.pl 10000
![Page 213: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/213.jpg)
213
Com o usuário SCOTT, crie uma tabela de testes, e verifque o tempo de sua duplicação.SQL> CREATE TABLE T91 AS SELECT * FROM ALL_OBJECTS;SQL> INSERT INTO T91 SELECT * FROM T91;SQL> INSERT INTO T91 SELECT * FROM T91;SQL> INSERT INTO T91 SELECT * FROM T91;SQL> INSERT INTO T91 SELECT * FROM T91;SQL> COMMIT;
SQL> CREATE TABLE T92 AS SELECT * FROM T91 WHERE 1=0;SQL> SET TIMING ON
SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;
Lab 9.3: Impacto de Índices
![Page 214: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/214.jpg)
214
Verifque o tempo de sua duplicação, mas com índices.SQL> CREATE INDEX T92_IDX_01 ON T92(OWNER);SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;
SQL> CREATE INDEX T92_IDX_02 ON T92(OBJECT_NAME);SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;
Lab 9.4: Impacto de Índices
![Page 215: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/215.jpg)
215
Verifque o tempo de sua duplicação, mas um índice composto.SQL> DROP INDEX T92_IDX_01;SQL> DROP INDEX T92_IDX_02;SQL> CREATE INDEX T92_IDX_03 ON T92(OWNER,OBJECT_NAME);SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;SQL> INSERT INTO T92 SELECT * FROM T91;SQL> TRUNCATE TABLE T92;
Lab 9.5: Impacto de Índices
![Page 216: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/216.jpg)
216
Verifque o uso dos índices.SQL> CONN SCOTT/TIGERSQL> DROP INDEX T92_IDX_03;SQL> INSERT INTO T92 SELECT * FROM T91;SQL> CREATE INDEX T92_IDX_01 ON T92(OWNER);SQL> CREATE INDEX T92_IDX_02 ON T92(OBJECT_NAME);SQL> ALTER INDEX T92_IDX_01 MONITORING USAGE;SQL> ALTER INDEX T92_IDX_02 MONITORING USAGE;
SQL> COL INDEX_NAME FORMAT A40SQL> SELECT INDEX_NAME, MONITORING, USED FROM V$OBJECT_USAGE;SQL> SELECT * FROM T92 WHERE OWNER = 'SCOTT';SQL> SELECT COUNT(*) FROM T92 WHERE OWNER = 'SYS';SQL> SELECT COUNT(*) FROM T92 WHERE OWNER = 'SYSTEM';SQL> SELECT INDEX_NAME, MONITORING, USED, START_MONITORINGFROM V$OBJECT_USAGE;
Problemas a se considerar ao remover índices: - Nãi está utlizandi i índice, mas deveria utlizar; - Após i DROP, nãi é utlizadi iutri índice; - Usi da seletvidade em índices cimpistis, mesmi sem utlizar a ciluna; - FKs (Enqueue TM).
Lab 9.6: Impacto de Índices
![Page 217: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/217.jpg)
217
Estatstcas
![Page 218: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/218.jpg)
218
Optmizer StatstcsTable statstcs
Number if riwsNumber if blicksAverage riw length
Cilumn statstcsNumber if distnct values (NDV) in cilumnNumber if nulls in cilumnData distributin (histigram)Extended statstcs
Index statstcsNumber if leaf blicksAverage data blicks per KeyLevelsIndex clustering factir
System StatstcsI/O perfirmance and utlizatinCPU perfirmance and utlizatin
Estatstcas e SQL Engine
![Page 219: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/219.jpg)
219
Estatstcas - 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 220: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/220.jpg)
220
Estatstcas - Í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 221: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/221.jpg)
221
Estatstcas - 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 222: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/222.jpg)
222
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 223: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/223.jpg)
Quando coletar? Coleta automátca
![Page 224: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/224.jpg)
Quando coletar? Coleta automátca
![Page 225: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/225.jpg)
Quando coletar? Coleta automátca
![Page 226: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/226.jpg)
Quando coletar? OPTIMIZER_DYNAMIC_SAMPLING
Nível 0 = Nãi há cileta.Nível 1 = Cileta 32 blicis.
Se há peli menis 1 tabela partciinada ni SQL sem estatstcas.Se esta tabela nãi tem índices.Se esta tabela tem mais que 64 blicis.
Nível 2 = Cileta 64 blicis.Cileta se há peli menis uma tabela di SQL sem estatstcas.
Nível 3 = Cileta 64 blicis.Cileta se i Nível 2 é atendidi OU se é utlizada expressãi ni WHERE.
Nível 4 = Cileta 64 blicis.Cileta se i nível 3 é atendidi OU se i SQL utliza AND iu OR entre múltplis predicadis.
Nível 5 = Cileta 128 blicis.Cileta se i nível 4 é atendidi.
Nível 6 = Cileta 256 blicis.Cileta se i nível 4 é atendidi.
Nível 7 = Cileta 512 blicis.Cileta se i nível 4 é atendidi.
Nível 8 = Cileta 1024 blicis.Cileta se i nível 4 é atendidi.
Nível 9 = Cileta 4086 blicis.Cileta se i nível 4 é atendidi.
Nível 10 = Cileta tidis is blicis.Cileta se i nível 4 é atendidi.
Nível 11 (Adaptve Dynamic Sampling: >= 11.2.0.4) = Cileta ? Blicis. Cileta quandi?
![Page 227: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/227.jpg)
227
Lab 10.1: Coleta de EstatstcasVerifque os planos de execução dos SQL abaixo.SQL> CONN SCOTT/TIGERSQL> SET AUTOTRACE ON EXPLAINSQL> SELECT ID, NAME FROM T1 WHERE ID = 1;SQL> SELECT ID, NAME FROM T2 WHERE ID = 1;SQL> SELECT ID, NAME FROM T1 WHERE ID < 5;SQL> SELECT ID, NAME FROM T2 WHERE ID < 5;SQL> SELECT ID, NAME FROM T1 WHERE ID < 10;SQL> SELECT ID, NAME FROM T2 WHERE ID < 10;
Remova as estatstcas e verifque novamente os planos de execução.SQL> EXEC DBMS_STATS.DELETE_TABLE_STATS('SCOTT','T1');SQL> EXEC DBMS_STATS.DELETE_TABLE_STATS('SCOTT','T2');
Desabilite as estatstcas dinâmicas, e verifque novamente os planos de execução.SQL> ALTER SESSION SET OPTIMIZER_DYNAMIC_SAMPLING=0;
Colete as estatstcas com os parâmetros padrão, e verifque novamente os planos de execução.SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T1');SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T2');
![Page 228: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/228.jpg)
228
Coleta de todos os objetos.SQL> EXEC DBMS_STATS.GATHER_DATABASE_STATS;SQL> EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SOE');SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SOE','CUSTOMERS');SQL> EXEC DBMS_STATS.GATHER_INDEX_STATS('SOE','CUSTOMERS_PK');
Coleta apenas de objetos EMPTY e STALE.SQL> EXEC DBMS_STATS.GATHER_DATABASE_STATS(OPTIONS=>'GATHER EMPTY');SQL> EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SOE',OPTIONS=>'GATHER EMPTY');
SQL> EXEC DBMS_STATS.GATHER_DATABASE_STATS(OPTIONS=>'GATHER STALE');SQL> EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SOE',OPTIONS=>'GATHER STALE');
228
Estatísticas: Coleta Manual
![Page 229: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/229.jpg)
Como coletar? Opções
ESTIMATE_PERCENTDBMS_STATS.AUTO_SAMPLE_SIZE / N
BLOCK_SAMPLEFALSE / TRUE
DEGREENULL / N
GRANULARITYAUTO / ALL / DEFAULT / GLOBAL / GLOBAL AND PARTITION / PARTITION / SUBPARTITION
CASCADEDBMS_STATS.AUTO_CASCADE / TRUE / FALSE
OPTIONS GATHER / GATHER AUTO / GATHER STALE / GATHER EMPTY
GATHER_SYSTRUE / FALSE
NO_INVALIDATEDBMS_STATS.AUTO_INVALIDATE / TRUE / FALSE
![Page 230: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/230.jpg)
230
Estatstcas - 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 231: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/231.jpg)
Como coletar? Histogramas
METHOD_OPTFOR ALL COLUMNS SIZE AUTOFOR ALL [INDEXED | HIDDEN] COLUMNS SIZE [N | REPEAT | AUTO | SKEWONLY]FOR COLUMNS csolum.n SIZE [N | REPEAT | AUTO | SKEWONLY]
Exemplos:FOR ALL COLUMNS SIZE 1FOR ALL COLUMNS SIZE 100FOR ALL COLUMNS SIZE AUTOFOR ALL COLUMNS SIZE REPEATFOR ALL COLUMNS SIZE SKEWONLYFOR ALL INDEXED COLUMNS SIZE 1FOR ALL INDEXED COLUMNS SIZE 100FOR ALL INDEXED COLUMNS SIZE AUTOFOR ALL INDEXED COLUMNS SIZE REPEATFOR ALL INDEXED COLUMNS SIZE SKEWONLYFOR COLUMNS C1 SIZE 1FOR COLUMNS C1 SIZE 100FOR COLUMNS C1 SIZE AUTOFOR COLUMNS C1 SIZE REPEATFOR COLUMNS C1 SIZE SKEWONLY
![Page 232: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/232.jpg)
232
Lab 10.2: Coleta de EstatstcasVerifque os planos de execução dos SQL abaixo.SQL> SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE FROM T91 GROUP BY OBJECT_TYPE ORDER BY 1;SQL> CREATE INDEX IND_T91_01 ON T91(OBJECT_TYPE);SQL> EXEC DBMS_STATS.DELETE_TABLE_STATS('SCOTT','T91');SQL> SET AUTOTRACE ON EXPLAINSQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'SYNONYM';SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'PACKAGE';SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'TABLE';SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'DIRECTORY';
Habilite o Dynamic Sampling e verifque novamente os planos de execução.SQL> ALTER SESSION SET OPTIMIZER_DYNAMIC_SAMPLING=2;
Colete as estatstcas e verifque novamente os planos de execução.SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T91', METHOD_OPT=>’FOR COLUMNS OBJECT_TYPE SIZE AUTO’);SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T91', METHOD_OPT=>’FOR COLUMNS OBJECT_TYPE SIZE 10’);SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T91', METHOD_OPT=>’FOR COLUMNS OBJECT_TYPE SIZE 5’);SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T91', METHOD_OPT=>’FOR COLUMNS OBJECT_TYPE SIZE 1’);
![Page 233: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/233.jpg)
233
Frequency HistogramsUtlizados se: - Se i NDV é menir iu igual que a quantdade de Buckets indicadis na cileta (iu i máximi); - É utlizd�o AUTO_SQAMP/E_SQIZE nd e.xe.csução �d csole.td.
![Page 234: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/234.jpg)
234
Heiglt Balanced HistogramsUtlizados se: - Se i númeri de Buckets indicadis na cileta (iu i máximi) é menir que i NDV.
![Page 235: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/235.jpg)
235
Top Frequency Histograms (12c)Utlizados se: - Se i NDV é maiir que a quantdade de Buckets indicadis na cileta (iu i máximi); - É utlizadi AUTO_SAMPLE_SIZE na execuçãi da cileta; - Se i percentual de linhas icupadas pelis Tip Values é igual iu maiir que p, sendi que p = (1-(1/Buckets))*100.
![Page 236: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/236.jpg)
236
Hybrid Histograms (12c)Utlizados se: - Se i númeri de Buckets indicadis na cileta (iu i máximi) é menir que i NDV; - É utlizadi AUTO_SAMPLE_SIZE na execuçãi da cileta; - Se is critétis para Tip Frequency Histigrams nãi se aplicam.
![Page 237: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/237.jpg)
237
- Buckets: máximi de 254 / 127 (2048 ni 12c);- Frequency Histigrams;- Height-Balanced Histigrams;- Tip Frequency Histigrams (12c);- Hybrid Histigrams (12c).
Problemas: - Cilunas que nãi precisam de Histigramas; - Custi de cileta; - Sensibilidade a cileta pir SAMPLE; - Sensibilidade a mimenti da cileta (Nivis pedidis às 22:00?); - Bind Variables (pré ACS); - Frequency: Se um valir nãi está em um Bucket, será cinsiderada metade da cardinalidade di valir menis pipular; - Height-Balanced: Se um valir nãi é pipular (só está em 1 Bucket), será cinsiderada a cardinalidade = númeri de linhas nãi pipulares / númeri de valir nãi pipulares (11gR2).
http:////�ocsd.oradcsle..csom.//�dtdb.dde.//222//TGSQL///tgdql_hidto.htm.
Histogramas
![Page 238: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/238.jpg)
Como coletar?
Coleta geralEXEC DBMS_STATS.GATHER_DATABASE_STATS (ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE,BLOCK_SAMPLE=>FALSE,DEGREE=>8,GRANULARITY=>'AUTO',CASCADE=>TRUE,OPTIONS=>'GATHER EMPTY',GATHER_SYS=>FALSE,NO_INVALIDATE=>FALSE,METHOD_OPT=>'FOR ALL COLUMNS SIZE AUTO');
EXEC DBMS_STATS.GATHER_DATABASE_STATS (ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE,BLOCK_SAMPLE=>FALSE,DEGREE=>8,GRANULARITY=>'AUTO',CASCADE=>TRUE,OPTIONS=>'GATHER STALE',GATHER_SYS=>FALSE,NO_INVALIDATE=>FALSE,METHOD_OPT=>'FOR ALL COLUMNS SIZE AUTO');
![Page 239: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/239.jpg)
Como coletar?
Controle de OpçõesSQL> EXEC DBMS_STATS.SET_DATABASE_PREFS('DEGREE','2');SQL> EXEC DBMS_STATS.SET_SCHEMA_PREFS('SOE','CASCADE','TRUE');SQL> EXEC DBMS_STATS.SET_TABLE_PREFS('SOE','CUSTOMERS','STALE_PERCENT',5);
● CASCADE● DEGREE● ESTIMATE_PERCENT● GRANULARITY● INCREMENTAL● INCREMENTAL_LEVEL● INCREMENTAL_STALENESS● METHOD_OPT● NO_INVALIDATE● PUBLISH● STALE_PERCENT● TABLE_CACHED_BLOCKS● OPTIONS
![Page 240: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/240.jpg)
Como coletar?
Coleta por exceçãoEXEC DBMS_STATS.UNLOCK_TABLE_STATS('SCOTT','EMP');
EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT', 'EMP', ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE, BLOCK_SAMPLE=>FALSE, DEGREE=>16, GRANULARITY=>'PARTITION', CASCADE=>TRUE, OPTIONS=>'GATHER', NO_INVALIDATE=>FALSE, METHOD_OPT=>'FOR COLUMNS EMPNO SIZE REPEAT');
EXEC DBMS_STATS.LOCK_TABLE_STATS('SCOTT','EMP');
![Page 241: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/241.jpg)
Como coletar? Coleta de exceção
● HINT /*+ GATHER_PLAN_STATISTICS */● Parâmetri STATISTICS_LEVEL = ALL
![Page 242: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/242.jpg)
Como coletar? Coleta de exceção
SQLT (MOS 215187.1)iratip (MOS 1500864.1)
![Page 243: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/243.jpg)
Outras estatstcas
Fixed Objects Statstcs (V$SQL, V$SESSION, etc.)SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
Dictonary Statstcs (DBA_SEGMENTS, DBA_TABLES, etc.);SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
System Statstcs (CPU e I/O)SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS;
OU
SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('START');...SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('STOP');
OU
SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('EXADATA');
![Page 244: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/244.jpg)
244
Verifque e guarde os planos de execução do capítulo de JOINs.
Colete as estatstcas de sistema durante uma carga, e verifque sua alteração.SQL> SELECT * FROM SYS.AUX_STATS$;SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('START');
$ unzip -q swingbench261046.zip$ cd /home/oracle/swingbench/bin/$ ./charbench -uc 10 -cs //nerv01/PROD -c ../configs/SOE_Server_Side_V2.xml...
SQL> SELECT * FROM SYS.AUX_STATS$;SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('STOP');SQL> SELECT * FROM SYS.AUX_STATS$;
Lab 10.3: System Statstcs
![Page 245: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/245.jpg)
245
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS( 'SH','CUSTOMERS',METHOD_OPT=>'FOR ALL COLUMNS SIZE SKEWONLY ' || 'FOR COLUMNS SIZE
SKEWONLY (CUST_STATE_PROVINCE,COUNTRY_ID)');
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SH','CUSTOMERS',METHOD_OPT => 'FOR ALL COLUMNS SIZE SKEWONLY FOR COLUMNS
(LOWER(CUST_STATE_PROVINCE)) SIZE SKEWONLY');
245
Extended Statstcs – Column Groups e Expression
![Page 246: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/246.jpg)
246
Estatstcas Pendentes
![Page 247: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/247.jpg)
247
Lab 10.4: Estatstcas PendentesColete estatstcas, e verifque-as antes de publica-las.SQL> 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;
optimizer_use_pending_statistics
![Page 248: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/248.jpg)
248
Restore de Estatstcas
![Page 249: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/249.jpg)
249
Lab 10.5: Restore de EstatstcasExecute o Restore de uma estatstca anterior.SQL> CONN SCOTT/TIGERSQL> 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='T92'AND OWNER='SCOTT'ORDER BY STATS_UPDATE_TIME DESC;
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT', 'T92');
SQL> EXEC DBMS_STATS.RESTORE_TABLE_STATS( 'SCOTT','T92',TO_TIMESTAMP('2018-03-03:16:11:14','YYYY-MM-DD:HH24:MI:SS'), NO_INVALIDATE=>FALSE);
EXEC DBMS_STATS.RESTORE_SCHEMA_STATS('SCOTT',TO_TIMESTAMP('2018-03-03:16:11:14','YYYY-MM-DD:HH24:MI:SS') );
![Page 250: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/250.jpg)
250
Transporte de Estatstcas
![Page 251: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/251.jpg)
251
Transporte de EstatstcasOrigemEXEC 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
Destno:$ impdp HR/HR DIRECTORY=dump_directory DUMPFILE=TESTE_STATS.dmp TABLES=TESTE_STATS
SQL> EXEC DBMS_STATS.IMPORT_SCHEMA_STATS(ownname => 'HR', stattab => 'TESTE_STATS');
![Page 252: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/252.jpg)
252
Otmizações
![Page 253: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/253.jpg)
253
“SQe. vocsê tpo�e. fdze.ra dlgo e.m. SQL/, fdçd-o e.m. SQL/.SQe. vocsê não tpo�e. fdze.-lo e.m. SQL/, fdçd e.m. P///SQL/.SQe. vocsê não tpo�e. fdze.-lo e.m. P///SQL/, fdçd e.m. Jdvd.SQe. vocsê não tpo�e. fdze.-lo e.m. Jdvd, fdçd e.m. C++.SQe. vocsê não tpo�e. fdze.ra e.m. C++, não o fdçd.”
Thimas Kyte
- O que. vocsê dtprae.n�e.u dob.rae. csdraraod, qudn�o dtprae.n�e.u d �iraigira? - Ludnto te.m.tpo vocsê le.vou tpdrad dtprae.n�e.ra SQL/? - Utlizdm.od dtpe.ndd cse.racsd �e. 20% �dd csdtpdcsi�d�e.d �e. um. tpraogradm.d ou lingudge.m..253
SQL ou PL/SQL?
![Page 254: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/254.jpg)
254
Rows x Sets
![Page 255: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/255.jpg)
255
Isto não representa uma tabela!
Rows x Sets
![Page 256: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/256.jpg)
256
Quais são os funcionários que ganlam mais do que a média de seu departamento.
Método procedural: - Calcule a média salarial de cada departamenti; - Armazene a média de firma tempirária; - Liste tidis is empregadis e seu departamenti; - Cimpare i salárii de cada empregadi cim a média de seu departamenti; - Liste tidis is empregadis que tem i salárii acima da média.
Método por conjunto:SELECT * FROM EMP EMP1WHERE SAL > (SELECT AVG(EMP2.SAL)
FROM EMP EMP2WHERE EMP2.DEPTNO = EMP1.DEPTNO);
Rows x Sets
![Page 257: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/257.jpg)
257
Quais os empregados que passaram a mesma quantdade de anos em cada cargo ocupado?
Método procedural: - Listar tidis is empregadis; - Listas tidis is cargis, data inicial e final destes empregadis, calculandi a quantdade de anis; - Armazenar estes dadis em firmati tempirárii; - Para cada empregadi, verificar se tidis as quantdades de anis sãi iguais; - Descartar is empregadis que nãi pissuem tidas as quantdade de anis iguais.
Método por conjunto:SELECT EMPLOYEE_ID
FROM JOB_HISTORYGROUP BY EMPLOYEE_ID
HAVINGMIN(ROUND(MONTHS_BETWEEN(START_DATE, END_DATE) / 12,0)) =MAX(ROUND(MONTHS_BETWEEN(START_DATE, END_DATE) / 12,0)
Rows x Sets
![Page 258: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/258.jpg)
258
Qual a quantdade média de dias entre os pedidos de um cliente?
Método procedural: - Liste tidis is pedidis di cliente X; - Seleciine is pedidis e suas datas; - Para cada pedidi, seleciine a data di pedidi anteriir; - Calcule qual a quantdade de dias entre a data di pedidi e a data anteriir; - Calcule a média destas quantdades.
Método por conjunto:SELECT
(MAX(TRUNC(ORDER_DATE)) - MIN(TRUNC(ORDER_DATE))) / COUNT(ORDER_ID)FROM ORDERSWHERE CUSTOMER_ID = 102 ;
Rows x Sets
![Page 259: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/259.jpg)
259
Crie uma tabela com os clientes pequenos, outra com os clientes médios, e outra com os clientes grandes.
Método procedural: - Seleciinar is clientes que cimpraram menis de 10000; - Inseri-lis na tabela SMALL_CUSTOMERS; - Seleciinar is clientes que cimpraram entre 10000 e 99999; - Inseri-lis na tabela MEDIUM_CUSTOMERS; - Seleciinar is clientes que cimpraram mais de 100000; - Inseri-lis na tabela LARGE_CUSTOMERS;
Método por conjunto:INSERT ALL
WHEN SUM_ORDERS < 10000 THEN INTO SMALL_CUSTOMERSWHEN SUM_ORDERS >= 10000 AND SUM_ORDERS < 100000 THEN INTO
MEDIUM_CUSTOMERSELSE INTO LARGE_CUSTOMERSSELECT CUSTOMER_ID, SUM(ORDER_TOTAL) SUM_ORDERS
FROM OE.ORDERSGROUP BY CUSTOMER_ID;
Rows x Sets
![Page 260: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/260.jpg)
260
Altere o bônus para 20% de quem é candidato mas ainda não tem bônus, remova de quem ganla mais de 7.500, e marque como 10% o bônus de quem ainda não é candidato mas recebe menos que 7.500.
Método procedural: - Seleciine is empregadis que devem receber a alteraçãi de 20%; - Faça a alteraçãi dis empregadis que devem receber a alteraçãi de 20%; - Seleciine is empregadis que devem receber a alteraçãi de 10%; - Faça a alteraçãi dis empregadis que devem receber a alteraçãi de 10%; - Seleciine is empregadis que nãi devem mais ser candidatis a bônus; - Remiva is empregadis que nãi devem mais ser candidatis a bônus.
Método por conjunto:MERGE INTO BONUS_DEPT60 B
USING (SELECT EMPLOYEE_ID, SALARY, DEPARTMENT_IDFROM EMPLOYEES WHERE DEPARTMENT_ID = 60) E
ON (B.EMPLOYEE_ID = E.EMPLOYEE_ID)WHEN MATCHED THEN
UPDATE SET BONUS = E.SALARY * 0.2 WHERE B.BONUS = 0DELETE WHERE (E.SALARY > 7500)
WHEN NOT MATCHED THENINSERT (B.EMPLOYEE_ID, B.BONUS)
VALUES (E.EMPLOYEE_ID, E.SALARY * 0.1)WHERE (E.SALARY < 7500);
Rows x Sets
![Page 261: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/261.jpg)
261
● Menis é mais.● A qualidade di trabalhi di CBO é inversamente pripirciinal ai tamanhi di SQL.● O CBO pide ser beneficiadi pir CONSTRAINTs em SELECTs (Query Transfirmatin).● Evite funções na cláusula WHERE.● Evite DISTINCT, se pissível.● Evite ORDER BY, se pissível.● Prefira UNION ALL a UNION, se pissível.● SELECT COL1, COL2 … ai invés de SELECT * … irá ecinimizar SQL*Net e PGA.● Pricure reduzir i tamanhi di SQL (Shared Piil).● Prefira SQL, se lhe atender.● Stired Pricedures pidem reduzir tráfegi de rede.● Stired Pricedures firçam i usi de BINDs.● Evite tricar entre PL/SQL e SQL (cintext switch).● Evite acessi desnecessárii a DUAL (iperações aritmétcas, SEQUENCEs).● Em PL/SQL, evite Riw-by-Riw.● Em PL/SQL, evite Nested Riw-by-Riw.● Utlize variáveis BIND em SQLs repettvis.● Variáveis BINDs impedem SQL Injectin.● Nãi utlize Binds se i tempi tital de cimpilaçãi nãi fir relevante quanti ai tempi tital de respista.● Utlize CACHE em Sequences, se pissível (em RAC, adiciine NOORDER, se pissível).
Otmizações Gerais
![Page 262: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/262.jpg)
262
● A maneira mais rápida de se fazer um grande UPDATE / DELETE é nãi fazer. Faça CTAS.● Em alterações em lite, desabilite as CONSTRAINTs, se pissível.● Em alterações em lite, remiva is índices, se pissível.● Em alterações em lite, cinsidere i PARALLELISM.● Em INSERT em lite, cinsidere i usi APPEND (Direct Path).● TRUNCATE nãi gera REDO e UNDO, nãi dispara Triggers, e abaixa a HWM.● Cinheça BULK BINDING (LOOP cim FORALL).● Cinheça INSERT cim BULK COLLECT.● Cinheça INSERT cim Pipelined Table Functin● Estude i SQL*Liader / External Tables.● Trique UTL_FILE pir EXTERNAL TABLES.● Em geral, Segurança (Auditiria, Criptigrafia, etc.) prejudica Desempenhi.● Evite WHERE CAMPO LIKE 'A%' em cilunas de baixa seletvidade.● Evite mais ainda WHERE CAMPO LIKE '%A%'.● Se precisar utlizar LIKE '%A%', implemente Oracle Text.● Estude a funçãi MERGE.● Estude a Cláusula WITH.● Estude as Funções Analítcas.● Estude Queries Hierárquicas (CONNECT BY).● Cinsidere Materialized Views.● Evite i abusi de VIEWs, TRIGGERs, DBLINKs.
Otmizações Gerais
![Page 263: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/263.jpg)
263
Crie uma tabela de testes, e execute uma gravação, com parâmetros diferentes.SQL> CONN SCOTT/TIGERSQL> CREATE TABLE T111 AS SELECT * FROM ALL_OBJECTS WHERE 1=0;
SQL> SET AUTOTRACE TRACEONLY STATISTICSSQL> INSERT INTO T111 SELECT * FROM ALL_OBJECTS;SQL> INSERT INTO T111 SELECT * FROM ALL_OBJECTS;SQL> INSERT INTO T111 SELECT * FROM ALL_OBJECTS;
SQL> INSERT /*+ APPEND */ INTO T111 SELECT * FROM ALL_OBJECTS;SQL> INSERT /*+ APPEND */ INTO T111 SELECT * FROM ALL_OBJECTS;O que aconteceu?SQL> INSERT /*+ APPEND */ INTO T111 SELECT * FROM ALL_OBJECTS;
SQL> ALTER TABLE T111 NOLOGGING;SQL> INSERT /*+ APPEND */ INTO T111 SELECT * FROM ALL_OBJECTS;SQL> INSERT /*+ APPEND */ INTO T111 SELECT * FROM ALL_OBJECTS;SQL> INSERT /*+ APPEND */ INTO T111 SELECT * FROM ALL_OBJECTS;
Qual a diferença exibida pelo SET AUTOTRACE TRACEONLY STATISTICS?
Lab 11.1: Append e Redo
![Page 264: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/264.jpg)
264
Permite Query, DML e DDL.
Quantos processos de paralelismo utlizar?
Um objeto pode ter Parallel permanente, independente do SQL:SQL> ALTER TABLE SCOTT.T PARALLEL 4;
SQL> ALTER SESSION FORCE PARALLEL QUERY PARALLEL 5;SQL> ALTER SESSION FORCE PARALLEL DML PARALLEL 5;SQL> ALTER SESSION FORCE PARALLEL DDL PARALLEL 5;
O Parallel SQL pode ser utlizado diretamente no SQL:SQL> SELECT /*+ PARALLEL(T2 4) */ COUNT(*) FROM T2;SQL> SELECT /*+ PARALLEL(T2 4,2) */ COUNT(*) FROM T2;
Paralelismo
![Page 265: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/265.jpg)
265
Parâmetros:PARALLEL_MIN_SERVERS = Númeri entre 0 e PARALLEL_MAX_SERVERS.PARALLEL_MAX_SERVERS = De 0 a 3600.PARALLEL_MIN_PERCENT = De 0 a 100.
PARALLEL_DEGREE_POLICY = MANUAL, LIMITED iu AUTO.PARALLEL_MIN_TIME_THRESHOLD = AUTO | Segundis. PARALLEL_ADAPTIVE_MULTI_USER = true iu false.PARALLEL_DEGREE_LIMIT = CPU, IO iu Númeri.PARALLEL_SERVERS_TARGET = Númeri entre 0 e PARALLEL_MAX_SERVERS.PARALLEL_THREADS_PER_CPU = Qualquer númeri.
PARALLEL_EXECUTION_MESSAGE_SIZE = De 2148 a 32768PARALLEL_FORCE_LOCAL = true iu false.PARALLEL_INSTANCE_GROUP = Oracle RAC service_name iu griup_name.
PARA//E/_AUTOMATIC_TUNING: D/e.tprae.csdte.�.PARA//E/_IO_CAP_ENAB/ED/ = D/e.tprae.csdte.�.
Paralelismo
![Page 266: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/266.jpg)
266
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 267: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/267.jpg)
267
Abra a sessão com o SCOTT com SET TIMING ON.Em seguida, faça o teste do PARALLEL.SQL> CONN SCOTT/TIGERSQL> CREATE TABLE T112 AS SELECT * FROM ALL_OBJECTS;7 x SQL> INSERT INTO T112 SELECT * FROM T112;SQL> COMMIT;
Repita a operação com PARALLEL, e compare.SQL> SET TIMING ONSQL> SELECT COUNT(*) FROM T112;SQL> SELECT /*+ PARALLEL(T112 4) */ COUNT(*) FROM T112;SQL> SELECT /*+ PARALLEL(T112 20) */ COUNT(*) FROM T112;SQL> SELECT /*+ PARALLEL(T112 40) */ COUNT(*) FROM T112;
Qual a diferença exibida pelo SET TIMING ON?
Lab 11.2: Paralelismo
![Page 268: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/268.jpg)
268
Execute o teste do RESULT_CACHE.SQL> CONN SCOTT/TIGER
SQL> SET TIMING ONSQL> SET AUTOTRACE ONSQL> SELECT COUNT(*) FROM T112;SQL> SELECT COUNT(*) FROM T112;SQL> SELECT COUNT(*) FROM T112;SQL> SELECT /*+ RESULT_CACHE */ COUNT(*) FROM T112;SQL> SELECT /*+ RESULT_CACHE */ COUNT(*) FROM T112;SQL> SELECT /*+ RESULT_CACHE */ COUNT(*) FROM T112;
SQL> DELETE FROM T112 WHERE ROWNUM = 1;SQL> SELECT /*+ RESULT_CACHE */ COUNT(*) FROM T112;SQL> SELECT /*+ RESULT_CACHE */ COUNT(*) FROM T112;SQL> SELECT /*+ RESULT_CACHE */ COUNT(*) FROM T112;
Lab 11.3: RESULT_CACHE
![Page 269: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/269.jpg)
269
Compression● 9i OLAP● 11g OLTP● 12c InMemory
![Page 270: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/270.jpg)
270
Execute o teste do COMPRESSION.SQL> SET TIMING ONSQL> SELECT COUNT(*) FROM T112;SQL> SELECT COUNT(*) FROM T112;SQL> SELECT COUNT(*) FROM T112;
SQL> SELECT TO_CHAR(SUM(BYTES)) FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'T112';SQL> ALTER TABLE T112 COMPRESS;SQL> ALTER TABLE T112 MOVE;SQL> SELECT TO_CHAR(SUM(BYTES)) FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'T112';
SQL> SELECT COUNT(*) FROM T112;SQL> SELECT COUNT(*) FROM T112;SQL> SELECT COUNT(*) FROM T112;
Lab 11.4: Compression
![Page 271: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/271.jpg)
271
Execute o teste de DELETE x CTAS (CREATE TABLE AS SELECT).SQL> SELECT COUNT(*) FROM T113;SQL> SELECT COUNT(*) FROM T113 WHERE OBJECT_TYPE = 'SYNONYM';
SQL> SET TIMING ONSQL> DELETE FROM T113 WHERE OBJECT_TYPE = 'SYNONYM';SQL> ROLLBACK;
SQL> CREATE TABLE T113TEMP AS SELECT * FROM T113 WHERE OBJECT_TYPE != 'SYNONYM';SQL> DROP TABLE T113;SQL> ALTER TABLE T113TEMP RENAME TO T113;
Lab 11.5: CTAS
![Page 272: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/272.jpg)
272
Extração de Planos de Execução
![Page 273: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/273.jpg)
273
- PLAN_TABLE, carregada pir EXPLAIN PLAN / DBMS_XPLAN.DISPLAY iu AUTOTRACE (e SQL Develiper, Tiad, etc.); - VIEWs de planis cimpiladis e armazenadis na Library Cache; - Tabelas de AWR / STATSPACK; - Arquivis Trace (10046, 10053, etc.).
Fontes de Planos de Execução
![Page 274: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/274.jpg)
274
Sintaxe:EXPLAIN PLAN [SET STATEMENT_ID=id] [INTO table] FOR statement;
Exemplo:SQL> EXPLAIN PLAN SET STATEMENT_ID='TESTE1' FOR
SELECT ENAME FROM EMP;SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
Limitações do Explain Plan: - Nãi executa i SQL (AUTOTRACE TRACEONLY EXPLAIN também nãi executa). - É i Plani, nãi a Execuçãi; - Nãi utliza Bind Peeking / Adaptve Cursir Sharing (ACS); - Tidas Variáveis Bind sãi cinsideradas VARCHAR2; - Depende di ambiente de execuçãi (parâmetris, trigger de ligin?).
Recuperação de Ambiente de Execução:SQL> SELECT * FROM
TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'OUTLINE PEEKED_BINDS'));
SQL> SELECT NAME, VALUE_STRING, VALUE_ANYDATA FROM V$SQL_BIND_CAPTURE WHERE SQL_ID = 'gsd1tngqwc6q9';
SQL> SELECT NAME, VALUE FROM V$SQL_OPTIMIZER_ENVWHERE SQL_ID = '3whrvcrw7p78q' AND CHILD_NUMBER = 0AND ISDEFAULT = 'NO';
Explain Plan
![Page 275: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/275.jpg)
275
Execute os SQLs abaixo, comparando os Planos de Execução.SQL> CONN SCOTT/TIGERSQL> CREATE TABLE T121 AS SELECT * FROM ALL_OBJECTS;SQL> CREATE INDEX IDX_T121_OBJECT_ID ON T121(OBJECT_ID);
SQL> SET AUTOTRACE ON EXPLAINSQL> SELECT COUNT(OBJECT_ID) FROM T121 WHERE OBJECT_ID = 1;SQL> SELECT COUNT(OBJECT_ID) FROM T121 WHERE OBJECT_ID = '1';SQL> VARIABLE VOBJECT_ID NUMBER;SQL> EXEC :VOBJECT_ID := 1;SQL> SELECT COUNT(OBJECT_ID) FROM T121 WHERE OBJECT_ID = :VOBJECT_ID;
Lab 12.1: Explain Plan
![Page 276: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/276.jpg)
276
Execute o SQL abaixo duas vezes, comparando o Plano de Execução.$ sqlplus SCOTT/TIGERSQL> CREATE TABLE T1122 AS SELECT * FROM ALL_OBJECTS;SQL> CREATE INDEX T1122_IDX1 ON T1122(OBJECT_ID);SQL> CREATE TABLE T2122 AS SELECT * FROM ALL_OBJECTS;SQL> CREATE INDEX T2122_IDX1 ON T2122(OBJECT_ID);SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT', 'T1122');SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT', 'T2122');
SQL> SET AUTOTRACE TRACEONLY EXPLAIN
SQL> SELECT T1122.OBJECT_ID, T2122.OBJECT_NAME FROM T1122, T2122 WHERE T1122.OBJECT_ID = T2122.OBJECT_ID AND T2122.OBJECT_TYPE = 'SYNONYM' AND T1122.OBJECT_ID BETWEEN 1000 and 10000;
SQL> VARIABLE vSTART NUMBERSQL> VARIABLE vEND NUMBERSQL> EXEC :vSTART := 1000SQL> EXEC :vEND := 10000SQL> SELECT T1122.OBJECT_ID, T2122.OBJECT_NAME FROM T1122, T2122 WHERE T1122.OBJECT_ID = T2122.OBJECT_ID AND T2122.OBJECT_TYPE = 'SYNONYM' AND T1122.OBJECT_ID BETWEEN :vSTART and :vEND;
Lab 12.2: Explain Plan
![Page 277: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/277.jpg)
277
SQL Statement@$ORACLE_HOME/rdbms/admin/awrsqrpt.sqlEnter value for report_type: htmlEnter value for num_days: 1Enter value for begin_snap: 40Enter value for end_snap: 41Enter value for sql_id: 062savj8zgzutEnter value for report_name: AWR_SQL_01.html
SQL Statement (Specifc Database Instance)@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql
STATSPACK@$ORACLE_HOME/rdbms/admin/sprepsql.sql
277
AWR / Statspack
![Page 278: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/278.jpg)
278
Tabelas: - STATS$SQL_PLAN (STATSPACK) - DBA_HIST_SQL_PLAN - DBA_HIST_SQLTEXT - DBA_HIST_SQLSTAT - DBA_HIST_SQLBIND
Exemplo:SQL> SELECT SQL_ID, SQL_TEXT FROM DBA_HIST_SQLTEXT
WHERE SQL_TEXT LIKE '%SELECT ENAME FROM EMP%';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('a10jnjwd22gs8'));
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;SQL> EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(RETENTION => 43200, INTERVAL => 30, TOPNSQL => 100);
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.ADD_COLORED_SQL('az9p3ctumhpr8');SQL> EXEC DBMS_WORKLOAD_REPOSITORY.REMOVE_COLORED_SQL('az9p3ctumhpr8');
AWR rae.que.ra /icse.nçd D/idgnodtcsd Pdcsk
AWR / Statspack
![Page 279: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/279.jpg)
279
Dynamic Performance Views: - V$SQL_PLAN - V$SQL_PLAN_STATISTICS - V$SQL_WORKAREA - V$SQL_PLAN_STATISTICS_ALL (V$SQL_PLAN_STATISTICS + V$SQL_WORKAREA)
Clave < 10g: ADDRESS, HASH_VALUE, CHILD_NUMBERClave >= 10g: SQL_ID
DISPLAY_CURSORSQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(SQLID, CHILD_NUMBER, FORMAT));
FORMAT- TYPICAL = DEFAULT– ALL = TYPICAL + QB + PROJECTION + ALIAS + REMOTE– ADVANCED = ALL + OUTLINE + BINDS– ALLSTATS = IOSTATS + MEMSTATS (all executions)– ALLSTATS LAST (last execution)– ADAPTIVE (12c)
Views
![Page 280: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/280.jpg)
280
280
Executon PlanSQL> CONN SCOTT/TIGERSQL> EXEC DBMS_STATS.DELETE_TABLE_STATS('SCOTT','T91');SQL> SELECT /*+ GATHER_PLAN_STATISTICS */ COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'SYNONYM';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
SQL> SELECT /*+ GATHER_PLAN_STATISTICS */ COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'PACKAGE';SQL> SELECT /*+ GATHER_PLAN_STATISTICS */ COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'DIRECTORY';
![Page 281: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/281.jpg)
281
281
Executon PlanSQL> CONN SCOTT/TIGERSQL> EXEC DBMS_STATS.DELETE_SCHEMA_STATS(USER);
SQL> SELECT EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10);SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
SQL> SELECT EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10,20);SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
SQL> SELECT EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
SQL> SELECT /*+ GATHER_PLAN_STATISTICS */ EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10);SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
SQL> SELECT /*+ GATHER_PLAN_STATISTICS */ EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO IN (10,20);SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
SQL> SELECT /*+ GATHER_PLAN_STATISTICS */ EMPNO, ENAME, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
![Page 282: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/282.jpg)
282
282
Executon Plan
![Page 283: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/283.jpg)
283
283
Executon PlanSQL> CONN / AS SYSDBASQL> ALTER SYSTEM SET STATISTICS_LEVEL=ALL;
SQL> CONN SCOTT/TIGERSQL> ALTER SESSION SET STATISTICS_LEVEL=ALL;SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'SYNONYM';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'PACKAGE';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'DIRECTORY';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
![Page 284: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/284.jpg)
284
284
Executon PlanSQL> CONN SCOTT/TIGERSQL> COL SQL_TEXT FORMAT A150SQL> SELECT SQL_ID, CHILD_NUMBER, SQL_TEXT FROM V$SQL WHERE SQL_TEXT LIKE '%T91%';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('fnjnr3c42v3fr', NULL, 'ALLSTATS LAST'));
![Page 285: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/285.jpg)
285
285
Executon Plan
![Page 286: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/286.jpg)
286
286
Executon PlanSQL> CONN SCOTT/TIGERSQL> ALTER SESSION SET OPTIMIZER_DYNAMIC_SAMPLING = 0;SQL> EXEC DBMS_STATS.DELETE_TABLE_STATS(USER, 'T91');SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'TABLE';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'DIRECTORY';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'SYNONYM';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
![Page 287: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/287.jpg)
287
287
Executon PlanSQL> EXEC DBMS_STATS.DELETE_TABLE_STATS(USER, 'T91');SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'T91', ESTIMATE_PERCENT=>100, METHOD_OPT=>'FOR ALL COLUMNS SIZE 1');SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'TABLE';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'DIRECTORY';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'SYNONYM';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
![Page 288: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/288.jpg)
288
288
Executon PlanSQL> EXEC DBMS_STATS.DELETE_TABLE_STATS(USER, 'T91');SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'T91', ESTIMATE_PERCENT=>100, METHOD_OPT=> 'FOR ALL COLUMNS SIZE 5');SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'TABLE';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'DIRECTORY';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'SYNONYM';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
![Page 289: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/289.jpg)
289
289
Executon PlanSQL> EXEC DBMS_STATS.DELETE_TABLE_STATS(USER, 'T91');SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'T91');SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'TABLE';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'DIRECTORY';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));SQL> SELECT COUNT(OBJECT_NAME) FROM T91 WHERE OBJECT_TYPE = 'SYNONYM';SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
![Page 290: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/290.jpg)
290
290
Adaptve Plans
![Page 291: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/291.jpg)
291
Execute o SQL abaixo duas vezes, comparando o Plano Real de Execução.SQL> ALTER SYSTEM SET STATISTICS_LEVEL=ALL;$ sqlplus OE/OESQL> SELECT o.order_id, v.product_nameFROM orders o, ( SELECT order_id, product_name FROM order_items o, product_information p WHERE p.product_id = o.product_id AND list_price < 50 AND min_price < 40 ) vWHERE o.order_id = v.order_id;SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'+ALLSTATS'));
SQL> SELECT o.order_id, v.product_nameFROM orders o, ( SELECT order_id, product_name FROM order_items o, product_information p WHERE p.product_id = o.product_id AND list_price < 50 AND min_price < 40 ) vWHERE o.order_id = v.order_id;SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'+ALLSTATS'));
Lab 12.3: Adaptve Plans
![Page 292: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/292.jpg)
292
Verifque a diferença entre os dois Cursores.SQL> SELECT SQL_ID, CHILD_NUMBER, SQL_TEXT FROM V$SQL WHERE SQL_TEXT LIKE '%list_price <%';SQL> SELECT CHILD_NUMBER, CPU_TIME, ELAPSED_TIME, BUFFER_GETSFROM V$SQLWHERE SQL_ID = 'b7gtpsznk6ww9';
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('b7gtpsznk6ww9', 0, 'ALLSTATS LAST'));SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('b7gtpsznk6ww9', 1, 'ALLSTATS LAST'));
Lab 12.4: Adaptve Plans
![Page 293: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/293.jpg)
293
Execute o SQL abaixo duas vezes, comparando o Plano Real de Execução.$ sqlplus OE/OEEXPLAIN PLAN FOR SELECT product_name FROM order_items o, product_information p WHERE o.unit_price = 15 AND quantity > 1 AND p.product_id = o.product_id;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
SELECT product_name FROM order_items o, product_information p WHERE o.unit_price = 15 AND quantity > 1 AND p.product_id = o.product_id;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'+ALLSTATS LAST'));
SELECT product_name FROM order_items o, product_information p WHERE o.unit_price = 15AND quantity > 1 AND p.product_id = o.product_id;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'+ALLSTATS LAST +ADAPTIVE'));
Lab 12.5: Adaptve Plans
![Page 294: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/294.jpg)
294
SQLT
![Page 295: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/295.jpg)
295
Lab 13.1: SQLT - InstalaçãoMOS Doc ID 215187.1: SQLT Diagnostc Tool
Execute a instalação do SQLT.$ unzip sqlt_latest.zip$ cd sqlt/install$ sqlplus / AS SYSDBASQL> ALTER SESSION SET CONTAINER = PROD;SQL> @install@PROD <ENTER>Nerv2018 <ENTER>Nerv2018 <ENTER>YES <ENTER>USERS <ENTER>TEMP <ENTER>SCOTT <ENTER>T <ENTER>
SQL> GRANT SQLT_USER_ROLE TO OE;SQL> GRANT SQLT_USER_ROLE TO SH;SQL> GRANT SQLT_USER_ROLE TO SHSB;SQL> GRANT SQLT_USER_ROLE TO HR;
![Page 296: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/296.jpg)
296
Lab 13.2: SQLTXPLAIN - Extração
Verifque os SQL_ID dos SQL executados pelos dois SCHEMAS.$ cd /home/oracleSQL> CONN / AS SYSDBASQL> @SQLT.sqlSQL> SELECT SQL_ID, CHILD_NUMBER, SQL_TEXT FROM V$SQL WHERE PARSING_SCHEMA_NAME = 'SHSB' AND CHILD_NUMBER > 2 ORDER BY 2 DESC;
Extraia o Relatório SQLT dos SQL_ID executados pelos dois SCHEMAS.$ cd sqlt/run$ sqlplus SHSB/SHSBSQL> @sqltxtract 18dq002ybpmx9Nerv2018 <ENTER>$ unzip sqlt_s36985_xtract_grgrdq5ja4a1x.zip$ firefox sqlt_s36985_main.html
![Page 297: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/297.jpg)
297
Análise de Planos de Execução
![Page 298: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/298.jpg)
298
Análise de Plano
![Page 299: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/299.jpg)
299
Análise de Plano- Stand-alone Operatons: apenas uma iperaçãi filhi;- Unrelated-combine Operatons: iperações filhi sãi executadas de firma independente;AND/-ELUA/, BITMAP AND/, BITMAP MINUSQ, CONCATENATION, CONNECT BY WITHOUT FI/TERING, HASQH JOIN, INTERSQECTION, MERGE JOIN, MINUSQ, MU/TI_TAB/E INSQERT, SQL/ MOD/E/, TEMP TAB/E TRANSQFORMATION, UNION-A//.- Related-combine Operatons: a primeira iperaçãi filhi é executada apenas uma vez, e cintrila a execuçãi das iutras iperações filhi, de firma intercalada;NESQTED/ /OOPSQ, UPD/ATE, CONNECT BY WITH FI/TERING, BITMAP KEY ITERATION;- Blocking Operatons (SORT)- Nonblocking Operatons (FILTER)
Não há tpldnod �e. e.xe.csução �ifcse.id, dom.e.nte. longod.J/
![Page 300: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/300.jpg)
300
300
Stand-alone Operaton
![Page 301: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/301.jpg)
301
301
Stand-alone Operaton - STOPKEY
![Page 302: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/302.jpg)
302
302
Stand-alone Operaton - STOPKEY
![Page 303: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/303.jpg)
303
303
Stand-alone Operaton - FILTER
![Page 304: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/304.jpg)
304
304
Unrelated-combine Operaton
![Page 305: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/305.jpg)
305
305
Related-combine Operaton
![Page 306: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/306.jpg)
306
- Pinti de aumenti de Cist iu Riws. - Diferença entre A-Riws e E-Riws. - Nested Liips cim grande quantdade de Starts. - FTS / FIS em ibjetis cim filtris. - Desperdícii:--------------------------------------------------------------------------| Id | Operation | Name | Starts | E-Rows | A-Rows |--------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | | 0 || 1 | MERGE JOIN | | 1 | 10 | 0 ||* 2 | TABLE ACCESS BY INDEX ROWID | T1 | 1 | 10 | 10 || 3 | INDEX FULL SCAN | T1_PK | 1 | 10000 | 10000 ||* 4 | SORT JOIN | | 10 | 10 | 0 ||* 5 | TABLE ACCESS BY INDEX ROWID| T2 | 1 | 10 | 10 || 6 | INDEX FULL SCAN | T2_PK | 1 | 10000 | 10000 |--------------------------------------------------------------------------
O que procurar?
![Page 307: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/307.jpg)
307
Execute o SQL abaixo e analise seu plano de execução.SQL> CONN HR/HRSQL> SELECT e.employee_id, j.job_title, e.salary, d.department_name
FROM employees e, jobs j, departments dWHERE e.employee_id < 103AND e.job_id = j.job_idAND e.department_id = d.department_id;
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST'));
Lab 14.1: Análise de Plano
![Page 308: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/308.jpg)
308
Execute o SQL abaixo e analise seu plano de execução.SQL> CONN SHSB/SHSBSQL> SELECT *FROM (SELECT times.calendar_quarter_desc, customers.cust_first_name, customers.cust_last_name, customers.cust_id, SUM(sales.amount_sold), rank() over(PARTITION BY times.calendar_quarter_desc ORDER BY SUM(amount_sold) DESC) AS rank_within_quarter FROM sales, customers, times WHERE sales.cust_id = customers.cust_id AND times.calendar_quarter_desc = '2002-2' AND times.time_id = sales.time_id GROUP BY customers.cust_id, customers.cust_first_name, customers.cust_last_name, customers.cust_id, times.calendar_quarter_desc)WHERE rank_within_quarter < 16;
Lab 14.2: Análise de Plano
![Page 309: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/309.jpg)
309
Execute o SQL abaixo e analise seu plano de execução.SQL> CONN SHSB/SHSBSQL> SELECT t.time_id, to_char(SUM(amount_sold), '9,999,999,999') AS sales, to_char(AVG(SUM(amount_sold)) over(ORDER BY t.time_id range BETWEEN INTERVAL '2' DAY preceding AND INTERVAL '2' DAY following), '9,999,999,999') AScentered_5_day_avgFROM sales s, times tWHERE t.calendar_month_desc IN('1996-01','1996-02','1996-03','1996-04') AND s.time_id = t.time_idGROUP BY t.time_idORDER BY t.time_id;
SQL> SELECT t.time_id, to_char(SUM(amount_sold), '9,999,999,999') AS sales, to_char(AVG(SUM(amount_sold)) over(ORDER BY t.time_id range BETWEEN INTERVAL '2' DAY preceding AND INTERVAL '2' DAY following), '9,999,999,999') AScentered_5_day_avgFROM sales s, times tWHERE t.calendar_month_desc IN('2007-10','2007-11','2007-12','2008-01') AND s.time_id = t.time_idGROUP BY t.time_idORDER BY t.time_id;
Lab 14.3: Análise de Plano
![Page 310: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/310.jpg)
310
Estabilidade de Plano
![Page 311: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/311.jpg)
311
- Bind Variable- CURSOR_SHARING- Bind Variable Peeking (9i)- Extended Cursir Sharing / Adaptve Cursir Sharing (11gR1)- Cardinality Feedback (11gR2)- Adaptve Optmizer / Autimatc Reiptmizatin / Adaptve Plan (12cR1)
Evolução de Slared SQL
![Page 312: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/312.jpg)
312
Estabilidade do Plano● HINTs (Sessiin: “_OPTIMIZER_IGNORE_HINTS” = TRUE)● Parâmetris de Cintrile di CBO● Parâmetris icultis de Cintrile di CBO● Stired Outlines● SQL Profles (DBA_SQL_PROFILES) (10g)● SQL Plan Baselines (11g)● SQL Plan Directves (12c)
Fixar um Plano de Execução em Oracle StandardSELECT ADDRESS, HASH_VALUE FROM GV$OPEN_CURSOR WHERE SQL_TEXT LIKE '%ALL_TABLES%';EXEC SYS.DBMS_SHARED_POOL.KEEP('1C5B28DC, 3958201300', 'C');
![Page 313: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/313.jpg)
313
Baselines
![Page 314: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/314.jpg)
314
BaselinesConsulta:DBA_SQL_PLAN_BASELINES
Carregar Baselines Automatcamente:SQL> ALTER SYSTEM SET OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES=TRUE;SQL> ALTER SYSTEM SET OPTIMIZER_USE_SQL_PLAN_BASELINES=TRUE;
Carregar Baselines manualmente:SQL> EXEC DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(ATTRIBUTE_NAME=>'SQL TEXT', ATTRIBUTE_VALUE=>'%SELECT ID, NAME FROM T1%')SQL> EXEC DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(SQL_ID=>'1234567890', PLAN_HASH_VALUE=>'ABCDEFGH');
![Page 315: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/315.jpg)
315
BaselinesEvoluir Baselines:SQL> SET LONG 10000SQL> SELECT DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE(sql_handle => 'SYS_SQL_7b76323ad90440b9') FROM DUAL;
Remover Baselines:SQL> DECLARE
i NATURAL;BEGINi := DBMS_SPM.DROP_SQL_PLAN_BASELINE('SQL_0c20446867a16450');DBMS_OUTPUT.PUT_LINE(i);END;/
![Page 316: Oracle Tuning - SQLnervinformatica.com.br/Downloads/Materiais/OTSQL-12cR2.pdf · Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário administrador:](https://reader031.vdocuments.com.br/reader031/viewer/2022013120/5be59ebe09d3f2580c8c0a16/html5/thumbnails/316.jpg)
316
BaselinesSQL> CONN / AS SYSDBASQL> ALTER SYSTEM SET OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES=TRUE;SQL> ALTER SYSTEM SET OPTIMIZER_USE_SQL_PLAN_BASELINES=TRUE;
SQL> CONN SCOTT/TIGERSQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS;SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T;SQL> SELECT SQL_TEXT, SQL_HANDLE, PLAN_NAME, ENABLED, ACCEPTED FROM DBA_SQL_PLAN_BASELINES;SQL> CREATE BITMAP INDEX T_INDEX_01 ON T(OWNER);SQL> SET SERVEROUTPUT ONSQL> DECLARE EVOLVE_OUT CLOB;
BEGINEVOLVE_OUT := DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE (SQL_HANDLE => 'SQL_0c20446867a16450', COMMIT => 'YES');DBMS_OUTPUT.PUT_LINE(EVOLVE_OUT);END;/
SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T;SQL> SELECT SQL_TEXT, SQL_HANDLE, PLAN_NAME, ENABLED, ACCEPTED FROM DBA_SQL_PLAN_BASELINES;