oracle performance diagnostics & tuning...

240
Oracle Performance Diagnoscs & Tuning 18c Em Oracle Enterprise Edion 18.4 Em Oracle Enterprise Linux 7.5 Inclui CDB Architecture Ricardo Porlho Proni [email protected] Esta obra está licenciada sob a licença Creave Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite hp://creavecommons.org/licenses/by-nd/3.0/br/.

Upload: hoangnga

Post on 09-Nov-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

Oracle Performance Diagnostics & Tuning 18cEm Oracle Enterprise Edition 18.4

Em Oracle Enterprise Linux 7.5Inclui CDB Architecture

Ricardo Portilho [email protected]

Esta obra está licenciada sob a licençaCreative Commons Atribuição-SemDerivados 3.0 Brasil.Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.

Page 2: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

2

Isenção de responsabilidade

● Não acredite em tudo o que lê. Questione tudo.● Por algo estar escrito, não significa que é verdade.● O que é verdade aqui, pode não ser verdade lá.● O que era verdade ontem, pode não ser verdade hoje.● O que é verdade hoje, pode não ser verdade amanhã.● Se os fatos não se adequam à teoria, modifique a teoria.● Questione, e só acredite em fatos: teste.● Também tente provar que você está errado.● Implemente a solução no menor escopo possível.● Quando você mudar algo, pode acontecer uma de três coisas.

Page 3: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

3

Comandos no Treinamento

Comando com o usuário root:# ls -lh

Comando com um usuário oracle:$ ls -lh

Adicionar texto a um arquivo:$ vi initORCL.ora...db_cache_size=500M...

Comando no Oracle:SQL> SELECT STATUS FROM V$INSTANCE;

Algo deve ser alterado de acordo com sua máquina:Hostname: nerv01.localdomain

Quando algo dá errado propositalmente:O que aconteceu?

Todas as senhas (root, oracle, SYS, SYSTEM) são Nerv2018.

Page 4: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

4

LogsOracle$ tail -f $ORACLE_BASE/diag/rdbms/<database>/<SID>/trace/alert_<SID>.log

Mantenha o Alert Log visível o tempo todo.

Page 5: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

5

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 6: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

6

CDB Architecture

Page 7: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

7

Deprecation of Non-CDB Architecture

Documentação 12cR1:

Documentação 12cR2:

Page 8: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

8

12cR2 CDB New Features

✔ Subset Standby✔ Data Guard Broker PDB Migration or Failover✔ Cross-Platform Import of a Pluggable Database into a Multitenant Container Database✔ I/O Rate Limits for PDBs✔ Heat Map and Automatic Data Optimization Support for CDBs✔ PDB Character Set✔ PDB Refresh✔ Hints in CONTAINERS Query✔ Parallel PDB Creation Clause✔ PDB Archive Files (.pdb Files)✔ Default Tablespace Clause✔ Cloning a PDB✔ Near Zero Downtime PDB Relocation✔ Logical Standby Database to Support CDBs with PDBs with Different Character Sets✔ LogMiner to Support CDBs with PDBs with Different Character Sets✔ Support for PDBs with Different Character Sets, Time Zone File Versions, and Database Time Zones in a

CDB✔ Memory Resource Management✔ Per-Process PGA Limits✔ Performance Profiles and Mandatory PDB Profiles✔ CDB-Level PDB Lockdown

Page 9: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

9

12cR2 CDB New Features

✔ Application Root✔ Proxy PDB✔ Forwarding Connections to A New Address Based on Service✔ Service-Level ACLs for TCP Protocol✔ Flashback Pluggable Database✔ Upgrading a CDB With One or More PDBs in a Single Operation✔ Support for Thousands of Pluggable Databases for Each Multitenant Container Database✔ Pluggable Database Lockdown Profiles Enhancements✔ Pluggable Database Operating System Credentials✔ Oracle Enterprise Manager Database Express (EM Express) Resource Manager Support✔ EM Express: Simplifying Configuration for Multitenant Through Single Port Access✔ EM Express: Performance Hub Enhancements✔ Automatic Workload Repository (AWR) Support for a Pluggable Database (PDB)✔ Selective PDB Upgrades✔ AWR_PDB_AUTOFLUSH_ENABLED Initialization Parameter✔ ENABLE_AUTOMATIC_MAINTENANCE_PDB Initialization Parameter✔ AUTOTASK_MAX_ACTIVE_PDBS Initialization Parameter✔ Global and Shared Connection Pool for Oracle Cloud and Multitenant Oracle Databases✔ Prioritized Rebalancing✔ Oracle Database Vault Common Realms and Command Rules for Oracle Multitenant

Page 10: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

10

18c CDB New Features

✔ Server Draining ahead of relocating or stopping services or PDB✔ Duplicate PDBs between encrypted and non-encrypted CDBs✔ PDB backups usable after plugging in to a new CDB✔ Backups from non-CDBs are usable after migration to CDB✔ RMAN duplicate PDB into existing CDB✔ Copying a PDB in an Oracle Data Guard Environment✔ DBCA PDB Clone✔ PDB Lockdown Profile Enhancements✔ Refreshable PDB Switchover✔ CDB Fleet Management✔ PDB Snapshot Carousel✔ ASM Database Cloning✔ Ability to Create a Keystore for Each Pluggable Database

Page 11: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

11

Option Multitenant

Page 12: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

12

Multitenant - EE

Page 13: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

13

Singletenant - SE2

Page 14: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

14

Esse banco utiliza CDB Arquitecture?

Page 15: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

15

Que Containers / PDBs este banco tem?

Page 16: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

16

Em que Container estou conectado?

Page 17: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

17

Como conectar em um PDB? SET CONTAINER

Page 18: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

18

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 19: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

19

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 20: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

20

Como conectar em um PDB? tnsnames.ora

Page 21: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

21

Como conectar em um PDB? Easy Connect

Page 22: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

22

E agora, qual o nome da Instância? E do Banco?

Page 23: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

23

E agora, qual o nome da Instância? E do Banco?

Page 24: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

24

CDB e PDBs: STARTUP

Page 25: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

25

CDB e PDBs: STARTUP

Page 26: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

26

Alert Log

Page 27: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

27

DATAFILEs

Page 28: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

28

DATAFILEs

Page 29: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

29

DATAFILEs

Page 30: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

30

Dicionário de Dados

Page 31: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

31

VIEWs

Page 32: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

32

VIEWs

Page 33: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

33

Parâmetros

Page 34: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

34

Parâmetros

Page 35: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

35

TABLESPACEs

Page 36: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

36

USERs

Page 37: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

37

USERs

Page 38: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

38

USERs

Page 39: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

39

USERs

Page 40: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

40

SELECT em outros Containers

Page 41: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

41

Criando (Clonando) um PDB

Page 42: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

42

Criando (Clonando) um PDB

Page 43: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

43

Criando (Clonando) um PDB

Page 44: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

44

Criando (Clonando) um PDB

Page 45: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

45

Criando (Clonando) um PDB

Page 46: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

46

Unplug / Plug

Page 47: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

47

Unplug / Plug

Page 48: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

48

DROP

Page 49: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

49

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 50: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

50

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 51: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

51

1 - Bad connection management2 - Bad use of cursors and the shared pool3 - Bad SQL4 - Use of nonstandard initialization parameters5 - Getting database I/O wrong6 - Online redo log setup problems7 - Serialization of data blocks in the buffer cache due to lack of free lists, free list groups, transaction slots (INITRANS), or shortage of rollback segments.8 - Long full table scans9 - High amounts of recursive (SYS) SQL10 - Deployment and migration errors

Fonte: Oracle Database Performance Tuning Guidehttp://docs.oracle.com/database/122/TGDBA/performance-improvement-methods.htm

Tuning: Top Ten Mistakes

Page 52: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

52

● Performance de Sistemas Computacionais só pode ser medida em TEMPO.● Performance Tuning deve ser reativa.● Performance Tuning deve ter ROI.● Apenas os maiores gargalos devem ser solucionados.● O processo deve ser Diagnostics, e depois Tuning.● Alto consumo de CPU não é um problema.● O usuário não executa um SQL por prazer.● O desenvolvedor não deveria saber como fazer um bom SQL (COBOL?).● Ferramentas Gráficas / Enterprise Manager / Wizards / Automação são bons auxiliares.● Bancos com bom desempenho devem ser observados.● Conheça outros RDBMSs: TI não é lugar para paixões.● Não acredite em nada (separar tabelas e índices?). Teste.● Se houvesse um parâmetro que sempre deixasse o Oracle mais rápido, sem nenhum efeito colateral, ele já viria habilitado.● Desenvolva um método de convencimento gerencial.● Por algo chamar-se Storage, não quer dizer que ele não tenha problemas.● Mantenha o princípio KISS (Keep It Simple, Stupid): a probabilidade de falha cresce linearmente com o aumento de complexidade.● Saiba dizer “Não”.● Saiba dizer “Não sei”.

Minha abordagem

Page 53: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

53

Tempo

Page 54: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

54

Tempo Computacional

54

R = S + W

OU

Response Time = Service Time + Wait Time

Page 55: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

55

Instrumentação: Mainframe

Page 56: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

56

Instrumentação: Solaris DTrace

Page 57: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

57

OWI - Oracle Wait Interface

Page 58: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

58

● Versão 7.0.12: 104 Wait Events● Versão 8: 140 Wait Events● Versão 8i: 220 Wait Events● Versão 9i: ~400 Waits Events● Versão 10gR1: ~800 Wait Events● Versão 11gR2: ~1100 Wait Events ● Versão 12cR1: ~1650 Wait Events ● Versão 12cR2: ~1800 Wait Events

Evolução da OWI

Page 59: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

59

● buffer busy / read by oher session / latch: cache buffers chains● free buffer● control file single write / control file parallel write / control file sequential read● db file single write / db file parallel read / db file parallel write / db file async I/O submit● db file scatteread read / db file sequential read● direct path read / direct path write● enqueue● free buffer● latch free / latch: shared pool / latch: library cache● library cache pin / library cache lock● log buffer space● log file parallel write / log file single write / log file sequential read● log file switch (archiving needed)● log file switch (checkpoint incomplete) / log file switch completion● log file sync● SQL*Net message from client / SQL*Net message to client● SQL*Net more data from client / SQL*Net more data to client● SQL*Net break/reset from client / SQL*Net break/reset to client

59

Wait Events mais comuns

Page 60: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

60

Wait Class

Page 61: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

61

Granularidades de análise● SQL Statement● Session● Instance

Cenários de Análise● Há lentidão agora.● Tivemos lentidão ontem.

Ferramentas de Análise● Dynamic Performance Views● Extended SQL Trace (Event 10046)● Statspack / AWR

Se possível, traga relatórios AWR / Statspack.61

Análise de Desempenho

Page 62: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

62

● Não é um monitoramento End-to-End● CPU / Memória / Sistema Operacional● Coerência● Imprecisões

Limitações - Views● Histórico

Limitações - Extended SQL Trace● Muitos dados● Altíssima granularidade● Desempenho● Correlação de informações● Sessões PARALLEL● Sessões SHARED SERVER● Waits só disponíveis em >=9iR1● Suporte oficial só em >10gR1

Limitações - AWR / Statspack● Baixa granularidade● Apenas histórico

62

Limitações Oracle Wait Interface

Page 63: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

63

Quais são as colunas importantes destas VIEWs?→ V$SYSTEM_EVENT

→ V$SESSION_EVENT→ V$SESSION_WAIT

63

Lab 1.1: Views

Page 64: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

64

Mantenha uma sessão aberta com o SCOTT e outra com o SYS.$ rlwrap sqlplus SCOTT/TIGER@PROD$ rlwrap sqlplus / AS SYSDBA

Na sessão do SYS verifique (várias vezes seguidas) a V$SESSION_WAIT.SQL> SELECT SID, EVENT, SECONDS_IN_WAIT FROM V$SESSION_WAIT ORDER BY SECONDS_IN_WAIT;SQL> SELECT SID, EVENT, SECONDS_IN_WAIT FROM V$SESSION_WAIT WHERE WAIT_CLASS != ‘Idle’ ORDER BY SECONDS_IN_WAIT;

64

Lab 1.2: VIEWs

Page 65: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

65

Na sessão do SCOTT, crie uma tabela de testes, e a duplique 8 vezes.Enquanto os INSERTs estão sendo executados, verifique a V$SESSION_WAIT na sessão do SYS.Anote o tempo do último INSERT.SQL> @Lab-1.3.sql

De acordo com o que você viu na V$SESSION_WAIT, qual é o problema?Onde o tempo é gasto?

Lab 1.3: VIEWs

Page 66: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

66

Na sessão do SYS, verifique a V$SESSION_EVENT.SQL> SELECT SID FROM V$SESSION WHERE USERNAME = 'SCOTT';SQL> SELECT EVENT, TIME_WAITED FROM V$SESSION_EVENT WHERE SID = 279 ORDER BY TIME_WAITED;De acordo com o que você viu na V$SESSION_EVENT, qual é o problema?Onde o tempo é gasto?

Reconecte a sessão do SCOTT, e crie uma cópia da tabela de testes.Continue observando a V$SESSION_WAIT e V$SESSION_EVENT na sessão do SYS.Anote o tempo do CREATE TABLE.SQL> CONN SCOTT/TIGER@PRODSQL> CREATE TABLE X AS SELECT * FROM T;

Lab 1.4: VIEWs

Page 67: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

67

Na sessão do SYS, adicione 10 Redo Logs de 1GB cada.SQL> ALTER DATABASE ADD LOGFILE SIZE 1G;SQL> ALTER DATABASE ADD LOGFILE SIZE 1G;...

Reconecte a sessão do SCOTT, e execute novamente os testes.SQL> CONN SCOTT/TIGER@PRODSQL> DROP TABLE T;SQL> @Lab-1.3.sql...SQL> COMMIT;SQL> CONN SCOTT/TIGER@PRODSQL> DROP TABLE X;SQL> CREATE TABLE X AS SELECT * FROM T;

Na sessão do SYS, enquanto os testes estão sendo executados, verifique a V$SESSION_WAIT e a V$SESSION_EVENT.O tempo melhorou? Os Eventos são os mesmos?

Lab 1.5: VIEWs

Page 68: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

68

Na sessão do SYS, enquanto os INSERTs estão sendo executados, verifique os Eventos também pelas formas a seguir.SQL> @PorQueOBancoEstaLento_01.sqlSQL> @PorQueOBancoEstaLento_02.sqlSQL> @PorQueOBancoEstaLento_03.sqlSQL> @PorQueOBancoEstavaLento_01.sql

$ chmod +x /home/oracle/oratop.RDBMS_12.1_LINUX_X64$ /home/oracle/oratop.RDBMS_12.1_LINUX_X64 -f -i2 / AS SYSDBANo oratop, aperte a tecla h, verifique e teste as opções.

68

Lab 1.6: VIEWs

Page 69: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

69

Arquitetura

Page 70: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

70

Sistema Operacional

Page 71: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

71

top

Se Load Average = Cores = 100% Se Load Average > Cores = Se Load Average < Cores =

Page 72: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

72

vmstat

Page 73: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

73

iostat

Page 74: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

7474

Linux: Outras Ferramentas

Page 75: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

75

Huge Pages / Large Pages

Configuring HugePages for Oracle on Linux (x86-64)https://oracle-base.com/articles/linux/configuring-huge-pages-for-oracle-on-linux-64

Page 76: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

76

Swappiness

Deploying Oracle Database 12c on Red Hat Enterprise Linux 7 Best Practiceshttps://access.redhat.com/node/1282303/40/0

Page 77: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

77

ASYNC / Direct I/O

Page 78: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

78

I/O Scheduler

Page 79: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

7979

Arquitetura Oracle

Page 80: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

80

SGA Manual e PGA Manual (< 9i)db_cache_size = 10Gshared_pool_size = 2Glarge_pool_size = 128Mjava_pool_size = 128Mstreams_pool_size = 128Msort_area_size = 1M / sort_area_retained_size = 1M / hash_area_size = 1M / bitmap_merge_area_size = 1M / create_bitmap_area_size = 1M

SGA Manual e PGA Automática (>= 9i)sga_max_size = 15Gdb_cache_size = 10Gshared_pool_size = 2Glarge_pool_size = 128Mjava_pool_size = 128Mstreams_pool_size = 128Mpga_aggregate_target = 1G

Configuração de Memória

Page 81: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

81

Automático – ASMM (Automatic Segment Memory Management) (>= 10g)sga_max_size = 15Gsga_target = 15Gpga_aggregate_target = 1Gpga_aggregate_limit = 2G (>= 12c)

Semi-automático – ASMM (Automatic Segment Memory Management) (>= 10g)sga_max_size = 15Gsga_target = 15Gdb_cache_size = 10Gpga_aggregate_target = 1Gpga_aggregate_limit = 2G (>= 12c)

Automático – AMM (Automatic Memory Management) (>= 11g)memory_max_target = 16Gmemory_target = 16Gsga_target = 0pga_aggregate_target = 0pga_aggregate_limit = 2G (>= 12c)

81

Configuração de Memória

Page 82: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

82

db_block_size = 8192

db_2k_cache_size = 128Mdb_4k_cache_size = 128Mdb_8k_cache_size = 128Mdb_16k_cache_size = 128Mdb_32k_cache_size = 128M

db_keep_cache_size = 128M (< 10g: buffer_pool_keep)db_recycle_cache_size = 128M (<10g: buffer_pool_recycle)shared_pool_reserved_size = 128M

result_cache_mode = MANUALresult_cache_max_size = 10Mresult_cache_max_result = 5

db_file_multiblock_read_count = 128

log_buffer = 8388608

fast_start_mttr_target = 0

82

Configuração de Memória

Page 83: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

83

Compression● 10g OLAP● 11g OLTP● 12c InMemory

Page 84: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

84

Extended SQL Trace

84

Page 85: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

85

Minha sessão:SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';

Outra sessão:SQL> SELECT P.SPID, P.TRACEFILE

FROM V$SESSION S, V$PROCESS PWHERE S.PADDR = P.ADDR AND S.USERNAME = 'SCOTT';

SQL> oradebug setospid 9999;SQL> oradebug tracefile_name;SQL> oradebug unlimit;SQL> oradebug event 10046 trace name context forever, level 12;

Extended SQL Trace: Ativação

Page 86: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

86

CREATE OR REPLACE TRIGGER SET_TRACE AFTER LOGON ON DATABASEBEGINIF USER IN ('SCOTT') THENEXECUTE IMMEDIATE 'ALTER SESSION SET TRACEFILE_IDENTIFIER=''SESSAO_RASTREADA_PORTILHO''';EXECUTE IMMEDIATE 'ALTER SESSION SET TIMED_STATISTICS=TRUE';EXECUTE IMMEDIATE 'ALTER SESSION SET MAX_DUMP_FILE_SIZE=UNLIMITED';EXECUTE IMMEDIATE 'ALTER SESSION SET EVENTS ''10046 TRACE NAME CONTEXT FOREVER, LEVEL 12''';END IF;END;/

Extended SQL Trace: Ativação

Page 87: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

87

Extended SQL Trace: tkprof

Page 88: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

88

Feche e abra a sessão com o SCOTT com SET TIMING ONSQL> EXIT$ rlwrap sqlplus SCOTT/TIGER@PRODSQL> SET TIMING ON

Com o usuário SYS, habilite o Extended Trace para a sessão do SCOTT:SQL> SELECT P.SPID FROM V$SESSION S, V$PROCESS P WHERE S.PADDR = P.ADDR AND S.USERNAME = 'SCOTT';SQL> oradebug setospid 8708;SQL> oradebug tracefile_name;SQL> oradebug unlimit;SQL> oradebug event 10046 trace name context forever, level 12;

Em outro terminal, verifique o conteúdo do Trace.$ tail -f /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_8708.trc

88

Lab 2.1: Extended SQL Trace

Page 89: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

89

Com o usuário SCOTT, apague o conteúdo da grande tabela, altere o valor do parâmetro db_file_multiblock_read_count (apenas na sessão) e reinsira os dados.SQL> TRUNCATE TABLE X;SQL> INSERT INTO X SELECT * FROM T;SQL> COMMIT;

Continue verificando o conteúdo do Trace durante a execução da operação.Anote o tempo do INSERT.

Repita a operação, mas com db_file_multiblock_read_count de 8, 50 e 1000.SQL> ALTER SESSION SET db_file_multiblock_read_count = 8;SQL> TRUNCATE TABLE X;SQL> INSERT INTO X SELECT * FROM T;SQL> COMMIT;

Remova os REDO LOGs de 1G, e execute novamente os testes com o parâmetro db_file_multiblock_read_count em 8, 50 e 1000.

Execute o tkprof nos Trace gerado.$ tkprof /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_8708.trc

Analise o relatório gerado pelo tkprof.

89

Lab 2.2: Extended SQL Trace

Page 90: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

90

Lendas do Oracle

90

Page 91: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

91

Não utilizarás mais que 50% de tua RAM para a SGA.

[ricardo@Melquior ~]$ free total used free shared buffers cachedMem: 3719480 3262932 456548 797828 6308 1094712-/+ buffers/cache: 2161912 1557568Swap: 16777212 764576 16012636

[ricardo@Melquior ~]$ df -hFilesystem Size Used Avail Use% Mounted on/dev/sda1 443G 325G 96G 78% /tmpfs 1.8G 2.3M 1.8G 1% /dev/shm[ricardo@Melquior ~]$

RAM Total do Servidor - (quantidade máxima de conexões simultâneas + 40) x 2MB

- Memória do Sistema Operacional = (OLTP) 80% SGA e 20% PGA OU

= (OLAP) 80% PGA e 20% SGA

91

RAM x SGA

Page 92: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

9292

SWAP

Terás uma área de SWAP com o dobro de tua RAM.

Page 93: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

9393

Checkpoint

Eventos relacionados● control file single write● control file parallel write● control file sequential read● db file single write

Checkpoints:● Full Checkpoint● Thread Checkpoint● File Checkpoint● Object Checkpoint● Parallel Checkpoint ● Incremental Checkpoint● Checkpoint Log Switch

Teus DATAFILEs deverão ter no máximo 2GB / 10GB / xGB.

Page 94: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

9494

UNDO

Qual a transação mais longa que o sistema deve suportar?UNDO_RETENTIONCREATE UNDO TABLESPACE … RETENTION GUARANTEEAUTOEXTEND ON

Deverás executar COMMIT a cada N linhas.

Page 95: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

95

● Todo teu SELECT deverá utilizar um índice, para que ele seja rápido.● Utilizarás HINTs, pois tu és mais sábio que o Oracle.● Se coletar estatísticas em 100%, os planos de execução serão perfeitos.● Não coletarás estatísticas do dicionário de dados.● Deverás separar teus dados e índices.● Deverás separar teus dados em diversas TABLESPACEs.● Não habilitarás AUTOEXTEND ON.● Utilizarás RAID 5, pois é mais rápido para leituras.● Colocar os Redo Logs em SSD (ODA?).● Não permitirás mais que um SWITCH a cada 20 minutos.● Mas não terás grandes REDO LOGs.● Executarás REBUILD de índices regularmente.● Executarás MOVE de tabelas regularmente.● Se grande a tabela tornar-se, a particionarás.● Se quiseres mais velocidade, usarás RAC.● Quanto mais CPUs, mais rápido teu banco de dados será.● Se teus RATIOS estiverem altos, felizes estarão teus usuários.● Sempre que possível, aumentarás seu DB_CACHE_SIZE e SHARED_POOL.● Se os dados estão na memória, tudo será rápido.● O Exadata resolve todos os problemas de desempenho.● Desabilitarás o AWR / STATSPACK, pois ele causa lentidão.● Não utilizarás memória automática. Tu és mais sábio que o Oracle.● Se usar, deixarás a SGA_TARGET um pouco menor que a SGA_MAX_SIZE. ● AUTOMATIC SQL TUNING é um dos cavaleiros do apocalipse.

95

Lendas do Oracle

Page 96: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

96

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/Nerv2018@ORCL

Page 97: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

97

Feche e abra a sessão com o SCOTT com SET TIMING ONSQL> CONN SCOTT/TIGER@PRODSQL> SET TIMING ON

Com o usuário SCOTT, apague o conteúdo da grande tabela, e reinsira os dados.SQL> TRUNCATE TABLE X;SQL> INSERT INTO X SELECT * FROM T;SQL> COMMIT;

Ao término da execução, verifique os valores de V$SESSION_EVENT da sessão do SCOTT. Guarde o resultado.

Altere o valor do parâmetro log_buffer para 512k, repita a operação, e compare.Altere o valor do parâmetro log_buffer para 10m, repita a operação, e compare.Altere o valor do parâmetro log_buffer para 100m, repita a operação, e compare.

Lab 3.1: LGWR x DBWR

Page 98: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

9898

Wait Events - Detalhes

Page 99: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

9999

Referência

Page 100: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

100100

Performance Tuning Guide

Page 101: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

101101

Performance Tuning Guide

Page 102: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

102102

MOS

Page 103: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

103

Oracle Database Reference (explicação simples, direta)http://docs.oracle.com/database/121/REFRN/waitevents003.htm#BGGIBDJI

Oracle Database Performance Tuning Guide (explicação melhor, orientada a causas / soluções)http://docs.oracle.com/database/121/TGDBA/pfgrf_instance_tune.htm#TGDBA94497

MOS / My Oracle Support / Metalink (várias notas sobre Wait Events específicos)https://support.oracle.com/

Livro "Oracle Wait Interface"http://www.amazon.com/Oracle-Wait-Interface-Performance-Diagnostics/dp/007222729X

103

OWI: Fontes de Consulta

Page 104: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

104

Explicação: O bloco solicitado está em uso, pois outra sessão está carregando o bloco para o DB_CACHE_SIZE, ou outra sessão está utilizando o bloco no DB_CACHE_SIZE em um modo incompatível.Causa: DB_CACHE_SIZE insuficiente, ou SQL ineficiente.Correção: Aumente o DB_CACHE_SIZE ou altere o SQL.

P1: Número do DATAFILE.P2: Número do bloco.P3: ID – a solicitação vem de diferentes locais da sessão.

104

buffer busy

Page 105: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

105

Explicação: O bloco solicitado está em uso, pois outra sessão está carregando o bloco para o DB_CACHE_SIZE, ou outra sessão está utilizando o bloco no DB_CACHE_SIZE em um modo incompatível.Causa: DB_CACHE_SIZE insuficiente, ou SQL ineficiente.Correção: Aumente o DB_CACHE_SIZE ou altere o SQL.

P1: Número do DATAFILE.P2: Número do bloco.P3: Razão (<10g).P3: Wait Class (>=10g).

105

read by other session

Page 106: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

106

Explicação: O RDBMS aguarda blocos de DB_CACHE_SIZE livres.Causa: DB_CACHE_SIZE insuficiente.Correção: Aumente o DB_CACHE_SIZE.

P1: Número do DATAFILE.P2: Número do bloco.

106

free buffer

Page 107: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

107

Explicação: Espera de I/O para gravar em CONTROLFILEs.Causa: Excesso de gravação nos CONTROLFILEs ou I/O ineficiente.Correção: Minimize as gravações nos CONTROLFILEs ou melhore o mecanismo de I/O.

P1: Quntidade de CONTROLFILEs.P2: Quantidade de blocos.P3: Quantidade de solicitações de I/O.

107

control file single write / control file parallel write

Page 108: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

108

Explicação: Espera de I/O para ler os CONTROLFILEs.Causa: Excesso de leitura nos CONTROLFILEs ou I/O ineficiente.Correção: Minimize as leituras nos CONTROLFILEs ou melhore o mecanismo de I/O.

P1: Número do CONTROLFILE.P2: Número do bloco.P3: Quantidade de blocos.

108

control file sequential read

Page 109: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

109

Explicação: Gravações de dados nos DATAFILEs esperam pelo I/O.Causa: Excesso de gravações ou lentidão de I/O.Correção: Minimize as gravações ou melhore o mecanismo de I/O.

P1: Quantidade de requisições.P2: Interrupt.P3: Timeout.

109

db file parallel write / db file async I/O submit

Page 110: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

110

Explicação: Uma gravação no HEADER do DATAFILE espera pelo I/O.Causa: Excesso de gravações no HEADER dos DATAFILEs ou lentidão de I/O.Correção: Minimize as gravações no HEADER dos DATAFILEs ou melhore o mecanismo de I/O.

P1: Quantidade de requisições.P2: Interrupt.P3: Timeout.

110

db file single write

Page 111: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

111

Explicação: Durante RECOVER ou durante PREFETCHING, leituras de DATAFILEs esperam pelo I/O.Causa: RECOVER muito longo, PREFETCHING excessivo, ou lentidão de I/O.Correção: Acelere o RECOVER, minimize o PREFETCHING, ou melhore o mecanismo de I/O.

P1: Quantidade de DATAFILEs.P2: Quantidade de blocos.P3: Quantidade de requisições.

111

db file parallel read

Page 112: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

112112

User I/O

Page 113: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

113

Em “db file scatteread read” ocorre “db file sequential read” quando: - O bloco já está no cache; - O bloco está no final do Extent; - Excede o limite do sistema operacional; - UNDO.

MBRC: scatteread / sequential

Page 114: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

114

Explicação: Durante FTS, leituras de DATAFILEs esperam pelo I/O.Causa: DB_CACHE_SIZE insuficiente, FTS desnecessário ou lentidão de I/OCorreção: Aumente o DB_CACHE_SIZE, elimine o FTS, ou melhore o mecanismo de I/O.

P1: Número do DATAFILE.P2: Bloco inicial.P3: Quantidade de blocos.

114

db file scattered read

Page 115: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

115

Explicação: Durante a leitura de um bloco, leituras de DATAFILEs esperam pelo mecanismo de I/O.Causa: DB_CACHE_SIZE insuficiente, leitura desnecessária ou lentidão de I/OCorreção: Aumente o DB_CACHE_SIZE, elimine a leitura desnecessária, ou melhore o mecanismo de I/O.

P1: Número do DATAFILE.P2: Bloco inicial.P3: Quantidade de blocos.

115

db file sequential read

Page 116: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

116

Explicação: Leitura / gravação entre DATAFILEs / TEMPFILEs e PGA.Causa: PGA insuficiente, ou lentidão de I/O.Correção: Aumente a PGA, ou melhore o mecanismo de I/O.

P1: Número do arquivo (DATAFILE ou TEMPFILE).P2: Bloco inicial.P3: Quantidade de blocos.

116

direct path read [temp] / direct path write [temp]

Page 117: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

117

Explicação: Mecanismo de fila ordenada do RDBMS.Causa: Diversas, dependendo do tipo de fila.Correção: Diversas, dependendo do tipo de fila.

P1: Tipo ou modo da enqueue.P2: ID1 (como na V$LOCK).P3: ID2 (como na V$LOCK).

Problemas mais comuns:● TX, Transaction (80%)● TM, DML Enqueue (10%)● HW, High-Water Lock (1%)● SQ, Sequence Number Enqueue (1%)● CF, Controlfile Transaction (0.1%)

117

enqueue

Page 118: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

118

Explicação: Mecanismo de fila desordenada do RDBMS.Causa: Diversas, dependendo do tipo de fila.Correção: Diversas, dependendo do tipo de fila.

P1: Endereço da Latch (como na V$LATCH).P2: Número da Latch (como na V$LATCH).P3: Quantidade de tentativas.

Problemas mais comuns:● shared pool (40%)● library cache (40%)● cache buffers lru chain (5%)● cache buffers chains (5%)● row cache objects (1%)

118

latch free

Page 119: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

119

Explicação: Uso incompatível do objeto entre duas sessões.Causa: Uso do objeto de forma incompatível entre duas sessões.Correção: Finalizar o uso do objeto por uma das sessões.

P1: Endereço do objeto.P2: Endereço do load lock.P3: Mode + Namespace.

SQL> SELECT /*+ ORDERED */ W1.SID WAITING_SESSION, H1.SID HOLDING_SESSION, W.KGLLKTYPE LOCK_OR_PIN, W.KGLLKHDL ADDRESS, DECODE(H.KGLLKMOD,0,’None’,1,’Null’,2,’Share’,3,’Exclusive’,'Unknown’) MODE_HELD, DECODE(W.KGLLKREQ,0,’None’,1,’Null’,2,’Share’,3,’Exclusive’,'Unknown’) MODE_REQUESTED FROM DBA_KGLLOCK W, DBA_KGLLOCK H, V$SESSION W1, V$SESSION H1 WHERE (((H.KGLLKMOD != 0) AND (H.KGLLKMOD != 1) AND ((H.KGLLKREQ = 0) OR (H.KGLLKREQ = 1))) AND (((W.KGLLKMOD = 0) OR (W.KGLLKMOD= 1)) AND ((W.KGLLKREQ != 0) AND (W.KGLLKREQ != 1)))) AND W.KGLLKTYPE = H.KGLLKTYPE AND W.KGLLKHDL = H.KGLLKHDL AND W.KGLLKUSE = W1.SADDR AND H.KGLLKUSE = H1.SADDR; SQL> SELECT TO_NAME FROM V$OBJECT_DEPENDENCY WHERE TO_ADDRESS = ‘0700000010F62750';

119

library cache pin / library cache lock

Page 120: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

120

Explicação: Mais espaço no LOG_BUFFER é necessário para gravações.Causa: LOG_BUFFER insuficiente, REDO LOGs insuficientes, ou I/O lento.Correção: Aumente o LOG_BUFFER, aumente a quantidade / tamanho de REDO LOGs, ou melhore o mecanismo de I/O.

P1: Quantidade de REDO LOGs.P2: Quantidade de blocos do sistema operacional.P3: Quantidade de requisições de I/O.

120

log buffer space

Page 121: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

121

Explicação: Durante gravação de REDO LOGs, o LGWR espera pelo I/O.Causa: Excesso de membros nos grupos de REDO LOGs ou lentidão de I/O.Correção: Reduza a quantidade de membros nos grupos de REDO LOGs ou melhore o mecanismo de I/O.

P1: Quantidade de REDO LOGs.P2: Quantidade de blocos de sistema operacional.P3: Quantidade de requisições de I/O.

121

log file parallel write

Page 122: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

122

Explicação: Durante gravação no HEADER de um REDO LOGs, o LGWR espera pelo I/O.Causa: Excesso de gravações no HEADER do REDO LOG ou lentidão de I/O.Correção: Reduza a quantidade de gravações no HEADER do REDO LOG ou melhore o mecanismo de I/O.

P1: Número do REDO LOG.P2: Número do bloco.P3: Quantidade de blocos.

122

log file single write

Page 123: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

123

Explicação: Durante leitura de REDO LOGs, o LGWR espera pelo I/O.Causa: Lentidão de I/O.Correção: Melhore o mecanismo de I/O.

P1: Número do REDO LOG.P2: Número do bloco.P3: Quantidade de blocos.

123

log file sequential read

Page 124: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

124

Explicação: Todos os grupos de REDO LOGs foram utilizados e ainda são necessários para um eventual RECOVER, pois o ARCn ainda não criou os ARCHIVED REDO LOGs e o DBWR ainda não gravou seu conteúdo nos DATAFILEs.Causa: REDO LOGs sub-dimensionados, configuração inadequada de destino de ARCHIVED REDO LOGs ou I/O ineficiente.Correção: Aumentar os REDO LOGs em quantidade e/ou tamanho, corrigir a configuração de destino do ARCn, ou melhorar o mecanismo de I/O.

P1: Não utilizado.P2: Não utilizado.P3: Não utilizado.

Variações:● log file switch completion● log file switch (checkpoint incomplete)● log file switch (private strand flush incomplete)● log file switch (archiving needed)● log file switch (clearing log file)

124

log file switch

Page 125: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

125

Explicação: Um CHECKPOINT foi executado, e precisa ser registrado no REDO LOG, e o LGRW está aguardando pelo mecanismo de I/O.Causa: COMMIT em quantidade excessiva, ou I/O ineficiente.Correção: Reduzir a quantidade de COMMITs ou otimizar o mecanismo de I/O.

P1: Número do Log Buffer.P2: Não utilizado.P3: Não utilizado.

125

log file sync

Page 126: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

126

Explicação: Espera durante comunicação via rede com o protocolo SQL*Net.Causa: Sessão inativa, latência de rede ou limitação do cliente.Correção: Eliminar a sessão inativa, minimizar a latência na rede ou minimizar a limitação do cliente.

P1: Driver de rede.P2: Quantidade de bytes.P3: Não utilizado.

Variações● SQL*Net message from client● SQL*Net message to client● SQL*Net more data from client● SQL*Net more data to client● SQL*Net break/reset to client● SQL*Net message from dblink● SQL*Net message to dblink● SQL*Net more data from dblink● SQL*Net more data to dblink● SQL*Net break/reset to dblink

126

SQL*Net message to / from client

Page 127: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

127127

Lab 4.1: Influenciando SQLsCom o usuário SCOTT, crie um índice BTREE na coluna OWNER da tabela T:SQL> CREATE INDEX IDX_T ON T(OWNER);

Com o usuário SCOTT, execute este SQL, e anote o tempo.SQL> SELECT COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';Qual Wait Event este SELECT causou?

Com o usuário SCOTT, execute este SQL, e anote o tempo.SQL> SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';

Qual Wait Event este SELECT causou?

Page 128: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

128

Lab 4.2: Influenciando SQLs

Execute o SQL_TUNE do SQL sem HINT.SQL> CONN / AS SYSDBASQL> SELECT SQL_ID, SQL_TEXT FROM V$SQL WHERE SQL_TEXT LIKE ‘%T_ALIAS%’;SQL> DECLARE RET_VAL VARCHAR2(4000);BEGIN

RET_VAL := DBMS_SQLTUNE.CREATE_TUNING_TASK(SQL_ID => 'cgj6kacnv0d5h', 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> SPOOL TuningTask.txtSQL> 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 129: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

129129

Lab 4.3: Influenciando SQLsExecute este SQL e anote seu tempo de execução:SQL> SELECT COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';

Execute este SQL e anote seu tempo de execução:SQL> SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';

Com o usuário SYS, dê as permissões necessárias para que o usuário SCOTT utilize o DBMS_ADVANCED_REWRITE:$ sqlplus / AS SYSDBASQL> ALTER SESSION SET CONTAINER = PROD;SQL> GRANT EXECUTE ON DBMS_ADVANCED_REWRITE TO SCOTT;SQL> GRANT CREATE MATERIALIZED VIEW TO SCOTT;

Page 130: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

130130

Lab 4.4: Influenciando SQLsNa sessão do usuário SCOTT, execute o DBMS_ADVANCE_REWRITE:BEGINSYS.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE(NAME=>'PORTILHO_REWRITE',SOURCE_STMT=>'SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = ''T''',DESTINATION_STMT => 'SELECT COUNT(OBJECT_NAME) FROM T T_ALIAS WHERE OBJECT_NAME = ''T''',VALIDATE=>FALSE,REWRITE_MODE=>'TEXT_MATCH');END;/

SELECT * FROM USER_REWRITE_EQUIVALENCES;

Execute novamente este SELECT e verifique seu tempo de execução:SQL> SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';

Page 131: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

131

Permite Query, DML e DDL.

Quantos processos de paralelismo utilizar?

Um objeto pode ter Parallel permanente, independente do SQL:SQL> ALTER TABLE SCOTT.T PARALLEL 4;

Uma sessão pode ter Parallel permanente, independente do SQL: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 utilizado diretamente no SQL:SQL> SELECT /*+ PARALLEL(T2 4) */ COUNT(*) FROM T2;SQL> SELECT /*+ PARALLEL(T2 4,2) */ COUNT(*) FROM T2;

Paralelismo

Page 132: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

132

Parâmetros:PARALLEL_MIN_SERVERS = Número 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 ou AUTO.PARALLEL_MIN_TIME_THRESHOLD = AUTO | Segundos. PARALLEL_ADAPTIVE_MULTI_USER = true ou false.PARALLEL_DEGREE_LIMIT = CPU, IO ou Número.PARALLEL_SERVERS_TARGET = Número entre 0 e PARALLEL_MAX_SERVERS.PARALLEL_THREADS_PER_CPU = Qualquer número.

PARALLEL_EXECUTION_MESSAGE_SIZE = De 2148 a 32768PARALLEL_FORCE_LOCAL = true ou false.PARALLEL_INSTANCE_GROUP = Oracle RAC service_name ou group_name.

PARALLEL_AUTOMATIC_TUNING: Deprecated.PARALLEL_IO_CAP_ENABLED = Deprecated.

Paralelismo

Page 133: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

133

Com o usuário SCOTT, comare estes SQLs.SQL> CONN SCOTT/TIGER@PRODSQL> SELECT COUNT(*) FROM X;SQL> SELECT EVENT, TIME_WAITED FROM V$SESSION_EVENT WHERE SID IN (SELECT SID FROM V$SESSION WHERE USERNAME = 'SCOTT') ORDER BY TIME_WAITED;

SQL> CONN SCOTT/TIGER@PRODSQL> SELECT /*+ PARALLEL(X 4) */ COUNT(*) FROM X;SQL> SELECT EVENT, TIME_WAITED FROM V$SESSION_EVENT WHERE SID IN (SELECT SID FROM V$SESSION WHERE USERNAME = 'SCOTT') ORDER BY TIME_WAITED;

SQL> CONN SCOTT/TIGER@PRODSQL> SELECT /*+ PARALLEL(X 20) */ COUNT(*) FROM X;SQL> SELECT EVENT, TIME_WAITED FROM V$SESSION_EVENT WHERE SID IN (SELECT SID FROM V$SESSION WHERE USERNAME = 'SCOTT') ORDER BY TIME_WAITED;

SQL> CONN SCOTT/TIGER@PRODSQL> SELECT /*+ PARALLEL(X 40) */ COUNT(*) FROM X;SQL> SELECT EVENT, TIME_WAITED FROM V$SESSION_EVENT WHERE SID IN (SELECT SID FROM V$SESSION WHERE USERNAME = 'SCOTT') ORDER BY TIME_WAITED;

Qual a diferença de Wait Events das execuções?

Lab 4.5: Influenciando SQLs

Page 134: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

134

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 135: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

135

Estatísticas

Page 136: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

136

Optimizer StatisticsTable statistics

Number of rowsNumber of blocksAverage row length

Column statisticsNumber of distinct values (NDV) in columnNumber of nulls in columnData distribution (histogram)Extended statistics

Index statisticsNumber of leaf blocksAverage data blocks per KeyLevelsIndex clustering factor

System StatisticsI/O performance and utilizationCPU performance and utilization

Estatísticas e SQL Engine

Page 137: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

137

Estatísticas - TabelaDBA_TABLES / ALL_TABLES / USER_TABLESSELECT TABLE_NAME, NUM_ROWS, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, CHAIN_CNT, AVG_ROW_LEN, SAMPLE_SIZE, LAST_ANALYZED FROM USER_TABLES ORDER BY 1;

Page 138: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

138

Estatísticas - Índices

DBA_INDEXES / ALL_INDEXES / USER_INDEXESSELECT TABLE_NAME, INDEX_NAME, NUM_ROWS, BLEVEL, LEAF_BLOCKS, DISTINCT_KEYS, CLUSTERING_FACTOR, AVG_LEAF_BLOCKS_PER_KEY, AVG_DATA_BLOCKS_PER_KEY, SAMPLE_SIZE, LAST_ANALYZED FROM USER_INDEXES ORDER BY 1,2;

CREATE INDEX T2_IDX1 ON T2(ID);

Page 139: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

139

Estatísticas - Colunas

DBA_TAB_COLUMNS / ALL_TAB_COLUMNS / USER_TAB_COLUMNSSELECT TABLE_NAME, COLUMN_NAME, NUM_DISTINCT, NUM_NULLS, DENSITY, LOW_VALUE, HIGH_VALUE, DATA_LENGTH, AVG_COL_LEN, SAMPLE_SIZE, LAST_ANALYZED FROM USER_TAB_COLUMNS ORDER BY 1,2;

Page 140: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

140

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 141: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

141

Quando coletar? Coleta automática

Page 142: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

142

Quando coletar? Coleta automática

Page 143: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

143

Quando coletar? Coleta automática

Page 144: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

144

Quando coletar? OPTIMIZER_DYNAMIC_SAMPLING

Nível 0 = Não há coleta.Nível 1 = Coleta 32 blocos.

Se há pelo menos 1 tabela particionada no SQL sem estatísticas.Se esta tabela não tem índices.Se esta tabela tem mais que 64 blocos.

Nível 2 = Coleta 64 blocos.Coleta se há pelo menos uma tabela do SQL sem estatísticas.

Nível 3 = Coleta 64 blocos.Coleta se o Nível 2 é atendido OU se é utilizada expressão no WHERE.

Nível 4 = Coleta 64 blocos.Coleta se o nível 3 é atendido OU se o SQL utiliza AND ou OR entre múltiplos predicados.

Nível 5 = Coleta 128 blocos.Coleta se o nível 4 é atendido.

Nível 6 = Coleta 256 blocos.Coleta se o nível 4 é atendido.

Nível 7 = Coleta 512 blocos.Coleta se o nível 4 é atendido.

Nível 8 = Coleta 1024 blocos.Coleta se o nível 4 é atendido.

Nível 9 = Coleta 4086 blocos.Coleta se o nível 4 é atendido.

Nível 10 = Coleta todos os blocos.Coleta se o nível 4 é atendido.

Nível 11 (Adaptive Dynamic Sampling: >= 11.2.0.4) = Coleta ? Blocos. Coleta quando?

Page 145: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

145

Coleta de EstatísticasVerifique os planos de execução dos SQL abaixo.SQL> CONN SCOTT/TIGER@PRODSQL> SET AUTOTRACE ON EXPLAINSQL> SELECT COUNT(OBJECT_NAME) FROM T WHERE OBJECT_TYPE = 'SYNONYM';SQL> SELECT COUNT(OBJECT_NAME) FROM T WHERE OBJECT_TYPE = 'PACKAGE';SQL> SELECT COUNT(OBJECT_NAME) FROM T WHERE OBJECT_TYPE = 'DIRECTORY';

Remova as estatísticas e verifique novamente os planos de execução.SQL> EXEC DBMS_STATS.DELETE_TABLE_STATS('SCOTT','T');

Desabilite as estatísticas dinâmicas, e verifique novamente os planos de execução.SQL> ALTER SESSION SET OPTIMIZER_DYNAMIC_SAMPLING=0;

Colete as estatísticas com os parâmetros padrão, e verifique novamente os planos de execução.SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T');

Page 146: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

146

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');

146

Estatísticas: Coleta Manual

Page 147: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

147

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 148: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

148

Estatísticas - HistogramasDBA_TAB_COLUMNS / ALL_TAB_COLUMNS / USER_TAB_COLUMNSDBA_TAB_HISTOGRAMS / ALL_TAB_HISTOGRAMS / USER_TAB_HISTOGRAMSSELECT H.TABLE_NAME, H.COLUMN_NAME, C.HISTOGRAM, H.ENDPOINT_NUMBER, H.ENDPOINT_ACTUAL_VALUE, H.ENDPOINT_REPEAT_COUNT FROM USER_TAB_HISTOGRAMS H, USER_TAB_COLUMNS C WHERE H.TABLE_NAME = C.TABLE_NAME AND H.COLUMN_NAME = C.COLUMN_NAME AND HISTOGRAM <> 'NONE' AND TABLE_NAME = ‘T’ ORDER BY 1,2,4;

Page 149: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

149

Como coletar? Histogramas

METHOD_OPTFOR ALL COLUMNS SIZE AUTOFOR ALL [INDEXED | HIDDEN] COLUMNS SIZE [N | REPEAT | AUTO | SKEWONLY]FOR COLUMNS column 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 150: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

150

Coleta de EstatísticasVerifique os planos de execução dos SQL abaixo.SQL> CREATE INDEX IND_T ON T(OBJECT_TYPE);SQL> SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE FROM T GROUP BY OBJECT_TYPE ORDER BY 1;SQL> SET AUTOTRACE ON EXPLAINSQL> SELECT COUNT(OBJECT_NAME) FROM T WHERE OBJECT_TYPE = 'SYNONYM';SQL> SELECT COUNT(OBJECT_NAME) FROM T WHERE OBJECT_TYPE = 'PACKAGE';SQL> SELECT COUNT(OBJECT_NAME) FROM T WHERE OBJECT_TYPE = 'DIRECTORY';

Remova as estatísticas e verifique novamente os planos de execução.SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T', METHOD_OPT=>’FOR COLUMNS OBJECT_TYPE SIZE AUTO’);

Remova as estatísticas e verifique novamente os planos de execução.SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T', METHOD_OPT=>’FOR COLUMNS OBJECT_TYPE SIZE 10’);

Remova as estatísticas e verifique novamente os planos de execução.SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','T', METHOD_OPT=>’FOR COLUMNS OBJECT_TYPE SIZE 5’);

Page 151: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

151

Frequency HistogramsUtilizados se: - Se o NDV é menor ou igual que a quantidade de Buckets indicados na coleta; - É utilizado AUTO_SAMPLE_SIZE na execução da coleta.

Page 152: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

152

Height Balanced HistogramsUtilizados se: - Se o número de Buckets indicados na coleta é menor que o NDV.

Page 153: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

153

Top Frequency Histograms (12c)Utilizados se: - Se o NDV é maior que a quantidade de Buckets indicados na coleta; - É utilizado AUTO_SAMPLE_SIZE na execução da coleta; - Se o percentual de linhas ocupadas pelos Top Values é igual ou maior que p, sendo que p = (1-(1/Buckets))*100.

Page 154: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

154

Hybrid Histograms (12c)Utilizados se: - Se o número de Buckets indicados na coleta é menor que o NDV; - É utilizado AUTO_SAMPLE_SIZE na execução da coleta; - Se os critétios para Top Frequency Histograms não se aplicam.

Page 155: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

155

- Buckets: máximo de 254 / 127 (2048 no 12c);- Frequency Histograms;- Height-Balanced Histograms;- Top Frequency Histograms (12c);- Hybrid Histograms (12c).

Problemas: - Tabelas que não precisam de Histogramas; - Custo de coleta; - Sensibilidade a coleta por SAMPLE; - Sensibilidade a momento da coleta (Novos pedidos às 22:00?); - Bind Variables (pré ACS); - Frequency: Se um valor não está em um Bucket, será considerada metade da cardinalidade do valor menos popular; - Height-Balanced: Se um valor não é popular (só está em 1 Bucket), será considerada a cardinalidade = número de linhas não populares / número de valor não populares (11gR2).

http://docs.oracle.com/database/121/TGSQL/tgsql_histo.htm

Histogramas

Page 156: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

156

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);

OpçõesAPPROXIMATE_NDV_ALGORITHM: REPEAT OR HYPERLOGLOG, ADAPTIVE SAMPLING, HYPERLOGLOGAUTO_STAT_EXTENSIONS: ON, OFFCASCADEDEGREEESTIMATE_PERCENTGLOBAL_TEMP_TABLE_STATSGRANULARITYINCREMENTALINCREMENTAL_STALENESSINCREMENTAL_LEVELMETHOD_OPTNO_INVALIDATEOPTIONSPREFERENCE_OVERRIDES_PARAMETERPUBLISHSTALE_PERCENTSTAT_CATEGORYTABLE_CACHED_BLOCKS

Page 157: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

157

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 STALE',GATHER_SYS=>FALSE,NO_INVALIDATE=>FALSE,METHOD_OPT=>'FOR ALL COLUMNS SIZE SKEWONLY');

Page 158: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

158

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 159: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

159

Como coletar? Coleta de exceção

HINT /*+ GATHER_PLAN_STATISTICS */Parâmetro STATISTICS_LEVEL = ALL

Page 160: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

160

Como coletar? Coleta de exceção

SQLT (MOS 215187.1)oratop (MOS 1500864.1)

Page 161: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

161

Outras estatísticas

Fixed Objects Statistics (V$SQL, V$SESSION, etc.) (Coletada automaticamente a partir do 12c)SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

Dictionary Statistics (DBA_SEGMENTS, DBA_TABLES, etc.);SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

System Statistcs (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 162: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

162

Verifique e guarde os planos de execução do capítulo de JOINs.

Colete as estatísticas de sistema durante uma carga, e verifique sua alteração.SQL> ALTER SESSION SET CONTAINER = PROD;SQL> SELECT PNAME, PVAL1 FROM SYS.AUX_STATS$ where SNAME = 'SYSSTATS_MAIN';SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('START');

$ unzip -q swingbench261090.zip$ cd /home/oracle/swingbench/bin/$ ./charbench -uc 10 -cs //nerv01/PROD -c ../configs/SOE_Server_Side_V2.xml -u SOE -p SOE

...

SQL> ALTER SESSION SET CONTAINER = PROD;SQL> SELECT PNAME, PVAL1 FROM SYS.AUX_STATS$ where SNAME = 'SYSSTATS_MAIN';SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('STOP');SQL> SELECT PNAME, PVAL1 FROM SYS.AUX_STATS$ where SNAME = 'SYSSTATS_MAIN';

System Statistics

Page 163: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

163

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');

163

Extended Statistics – Column Groups e Expression

Page 164: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

164

Estatísticas PendentesColete estatísticas, e verifique-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;

Page 165: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

165

Restore de EstatísticasExecute o Restore de uma estatística anterior.SQL> SELECT DBMS_STATS.GET_STATS_HISTORY_RETENTION FROM DUAL;SQL> EXEC DBMS_STATS.ALTER_STATS_HISTORY_RETENTION(60);

SQL> COL TABLE_NAME FORMAT A10SELECT TABLE_NAME, TO_CHAR(STATS_UPDATE_TIME,'YYYY-MM-DD:HH24:MI:SS') AS STATS_MOD_TIMEFROM DBA_TAB_STATS_HISTORY WHERE TABLE_NAME='T'AND OWNER='SCOTT'ORDER BY STATS_UPDATE_TIME DESC;

SQL> EXEC DBMS_STATS.RESTORE_TABLE_STATS('SCOTT','T',TO_TIMESTAMP('2018-10-28:10:03:26','YYYY-MM-DD HH24:MI:SS'), NO_INVALIDATE=>FALSE);

Page 166: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

166

Transporte de EstatísticasOrigemEXEC DBMS_STATS.CREATE_STAT_TABLE (ownname => 'HR', stattab => TESTE_STATS'));

EXEC DBMS_STATS.GATHER_SCHEMA_STATS ('HR');BEGIN DBMS_STATS.EXPORT_SCHEMA_STATS (ownname => 'HR', stattab => 'TESTE_STATS';

$ expdp HR/HR DIRECTORY=dump_directory DUMPFILE=TESTE_STATS.dmp TABLES=TESTE_STATS

Destino:$ impdp 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 167: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

167

Fragmentação

167

Page 168: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

168

● Blocos logicamente contíguos espalhados fisicamente.● Espaço livre na TABLESPACE / DATAFILEs.● Espaço livre da TABELA.● Espaço livre no ÍNDICE.● Row Chaining.● Migrated Rows.● EXTENTs.

168

Fragmentação

Page 169: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

169169

Fragmentação: SHRINK● ALTER TABLESPACE ... COALESCE● ALTER TABLE ... ENABLE ROW MOVEMENT● ALTER TABLE ... SHRINK SPACE COMPACT● ALTER TABLE ... SHRINK SPACE● ALTER TABLE ... MOVE

Page 170: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

170170

Fragmentação: Row Chaining

What’s the Difference between Row Migration and Row Chaining?https://antognini.ch/2016/10/whats-the-difference-between-row-migration-and-row-chaining/

Page 171: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

171171

Fragmentação: Row Migration

Page 172: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

172

$ sqlplus SCOTT/TIGER@PRODSQL> SET AUTOTRACE OFFSQL> @IndexesToRebuild-UPDATEs.sqlSQL> UPDATE T SET OBJECT_TYPE = 'NO';SQL> COMMIT;SQL> @IndexesToRebuild-UPDATEs.sqlSQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT', 'T');SQL> @IndexesToRebuild-UPDATEs.sqlSQL> ALTER TABLE T MOVE;SQL> SELECT TABLE_NAME, INDEX_NAME FROM USER_INDEXES WHERE STATUS = ‘UNUSABLE’;SQL> ALTER INDEX T_IDX REBUILD;...SQL> @IndexesToRebuild-UPDATEs.sql

172

Lab 5.1: Fragmentação

Page 173: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

173

$ sqlplus SCOTT/TIGER@PRODCREATE TABLE X1 TABLESPACE USERS AS SELECT * FROM ALL_OBJECTS;INSERT INTO X1 SELECT * FROM X1;INSERT INTO X1 SELECT * FROM X1;INSERT INTO X1 SELECT * FROM X1;INSERT INTO X1 SELECT * FROM X1;COMMIT;CREATE TABLE X2 TABLESPACE USERS AS SELECT * FROM X1;CREATE TABLE X3 TABLESPACE USERS AS SELECT * FROM X1;CREATE TABLE X4 TABLESPACE USERS AS SELECT * FROM X1;CREATE INDEX X1_IDX ON X1(OBJECT_NAME) TABLESPACE USERS;CREATE INDEX X2_IDX ON X2(OBJECT_NAME) TABLESPACE USERS;CREATE INDEX X3_IDX ON X3(OBJECT_NAME) TABLESPACE USERS;CREATE INDEX X4_IDX ON X4(OBJECT_NAME) TABLESPACE USERS;

DELETE FROM X2 WHERE OBJECT_TYPE = 'SYNONYM';COMMIT;

UPDATE X3 SET OBJECT_NAME = 'A' WHERE OBJECT_TYPE = 'SYNONYM';UPDATE X3 SET OWNER = 'A' WHERE OBJECT_TYPE = 'SYNONYM';UPDATE X3 SET OBJECT_TYPE = 'A' WHERE OBJECT_TYPE = 'SYNONYM';COMMIT;

173

Lab 5.2: Fragmentação

Page 174: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

174

UPDATE X4 SET OBJECT_NAME = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' WHERE OBJECT_TYPE = 'SYNONYM';

UPDATE X4 SET SUBOBJECT_NAME = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' WHERE OBJECT_TYPE = 'SYNONYM';

UPDATE X4 SET OWNER = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' WHERE OBJECT_TYPE = 'SYNONYM';

UPDATE X4 SET EDITION_NAME = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' WHERE OBJECT_TYPE = 'SYNONYM';

UPDATE X4 SET DEFAULT_COLLATION = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' WHERE OBJECT_TYPE = 'SYNONYM';

COMMIT;

174

Lab 5.3: Fragmentação

Page 175: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

175

$ rlwrap sqlplus / AS SYSDBASQL> ALTER SESSION SET CONTAINER = PROD;SQL> EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT');SQL> @OracleBaseAdvisor.sql TABLESPACE USERS NULL

175

Lab 5.4: Fragmentação

Page 176: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

176

Limitação de Recursos

176

Page 177: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

177

● 11.2.0.1: CPU_COUNT● 12.1.0.1: PROCESSOR_GROUP_NAME

177

Instance Caging

Page 178: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

178

Separação de Recursos por:● ORACLE_USER● SERVICE_NAME● CLIENT_OS_USER● CLIENT_PROGRAM● CLIENT_MACHINE● MODULE_NAME● MODULE_NAME_ACTION● SERVICE_MODULE● SERVICE_MODULE_ACTION

Controle dos Recursos:● CPU● Sessões Ativas● Paralelismo● I/O (>= 11gR1)

178

Resource Plan

Page 179: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

179

Analise o código do arquivo ResourcePlan.sql:● Usuário SOE: OLTP, deve ter muita prioridade durante o dia, e pouca durante a noite.● Usuário SCOTT: AD-HOC, só pode utilizar CPU que nenhum dos usuários acima estiver utilizando.● Outros: OTHERS_GROUP, só podem utilizar CPU que nenhum dos usuários acima estiver utilizando.

Execute a criação do Resource Plan, e o habilite.SQL> ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'PEAKTIME';

Conecte com o usuário SCOTT, e verifique se ele está no Consumer Group correto. SQL> SELECT USERNAME, RESOURCE_CONSUMER_GROUP FROM V$SESSION WHERE USERNAME IS NOT NULL;

O que está errado?

179

Lab 6.1 – Resource Plan

Page 180: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

180

Relatório AWR

180

Page 181: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

181

AWR != Relatório AWR

Page 182: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

182

Evolução do Statspack / AWR

Page 183: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

183

Evolução do (BSTAT - ESTAT) / Statspack / AWR

Page 184: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

184

Custo do AWR

Page 185: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

185

Custo do AWR

Parâmetro CONTROL_MANAGEMENT_PACK_ACCESSNONEDIAGNOSTIC (AWR, ADDM, etc.)DIAGNOSTIC+TUNING (SQL Tuning Advisor, SQLAccess Advisor, etc) DEFAULT

A license for DIAGNOSTIC is required for enabling the TUNING pack.

Page 186: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

186

Custo do AWR

http://www.oracle.com/us/corporate/pricing/price-lists/index.html

Page 187: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

187

Statspack

Page 188: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

188

Instalação$ sqlplus / AS SYSDBA– - Em 12c com CDB, execute: alter session set "_oracle_script"=true;SQL> @?/rdbms/admin/spcreate.sqlEnter value for perfstat_password: Nerv2018Enter value for default_tablespace: SYSAUXEnter value for temporary_tablespace: TEMP

Desinstalação$ sqlplus / AS SYSDBASQL> @?/rdbms/admin/spdrop.sql

Statspack

Page 189: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

189

Job de Coleta de Snapshots$ sqlplus PERFSTAT/Nerv2018SQL> @?/rdbms/admin/spauto.sql

Ajuste de nível de coleta$ sqlplus PERFSTAT/Nerv2018SQL> SELECT SNAP_LEVEL, DESCRIPTION FROM STATS$LEVEL_DESCRIPTION ORDER BY SNAP_LEVEL;SQL> EXECUTE STATSPACK.MODIFY_STATSPACK_PARAMETER(i_snap_level => 7);

Snapshots avulsos$ sqlplus PERFSTAT/Nerv2018SQL> EXECUTE STATSPACK.SNAP;

Statspack

Page 190: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

190

Remoção de Snapshots$ sqlplus PERFSTAT/Nerv2018SQL> @?/rdbms/admin/sppurge.sqlEnter value for losnapid: 3Enter value for hisnapid: 4

Automação de Remoção de SnapshotsEXEC STATSPACK.PURGE(I_NUM_DAYS=>60,I_EXTENDED_PURGE=>TRUE);

Statspack

Page 191: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

191

Extração do Relatório Statspack$ sqlplus PERFSTAT/Nerv2018SQL> @?/rdbms/admin/spreport.sqlEnter value for begin_snap: 3Enter value for end_snap: 4Enter value for report_name: Teste01$ vi Teste01.lst

Extração do Relatório Statspack – SQLSTATS$SQL_PLAN / STATS$SQL_PLAN_USAGE$ sqlplus PERFSTAT/Nerv2018SQL> @?/rdbms/admin/sprepsql.sqlEnter value for begin_snap: 3Enter value for end_snap: 4Enter value for hash_value: 532522188Enter value for report_name: SQL01$ vi SQL01.lst

Statspack

Page 192: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

192

Gerenciamento do AWR

Page 193: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

193

Gerenciamento do AWR

Parâmetro CONTROL_MANAGEMENT_PACK_ACCESSNONEDIAGNOSTIC (AWR, ADDM, etc.)DIAGNOSTIC+TUNING (SQL Tuning Advisor, SQLAccess Advisor, etc) DEFAULT

Parâmetro TIMED_STATISTICStrue DEFAULTfalse

Parâmetro STATISTICS_LEVELBASICTYPICAL DEFAULTALL

Page 194: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

194

Gerenciamento do AWRParâmetro STATISTICS_LEVEL = TYPICAL● Automatic Workload Repository (AWR) Snapshots● Automatic Database Diagnostic Monitor (ADDM)● All server-generated alerts● Automatic SGA Memory Management● Automatic optimizer statistics collection● Object level statistics● End to End Application Tracing (V$CLIENT_STATS)● Database time distribution statistics (V$SESS_TIME_MODEL and V$SYS_TIME_MODEL)● Service level statistics● Buffer cache advisory● MTTR advisory● Shared pool sizing advisory● Segment level statistics● PGA Target advisory● Timed statistics● Monitoring of statistics

Parâmetro STATISTICS_LEVEL = ALL● Timed statistics● Timed OS statistics● Plan execution statistics

Page 195: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

195

Snapshot avulso$ sqlplus / AS SYSDBASQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;

Alteração de intervalo de coleta e retenção$ sqlplus / AS SYSDBASQL> EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS

(RETENTION=>86400,INTERVAL=>30,TOPNSQL=>100);

Gerenciamento do AWR

Page 196: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

196

Criação de Baseline$ sqlplus / AS SYSDBASQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(

START_SNAP_ID => 2600,END_SNAP_ID => 2680,BASELINE_NAME => 'BEFORE MIGRATION',EXPIRATION => 365);

Remoção de Baseline$ sqlplus / AS SYSDBASQL> EXEC DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE

(BASELINE_NAME => 'BEFORE MIGRATION',CASCADE => FALSE);

Gerenciamento do AWR

Page 197: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

197

Automatic Workload Repository ViewsDBA_HIST_WR_CONTROLDBA_HIST_SNAPSHOTDBA_HIST_DATABASE_INSTANCEDBA_HIST_DB_CACHE_ADVICEDBA_HIST_DYN_REMASTER_STATSDBA_HIST_IOSTAT_DETAILDBA_HIST_SQL_PLAN

DBA_HIST_ACTIVE_SESS_HISTORYV$ACTIVE_SESSION_HISTORY

DBA_HIST_DISPATCHDBA_HIST_SHARED_SERVER_SUMMARY

DBA_HIST_BASELINEDBA_HIST_BASELINE_DETAILS DBA_HIST_BASELINE_TEMPLATE

Gerenciamento do AWR

Page 198: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

198

Scripts AWR

Page 199: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

199

AWR Report@?/rdbms/admin/awrrpt.sqlEnter value for report_type: htmlEnter value for num_days: 1Enter value for begin_snap: 40Enter value for end_snap: 41Enter value for report_name: AWR_01.html

AWR Report (Specific Database Instance)@$ORACLE_HOME/rdbms/admin/awrrpti.sql

Oracle RAC AWR Report@$ORACLE_HOME/rdbms/admin/awrgrpt.sql

Oracle RAC AWR Report (Specific Database Instance)@$ORACLE_HOME/rdbms/admin/awrgrpti.sql

Scripts AWR

Page 200: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

200

AWR Information@?/rdbms/admin/awrinfo.sqlEnter value for report_name: awrinfo.txt

Extracting AWR Data@?/rdbms/admin/awrextr.sqlEnter value for dbid: 1442122872Enter value for num_days: 7Enter value for begin_snap: 2622Enter value for end_snap: 2780Enter value for directory_name: DATA_PUMP_DIREnter value for file_name: awrdat_2622_2780

Loading AWR Data@?/rdbms/admin/awrload.sqlInforme o valor para directory_name: BACKUPInforme o valor para file_name: awrdat_2622_2780Informe o valor para schema_name: C##AWR_STAGEInforme o valor para default_tablespace: SYSAUXInforme o valor para temporary_tablespace: TEMP

Scripts AWR

Page 201: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

201

AWR Information

Page 202: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

202

AWR Warehouse

Page 203: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

203

Oracle RAC AWR Report

Page 204: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

204

AWR Compare Periods Report@$ORACLE_HOME/rdbms/admin/awrddrpt.sqlEnter value for report_type: htmlEnter value for num_days: 2Enter value for begin_snap: 33Enter value for end_snap: 34Enter value for num_days2: 1Enter value for begin_snap2: Enter value for end_snap2: 56Enter value for report_name: AWR_DIFF_01.html

AWR Compare Periods Report (Specific Database Instance)@$ORACLE_HOME/rdbms/admin/awrddrpi.sql

Oracle RAC AWR Compare Periods Report@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql

Oracle RAC AWR Compare Periods Report (Specific Database Instance)@$ORACLE_HOME/rdbms/admin/awrgdrpi.sql

Scripts AWR

Page 205: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

205

AWR Compare Periods Report

Page 206: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

206

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 (Specific Database Instance)@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql

Scripts AWR

Page 207: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

207

SQL Statement

Page 208: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

208

SQL Statement

DISPLAY AWRSQL> 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'));

TOP N SQLSQL> EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS

(RETENTION=>86400,INTERVAL=>30,TOPNSQL=>100);

Colored SQLSQL> EXEC DBMS_WORKLOAD_REPOSITORY.ADD_COLORED_SQL('az9p3ctumhpr8');SQL> EXEC DBMS_WORKLOAD_REPOSITORY.REMOVE_COLORED_SQL('az9p3ctumhpr8');

Page 209: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

209

Automatic Database Diagnostic Monitor (ADDM)SQL> @$ORACLE_HOME/rdbms/admin/addmrpt.sqlEnter value for begin_snap: 51Enter value for end_snap: 52Enter value for report_name: ADDM_01.txt

Scripts AWR

Page 210: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

210

ADDM

Page 211: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

211

Active Session History Reports@$ORACLE_HOME/rdbms/admin/ashrpt.sqlEnter value for report_type: htmlEnter value for begin_time: -30Enter value for duration: 10Enter value for report_name: ASH_01.html

Oracle RAC Active Session History Reports@$ORACLE_HOME/rdbms/admin/ashrpti.sql

Scripts AWR

Page 212: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

212

Active Session History Reports (Specific Database Instance)@$ORACLE_HOME/rdbms/admin/ashrpti.sqlEnter value for report_type: htmlEnter value for dbid: 1383175475Enter value for inst_num: 1Enter value for begin_time: Enter value for begin_time: -30Enter value for duration: 10Enter value for slot_width: 30Enter value for target_session_id: Enter value for target_sql_id: Enter value for target_wait_class: Enter value for target_service_hash: Enter value for target_module_name: Enter value for target_action_name: Enter value for target_client_id: Enter value for target_plsql_entry: Enter value for target_container: Enter value for report_name: ASH_SID666_01.html

Scripts AWR

Page 213: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

213

ASH Report

Page 214: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

214

ASH Report

Page 215: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

215

Método de Tuning com AWR

Page 216: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

216

Passo 0: Ver o que o AWR não vê.Identificar os detalhes da infraestrutura do ambiente fora do escopo da instância.

Passo 1: Definir Escopo (ADDM → AWR → ASH → SQL).Utilizar o menor escopo possível, de acordo com o problema informado pelo cliente.

Passo 2: Analisar Cabeçalho.Conhecer o ambiente (Passo 0) e o escopo (Passo 1) analisado. A partir do tempo analisado, define-se a gravidade do tempo afetado. Utilizar as estatísticas de carga em caso de comparação de períodos ou ambientes.

Passo 3: Analisar Time Model.Definir a eficiência do ambiente, e se é necessário Tuning de Instância / Banco ou não.

Método de Tuning com AWR

Page 217: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

217

Passo 4: Identificar Wait Events agressoresDefinir os Wait Events relevantes, agressores do tempo penalizador da eficiência (Passo 3), analisando em conjunto de tipo (Foreground e Background), agrupando por causa.

Passo 5: Analisar Acessórios dos Wait Events De acordo com os Wait Events relevantes definidos (Passo 4), encontrar nas seções acessórias do relatório as causas associadas, levando em conta o escopo de tempo analisado (Passo 2).

Passo 6: Analisar ParâmetrosIdentificar agravantes, atenuantes e oportunidades dos parâmetros relacionadas aos Wait Events agressores (Passo 4).

Passo 7: Definir correções e ganhos.De acordo com o tempo identificado dos Wait Events relevantes (Passo 4) e as soluções encontradas e possíveis (Passo 5), levando em conta os parâmetros (Passo 6) e ambiente (Passo 0) definir o tempo ganho, e portanto o ROI do cliente.

Método de Tuning com AWR

Page 218: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

218

Seções do AWR

Page 219: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

219

Seções do AWR: CabeçalhoPasso 2: Analisar Cabeçalho.Conhecer o ambiente (Passo 0) e o escopo (Passo 1) analisado. A partir do tempo analisado, define-se a gravidade do tempo afetado. Utilizar as estatísticas de carga em caso de comparação de períodos ou ambientes.

Elapsed Time * Cores = 100%Se DB Time > (Elapsed Time * Cores) = Se DB Time < (Elapsed Time * Cores) =

Page 220: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

220

Seções do AWR: Cabeçalho

Elapsed Time * Cores = 100%Se DB Time > (Elapsed Time * Cores) = Se DB Time < (Elapsed Time * Cores) =

Page 221: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

221

Seções do AWR: Eficiência

Passo 3: Analisar Time Model.Definir a eficiência do ambiente, e se é necessário Tuning de Instância / Banco ou não.

Page 222: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

222

Seções do AWR: CargaPasso 2: Analisar Cabeçalho.Conhecer o ambiente e o escopo analisado. A partir do intervalo analisado, define-se a gravidade do tempo afetado. Utilizar as estatísticas de carga em caso de comparação de períodos.

Page 223: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

223

Seções do AWR: CargaPasso 2: Analisar Cabeçalho.Conhecer o ambiente e o escopo analisado. A partir do intervalo analisado, define-se a gravidade do tempo afetado. Utilizar as estatísticas de carga em caso de comparação de períodos.

Page 224: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

224

Seções do AWR: Wait EventsPasso 4: Identificar Wait Events agressoresDefinir os Wait Events relevantes, agressores do tempo penalizador da eficiência (Passo 3), analisando em conjunto de tipo (Foreground e Background), agrupando por causa.

Page 225: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

225

Seções do AWR: Wait EventsPasso 4: Identificar Wait Events agressoresDefinir os Wait Events relevantes, agressores do tempo penalizador da eficiência (Passo 3), analisando em conjunto de tipo (Foreground e Background), agrupando por causa.

Page 226: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

226

Seções do AWR: Seções AcessóriasPasso 5: Analisar Acessórios dos Wait Events De acordo com os Wait Events relevantes definidos (Passo 4), encontrar nas seções acessórias do relatório as causas associadas, levando em conta o escopo de tempo analisado (Passo 2).

Page 227: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

227

Seções do AWR: Seções Acessórias

Passo 5: Analisar Acessórios dos Wait Events De acordo com os Wait Events relevantes definidos (Passo 4), encontrar nas seções acessórias do relatório as causas associadas, levando em conta o escopo de tempo analisado (Passo 2).

Page 228: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

228

Seções do AWR: ParâmetrosPasso 6: Analisar ParâmetrosIdentificar agravantes, atenuantes e oportunidades dos parâmetros relacionados aos Wait Events agressores (Passo 4).

Page 229: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

229

Cálculo do ROIPasso 7: Definir correções e ganhos.De acordo com o tempo identificado dos Wait Events relevantes (Passo 4) e as soluções encontradas e possíveis (Passo 5), levando em conta os parâmetros (Passo 6) e ambiente (Passo 0) definir o tempo ganho, e portanto o ROI do cliente.

Page 230: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

230

Cálculo do ROI

Passo 7: Definir correções e ganhos.De acordo com o tempo identificado dos Wait Events relevantes (Passo 4) e as soluções encontradas e possíveis (Passo 5), levando em conta os parâmetros (Passo 6) e ambiente (Passo 0) definir o tempo ganho, e portanto o ROI do cliente.

Page 231: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

231

Cálculo do ROIPasso 7: Definir correções e ganhos.De acordo com o tempo identificado dos Wait Events relevantes (Passo 4) e as soluções encontradas e possíveis (Passo 5), levando em conta os parâmetros (Passo 6) e ambiente (Passo 0) definir o tempo ganho, e portanto o ROI do cliente.

Page 232: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

232

Cálculo do ROIPasso 7: Definir correções e ganhos.De acordo com o tempo identificado dos Wait Events relevantes (Passo 4) e as soluções encontradas e possíveis (Passo 5), levando em conta os parâmetros (Passo 6) e ambiente (Passo 0) definir o tempo ganho, e portanto o ROI do cliente.

Page 233: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

233

Wait Events – Causas e Correções

Page 234: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

234

Leituradb file scatteread read / db file sequential read / direct path read / db file parallel readfree buffer / buffer busy / read by oher session latch: cache buffers chains / latch: cache buffers lru chaingc cr request / gc buffer busy / gc buffer busy acquire / gc buffer busy release

Gravação control file single write / control file parallel write / control file sequential readdb file single write / db file parallel writedirect path write

Gravação LGRWlog buffer spacelog file parallel write / log file single write / log file sequential readlog file switch (checkpoint incomplete) / log file switch completionlog file switch (archiving needed)log file sync

Wait Events: Causas similares

Page 235: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

235

Design / Concorrência / Troubleshootingenqueue: TXenqueue: TMenqueue: HWenqueue: SQenqueue: CFfree buffer / buffer busy / read by oher sessiongc cr request / gc buffer busy / gc buffer busy acquire / gc buffer busy releaselatch: shared pool / latch: library cachelatch: cache buffers chains / latch: cache buffers lru chainlatch: row cache objects

Compilação / Concorrêncialatch free / latch: library cachelibrary cache pin / library cache lock

RedeSQL*Net message from client / SQL*Net message to clientSQL*Net more data from client / SQL*Net more data to clientSQL*Net break/reset from client / SQL*Net break/reset to client

Wait Events: Causas similares

Page 236: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

236

Leitura● Cache (SGA)● DB File Multiblock Read Count● Database Writers● ASM● Directo I/O● Hugepages● Compression (OLAP Compression, OLTP Compression, InMemory)● Result Cache● Partitioning● CBO Configuration● Object Statistics● System Statistics● SQL● I/O● Active Data Guard

Correção de Wait

Page 237: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

237

Tire um SNAPSHOT avulso.$ sqlplus / AS SYSDBASQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;

Execute a carga no sistema.$ unzip -q swingbench261046.zip$ cd swingbench/bin./charbench -uc 10 -cs //localhost/ORCL

Tire outro SNAPSHOT avulso.$ sqlplus / AS SYSDBASQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;

Tire um relatório AWR comparando os dois SNAPSHOTs.SQL> @?/rdbms/admin/awrrpt.sql

Analise o relatório AWR.

237

Lab 7.1: AWR

Page 238: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

238

Revisão

238

Page 239: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

239

● O Banco de Dados está lento agora:● Encontrar indícios do gargalo na V$SYSTEM_EVENT.● Encontrar indícios do gargalo na V$SESSION_WAIT.● Encontrar o(s) SID(s) ofensor na V$SESSION_WAIT.● Encontrar o maior Wait Event deste(s) SID(s) na V$SESSION_EVENT.● Corrigir o maior Wait Event possível.● Se o tempo esta satisfatório, finalizar o processo.

● O Banco de Dados estava lento ontem:● Encontrar indícios do gargalo na V$SYSTEM_EVENT (histórico).● Encontrar o maior Wait Event via Statspack / AWR.● Corrigir o maior Wait Event possível.● Se o tempo esta satisfatório, finalizar o processo.

● Este SQL está lento:● Executar o comando SQL com Extended SQL Trace.● Encontrar indícios do gargalo durante a execução do SQL Trace.● Encontrar o maior Wait Event via tkprof.● Corrigir o maior Wait Event possível.● Se o tempo esta satisfatório, finalizar o processo.

239

Método de Tuning

Page 240: Oracle Performance Diagnostics & Tuning 18cnervinformatica.com.br/Downloads/Materiais/OPDT-18c.pdf · Server Draining ahead of relocating or stopping services or PDB ... SQL*Net message

240

Perguntas?

Ricardo Portilho [email protected]

Esta obra está licenciada sob a licençaCreative Commons Atribuição-SemDerivados 3.0 Brasil.Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.