Professional Documents
Culture Documents
OPDT 12cR2
OPDT 12cR2
Comando no Oracle:
SQL> SELECT STATUS FROM V$INSTANCE;
3
Logs
Linux
$ sudo tail -f /var/log/messages
Oracle
$ tail -f
$ORACLE_BASE/diag/rdbms/<database>/<SID>/trace/alert_<SID>.log
4
Multitenant / Singletenant Architecture
5
Deprecation of Non-CDB Architecture
Documentação 12cR1:
Documentação 12cR2:
12cR2 PDB New Features
✔ Subset Standby
✔ Data Guard Broker PDB Migration or Failover
✔ Cross-Platform Import of a Pluggable Database into a Multitenant Container Database
✔ I/O Rate Limits for PDBs
✔ Heat Map and Automatic Data Optimization Support for CDBs
✔ PDB Character Set
✔ PDB Refresh
✔ Hints in CONTAINERS Query
✔ Parallel PDB Creation Clause
✔ PDB Archive Files (.pdb Files)
✔ Default Tablespace Clause
✔ Cloning a PDB
✔ Near Zero Downtime PDB Relocation
✔ Logical Standby Database to Support CDBs with PDBs with Different Character Sets
✔ LogMiner to Support CDBs with PDBs with Different Character Sets
✔ Support for PDBs with Different Character Sets, Time Zone File Versions, and Database Time
Zones in a CDB
✔ Memory Resource Management
✔ Per-Process PGA Limits
✔ Performance Profiles and Mandatory PDB Profiles
✔ CDB-Level PDB Lockdown
12cR2 PDB New Features
✔ Application Root
✔ Proxy PDB
✔ Forwarding Connections to A New Address Based on Service
✔ Service-Level ACLs for TCP Protocol
✔ Flashback Pluggable Database
✔ Upgrading a CDB With One or More PDBs in a Single Operation
✔ Support for Thousands of Pluggable Databases for Each Multitenant Container Database
✔ Pluggable Database Lockdown Profiles Enhancements
✔ Pluggable Database Operating System Credentials
✔ Oracle Enterprise Manager Database Express (EM Express) Resource Manager Support
✔ EM Express: Simplifying Configuration for Multitenant Through Single Port Access
✔ EM Express: Performance Hub Enhancements
✔ Automatic Workload Repository (AWR) Support for a Pluggable Database (PDB)
✔ Selective PDB Upgrades
✔ AWR_PDB_AUTOFLUSH_ENABLED Initialization Parameter
✔ ENABLE_AUTOMATIC_MAINTENANCE_PDB Initialization Parameter
✔ AUTOTASK_MAX_ACTIVE_PDBS Initialization Parameter
✔ Global and Shared Connection Pool for Oracle Cloud and Multitenant Oracle Databases
✔ Prioritized Rebalancing
✔ Oracle Database Vault Common Realms and Command Rules for Oracle Multitenant
Option Multitenant
Multitenant - EE
Singletenant - SE2
CDB, Root, PDBs, Containers
Dicionário de Dados
Verificação de informações
Conectando a CDB / PDB
Conectando a CDB / PDB
Conectando a CDB / PDB
Conectando a CDB / PDB
Alteração de Parâmetros
Alteração de Parâmetros
TABLESPACEs
Usuários e Privilégios
Usuários e Privilégios
Usuários e Privilégios
Backup
CDB e PDBs
RMAN> BACKUP DATABASE;
RMAN> BACKUP DATAFILE 1;
RMAN> BACKUP DATAFILE 1,3;
CDB
RMAN> BACKUP DATABASE ROOT;
RMAN> BACKUP TABLESPACE SYSTEM;
RMAN> BACKUP TABLESPACE SYSTEM,SYSAUX;
PDBs
RMAN> BACKUP PLUGGABLE DATABASE DEV1;
RMAN> BACKUP PLUGGABLE DATABASE DEV1,DEV2;
RMAN> BACKUP TABLESPACE DEV1:SYSTEM;
Restore / Recover
CDB e PDBs
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> RESTORE DATAFILE 1;
RMAN> RECOVER DATAFILE 1;
CDB
RMAN> RESTORE DATABASE ROOT;
RMAN> RECOVER DATABASE ROOT;
RMAN> RESTORE TABLESPACE SYSTEM;
RMAN> RECOVER TABLESPACE SYSTEM;
PDBs
RMAN> RESTORE PLUGGABLE DATABASE DEV1;
RMAN> RECOVER PLUGGABLE DATABASE DEV1;
RMAN> RESTORE TABLESPACE DEV1:USERS;
RMAN> RECOVER TABLESPACE DEV1:USERS;
Restore / Recover
Tuning: Top Ten Mistakes
1 - Bad connection management
2 - Bad use of cursors and the shared pool
3 - Bad SQL
4 - Use of nonstandard initialization parameters
5 - Getting database I/O wrong
6 - Online redo log setup problems
7 - 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 scans
9 - High amounts of recursive (SYS) SQL
10 - Deployment and migration errors
29 29
Tempo
30 30
Tempo Computacional
R=S+W
OU
31 31
Instrumentação: Mainframe
32 32
Instrumentação: Solaris
33 33
Oracle Wait Interface
34 34
Oracle Wait Interface
35 35
Evolução da OWI
●
Versão 7.0.12: 104 Wait Events
●
Versão 8: 140 Wait Events
●
Versão 8i: 220 Wait Events
●
Versão 9i: 400 Waits Events
●
Versão 10gR1: >800 Wait Events
●
Versão 11gR2: >1100 Wait Events
●
Versão 12cR1: >1650 Wait Events
36 36
Enterprise Manager
37 37
Wait Classes
• Administrative
• Application
• Cluster
• Commit
• Concurrency
• Configuration
• Idle
• Network
• Other
• Queueing
• Scheduler
• System I/O
• User I/O
38 38
Sistema Operacional
39 39
top
40 40
vmstat
41 41
Conceitos Básicos
42 42
Arquitetura Oracle
43 43
Configuração de Memória
44 44
Configuração de Memória
Automático – AMM (Automatic Memory Management) (>= 11g)
memory_max_target = 16G
memory_target = 16G
sga_target = 0
pga_aggregate_target = 0
pga_aggregate_limit = 2G
45 45
Configuração de Memória
Manual (>= 9i)
sga_max_size = 15G
db_cache_size = 10G
shared_pool_size = 2G
large_pool_size = 128M
java_pool_size = 128M
streams_pool_size = 128M
46 46
Configuração de Memória
db_block_size = 8192
db_2k_cache_size = 128M
db_4k_cache_size = 128M
db_8k_cache_size = 128M
db_16k_cache_size = 128M
db_32k_cache_size = 128M
result_cache_mode = MANUAL
result_cache_max_size = 10M
result_cache_max_result = 5
db_file_multiblock_read_count = 128
log_buffer = 8388608
fast_start_mttr_target = 0
47 47
Compression
●
10g OLAP
●
11g OLTP
●
12c InMemory
48
Lab 1.1: Configuração de Memória
●
Verifique os parâmetros elementares em seu banco de dados.
●
Altere o parâmetro memory_max_target para 0.
●
Altere o parâmetro memory_target para 0.
●
Altere o parâmetro sga_max_size para 800M.
●
Altere o parâmetro sga_target para 0.
●
Altere o parâmetro db_cache_size para 400M.
●
Altere o parâmetro shared_pool_size para 200M.
●
Altere o parâmetro pga_aggregate_target para 100M.
49 49
Granularidades de Análise
●
SQL Statement
●
Session
●
Instance
50 50
Cenários de Análise
●
Há lentidão agora.
●
Tivemos lentidão ontem.
51 51
Ferramentas de Análise
●
Dynamic Performance Views
●
Extended SQL Trace (Event 10046)
●
Statspack / AWR
52 52
Limitações da OWI
53 53
Limitações: OWI
●
Não é um monitoramento End-to-End
●
Sem dados de consumo de CPU
●
Sem dados de consumo de Memória
●
Bugs
●
Imprecisões
54 54
Limitações: Views
●
Sem histórico
55 55
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
56 56
Limitações: Statspack / AWR
●
Baixa granularidade
●
Apenas histórico
57 57
Lab 2.1: Views
→ V$SYSTEM_EVENT
→ V$SESSION_EVENT
→ V$SESSION_WAIT
●
Verifique as Dynamic Performance Views da OWI em seu banco de dados.
●
Quais suas colunas mais importantes?
●
Que Waits você tem em seu banco de dados?
●
Habitue-se a seu conteúdo.
58 58
Wait Events mais comuns
59 59
Wait Events mais comuns
●
buffer busy
●
free buffer
●
read by oher session
●
control file single write / control file parallel write / control file sequential read
●
db file single write / db file parallel read / db file parallel write
●
db file scatteread read / db file sequential read
●
direct path read / direct path write
●
enqueue
●
free buffer
●
latch free / latch: library cache / latch: cache buffers chains
●
library cache pin / library cache lock
●
log buffer space
●
log file parallel write / log file single write / log file sequential read
●
log file switch (archiving needed)
●
log file switch (checkpoint incomplete) / log file switch completion
●
log file sync
●
SQL*Net message from client / SQL*Net message to client
●
SQL*Net more data from client / SQL*Net more data to client
●
SQL*Net break/reset from client / SQL*Net break/reset to client
60 60
Lab 3.1: Gravações
Habilite o usuário SCOTT.
SQL> ALTER USER SCOTT ACCOUNT UNLOCK IDENTIFIED BY TIGER;
SQL> GRANT SELECT ANY DICTIONARY TO SCOTT;
6161
Lab 3.2: Gravações
Feche e abra a sessão com o SCOTT com SET TIMING ON
SQL> CONN SCOTT/TIGER
SQL> SET TIMING ON
62 62
Lab 3.3: Gravações
Responda as seguintes perguntas:
- Onde foi gasto mais tempo nesta sessão?
- A que se referem os maiores Wait Events?
- Qual dos maiores Wait Events podem ser reduzidos?
- A eliminação de um Wait Event que pode ser reduzido, causará uma melhoria de quanto tempo?
- Como reduzir este Wait Event?
Remova a tabela T2, feche e abra a sessão com o SCOTT, e repita a operação.
63 63
Extended SQL Trace
64 64
Extended SQL Trace: Ativação
●
Em toda a instância
●
Em sua sessão
●
Em outra sessão
65 65
Extended SQL Trace: Níveis
0 - Trace OFF
2 - Regular SQL Trace
4 - Nível 2, + Bind Variable
8 - Nível 2 + Wait Events
12 - Nível 2, + Bind Variable + Wait Events
66
Extended SQL Trace: Ativação
Todas versões:
SQL> ALTER SESSION SET SQL_TRACE=TRUE;
SQL> ALTER SESSION SET SQL_TRACE=FALSE;
SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';
SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
67
Extended SQL Trace: Ativação
Versões >= 8I
SQL> SELECT P.SPID OS_PROCESS_ID
FROM V$SESSION S, V$PROCESS P
WHERE S.PADDR = P.ADDR AND S.USERNAME = 'SCOTT';
SQL> ORADEBUG SETOSPID 12345;
SQL> ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12;
SQL> ORADEBUG TRACEFILE_NAME;
SQL> ORADEBUG EVENT 10046 TRACE NAME CONTEXT OFF;
68
Extended SQL Trace: Ativação
Todas versões:
SQL> EXEC DBMS_SUPPORT.START_TRACE(WAITS=>TRUE, BINDS=>FALSE);
SQL> EXEC DBMS_SUPPORT.STOP_TRACE;
69
Extended SQL Trace: Ativação
CREATE OR REPLACE TRIGGER SET_TRACE AFTER LOGON ON DATABASE
BEGIN
IF USER IN ('SCOTT') THEN
EXECUTE IMMEDIATE
'ALTER SESSION SET TRACEFILE_IDENTIFIER=''SESSAO_RASTREADA_PORTILHO''';
EXECUTE IMMEDIATE
'ALTER SESSION SET TIMED_STATISTICS=TRUE';
EXECUTE IMMEDIATE
'ALTER SESSION SET MAX_DUMP_FILE_SIZE=UNLIMITED';
EXECUTE IMMEDIATE
'ALTER SESSION SET EVENTS ''10046 TRACE NAME CONTEXT FOREVER, LEVEL 12''';
END IF;
END;
/
70
Extended SQL Trace: Ativação
SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';
SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
OU
71
Extended SQL Trace: tkprof
$ tkprof
Usage: tkprof tracefile outputfile [explain= ] [table= ]
[print= ] [insert= ] [sys= ] [sort= ]
table=schema.tablename Use 'schema.tablename' with 'explain=' option.
explain=user/password Connect to ORACLE and issue EXPLAIN PLAN.
print=integer List only the first 'integer' SQL statements.
aggregate=yes|no
insert=filename List SQL statements and data inside INSERT statements.
sys=no TKPROF does not list SQL statements run as user SYS.
record=filename Record non-recursive statements found in the trace file.
waits=yes|no Record summary for any wait events found in the trace file.
sort=option Set of zero or more of the following sort options:
prscnt number of times parse was called
prscpu cpu time parsing
prsela elapsed time parsing
prsdsk number of disk reads during parse
prsqry number of buffers for consistent read during parse
prscu number of buffers for current read during parse
prsmis number of misses in library cache during parse
...
72
Extended SQL Trace: tkprof
73
Extended SQL Trace: SQL Developer
74
Lab 4.1: Extended SQL Trace
Feche e abra a sessão com o SCOTT com SET TIMING ON
SQL> EXIT
$ sqlplus SCOTT/TIGER
SQL> SET TIMING ON
75 75
Lab 4.2: Extended SQL Trace
Com o usuário SCOTT, apague o conteúdo da grande tabela, altere o valor
do parâmetro db_file_multiblock_read_count (apenas na sessão) e reinsira
os dados.
SQL> TRUNCATE TABLE T2;
SQL> ALTER SESSION SET db_file_multiblock_read_count = 8;
SQL> INSERT INTO T2 SELECT * FROM T;
SQL> COMMIT;
76 76
Lendas do Oracle
77 77
RAM x SGA
Não utilizarás mais que 50% de tua RAM para a SGA.
[ricardo@Melquior ~]$ free
total used free shared buffers cached
Mem: 3719480 3262932 456548 797828 6308 1094712
-/+ buffers/cache: 2161912 1557568
Swap: 16777212 764576 16012636
[ricardo@Melquior ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 443G 325G 96G 78% /
tmpfs 1.8G 2.3M 1.8G 1% /dev/shm
[ricardo@Melquior ~]$
78 78
SWAP
Terás uma área de SWAP com o dobro de tua RAM.
79 79
Checkpoint
Teus DATAFILEs deverão ter no máximo 2GB / 10GB / xGB.
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
80 80
UNDO
Deverás executar COMMIT a cada N linhas.
Qual a transação mais longa que o sistema deve suportar?
UNDO_RETENTION
CREATE UNDO TABLESPACE … RETENTION GUARANTEE
AUTOEXTEND ON
81 81
Lendas do Oracle
●
Todo teu SELECT deverá utilizar um índice, para que ele seja rápido.
●
Utilizarás HINTs, pois tu és mais sábio que o Oracle.
●
Se coletar estatísticas em 100%, os planos de execução serão perfeitos.
●
Não coletarás estatísticas do dicionário de dados.
●
Deverás separar teus dados e índices.
●
Deverás separar teus dados em diversas TABLESPACEs.
●
Não habilitarás AUTOEXTEND ON.
●
Utilizarás RAID 5, pois é mais rápido para leituras.
●
Colocar os Redo Logs em SSD (ODA?).
●
Não permitirás mais que um SWITCH a cada 20 minutos.
●
Mas não terás grandes REDO LOGs.
●
Executarás REBUILD de índices regularmente.
●
Executarás MOVE de tabelas regularmente.
●
Se grande a tabela tornar-se, a particionarás.
●
Se quiseres mais velocidade, usarás RAC.
●
Quanto mais CPUs, mais rápido teu banco de dados será.
●
Se teus RATIOS estiverem altos, felizes estarão teus usuários.
●
Sempre que possível, aumentarás seu DB_CACHE_SIZE e SHARED_POOL.
●
Se os dados estão na memória, tudo será rápido.
●
O Exadata resolve todos os problemas de desempenho.
●
Desabilitarás o AWR / STATSPACK, pois ele causa lentidão.
●
Não utilizarás memória automática. Tu és mais sábio que o Oracle.
●
Se usar, deixarás a SGA_TARGET um pouco menor que a SGA_MAX_SIZE.
●
AUTOMATIC SQL TUNING é um dos cavaleiros do apocalipse.
82 82
Wait Events - Monitoração
83 83
V$SESSION_WAIT
SELECT W.SID, W.EVENT, W.SECONDS_IN_WAIT, SQL.SQL_TEXT
FROM GV$SESSION_WAIT W,
GV$SESSION S,
GV$PROCESS P,
GV$SQLTEXT SQL
WHERE W.SID = S.SID
AND S.PADDR = P.ADDR
AND SQL.ADDRESS = S.SQL_ADDRESS
AND SQL.HASH_VALUE = S.SQL_HASH_VALUE
AND W.WAIT_CLASS != 'Idle'
AND W.INST_ID = S.INST_ID
AND W.INST_ID = P.INST_ID
AND W.INST_ID = SQL.INST_ID
ORDER BY W.SECONDS_IN_WAIT, W.SID, SQL.PIECE;
84 84
V$SESSION_EVENT
SELECT EVENT, SUM(TIME_WAITED)
FROM V$SESSION_EVENT
WHERE WAIT_CLASS != 'Idle'
AND SID IN
(SELECT SID FROM V$SESSION WHERE USERNAME IS NOT NULL)
GROUP BY EVENT
ORDER BY 2;
85 85
V$SYSTEM_EVENT
CREATE TABLE PRE_SYSTEM_EVENT AS SELECT * FROM V$SYSTEM_EVENT;
EXECUTE DBMS_LOCK.SLEEP(60);
CREATE TABLE POS_SYSTEM_EVENT AS SELECT * FROM V$SYSTEM_EVENT;
86 86
oratop
$ /home/oracle/oratop.RDBMS_12.1_LINUX_X64 -h
$ /home/oracle/oratop.RDBMS_12.1_LINUX_X64 / AS SYSDBA
$ /home/oracle/oratop.RDBMS_12.1_LINUX_X64 -f -i2 / AS SYSDBA
87 87
Wait Events - Detalhes
88 88
Referência
89 89
Performance Tuning Guide
90 90
Performance Tuning Guide
91 91
MOS
92 92
OWI: Fontes de Consulta
Oracle Database Reference (explicação simples, direta)
http://docs.oracle.com/database/121/REFRN/waitevents003.htm#BGGIBDJI
MOS / My Oracle Support / Metalink (várias notas sobre Wait Events específicos)
https://support.oracle.com/
93 93
buffer busy
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.
94 94
buffer busy
95 95
free buffer
Explicação: O RDBMS aguarda blocos de DB_CACHE_SIZE livres.
Causa: DB_CACHE_SIZE insuficiente.
Correção: Aumente o DB_CACHE_SIZE.
96 96
read by other session
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.
97 97
control file parallel write
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.
98 98
control file single write
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.
99 99
control file sequential read
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.
100 100
db file parallel write
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.
101 101
db file single write
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.
102 102
db file parallel read
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.
103 103
User I/O
104 104
MBRC: scatteread / sequential
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.
105
Configuração do CBO - OLTP
●
OPTIMIZER_MODE (FIRST_ROWS_n / ALL_ROWS)
●
< DB_FILE_MULTIBLOCK_READ_COUNT
●
RESULT_CACHE
●
INMEMORY
●
OPTIMIZER_SECURE_VIEW_MERGING
●
QUERY_REWRITE_ENABLED
●
QUERY_REWRITE_INTEGRITY
●
STAR_TRANSFORMATION_ENABLED
●
GATHER_SYSTEM_STATISTICS
●
GATHER_DATABASE_STATISTICS
●
OPTIMIZER_DYNAMIC_SAMPLING
●
WORKAREA_SIZE_POLICY (AUTO / MANUAL)
●
AUTO: PGA_AGGREGATE_TARGET
●
MANUAL: BITMAP_MERGE_AREA_SIZE
HASH_AREA_SIZE
SORT_AREA_SIZE
SORT_AREA_RETAINED_SIZE
●
> OPTIMIZER_INDEX_CACHING
●
< OPTIMIZER_INDEX_COST_ADJ
●
Histograms
●
Extended Statistics
106
Configuração do CBO - OLAP
●
OPTIMIZER_MODE (FIRST_ROWS_n / ALL_ROWS)
●
> DB_FILE_MULTIBLOCK_READ_COUNT
●
RESULT_CACHE
●
INMEMORY
●
OPTIMIZER_SECURE_VIEW_MERGING
●
QUERY_REWRITE_ENABLED
●
QUERY_REWRITE_INTEGRITY
●
STAR_TRANSFORMATION_ENABLED
●
GATHER_SYSTEM_STATISTICS
●
GATHER_DATABASE_STATISTICS
●
OPTIMIZER_DYNAMIC_SAMPLING
●
WORKAREA_SIZE_POLICY (AUTO / MANUAL)
●
AUTO: PGA_AGGREGATE_TARGET
●
MANUAL: BITMAP_MERGE_AREA_SIZE
HASH_AREA_SIZE
SORT_AREA_SIZE
SORT_AREA_RETAINED_SIZE
●
< OPTIMIZER_INDEX_CACHING
●
> OPTIMIZER_INDEX_COST_ADJ
●
Histograms
●
Extended Statistics
107
db file scattered read
Explicação: Durante FTS, leituras de DATAFILEs esperam pelo I/O.
Causa: DB_CACHE_SIZE insuficiente, FTS desnecessário ou lentidão de I/O
Correção: Aumente o DB_CACHE_SIZE, elimine o FTS, ou melhore o
mecanismo de I/O.
108 108
db file sequential read
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/O
Correção: Aumente o DB_CACHE_SIZE, elimine a leitura desnecessária, ou
melhore o mecanismo de I/O.
109 109
direct path read / direct path write
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.
110 110
enqueue
Explicação: Mecanismo de fila ordenada do RDBMS.
Causa: Diversas, dependendo do tipo de fila.
Correção: Diversas, dependendo do tipo de fila.
111 111
latch free
Explicação: Mecanismo de fila desordenada do RDBMS.
Causa: Diversas, dependendo do tipo de fila.
Correção: Diversas, dependendo do tipo de fila.
112 112
library cache pin / library cache lock
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.
113 113
log buffer space
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.
114 114
log file parallel write
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.
115 115
log file single write
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.
116 116
log file sequential read
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.
117 117
log file switch
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.
Variações:
●
log file switch (clearing log file)
●
log file switch (archiving needed)
●
log file switch (checkpoint incomplete)
●
log file switch (private strand flush incomplete)
●
log file switch completion
118 118
log file sync
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.
119 119
SQL*Net message to / from client
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.
Variações
●
SQL*Net message from client
●
SQL*Net message to client
●
SQL*Net more data from client
●
SQL*Net more data to client
●
SQL*Net break/reset to client
●
SQL*Net message from dblink
●
SQL*Net message to dblink
●
SQL*Net more data from dblink
●
SQL*Net more data to dblink
●
SQL*Net break/reset to dblink
120 120
Lab 5.1: LGWR x DBWR
Feche e abra a sessão com o SCOTT com SET TIMING ON
SQL> CONN SCOTT/TIGER
SQL> SET TIMING ON
121
Parallel SQL
122 122
Parallel SQL
Permite Query, DML e DDL.
123 123
Parallel SQL
Parâmetros:
PARALLEL_MAX_SERVERS = De 0 a 3600.
PARALLEL_MIN_SERVERS = Número entre 0 e PARALLEL_MAX_SERVERS.
PARALLEL_MIN_PERCENT = De 0 a 100.
PARALLEL_AUTOMATIC_TUNING: Deprecated.
PARALLEL_IO_CAP_ENABLED = Deprecated.
124 124
Lab 6.1: Design de Aplicação
Abra a sessão com o SCOTT com SET TIMING ON.
Em seguida, faça um SELECT da tabela toda.
$ sqlplus SCOTT/TIGER
SQL> SET TIMING ON
SQL> SELECT COUNT(*) FROM T;
125 125
Paralelismo
SQL> SELECT SID, SERIAL#, QCSID, QCSERIAL# FROM V$PX_SESSION;
126 126
Lab 6.2: Design de Aplicação
Crie esta tabela com o usuário SCOTT:
SQL> CREATE TABLE T3 (NUMERO NUMBER);
127 127
Lab 6.3: Design de Aplicação
1a Sessão: 2a Sessão:
SQL> CREATE BITMAP INDEX
IDX_BITMAP_T3 ON T3(NUMERO);
SQL> INSERT INTO T3 VALUES (1); SQL> INSERT INTO T3 VALUES (10);
SQL> INSERT INTO T3 VALUES (1); SQL> INSERT INTO T3 VALUES (1);
SQL> INSERT INTO T3 VALUES (1); SQL> INSERT INTO T3 VALUES (10);
SQL> INSERT INTO T3 VALUES (10); SQL> INSERT INTO T3 VALUES (1);
128 128
BITMAP x BTREE
SQL> SELECT COUNT(*) FROM T; - - Sem índice.
COUNT(1)
———-
10936000
129 129
BITMAP x BTREE
SQL> SELECT COUNT(*) FROM T;
COUNT(1)
———-
10936000
130 130
Lab 6.4: Design de Aplicação
Abra uma sessão com o usuário SCOTT com SET TIMING ON:
131 131
Estatísticas
132 132
Estatísticas e SQL Engine
Optimizer Statistics
Table statistics
Number of rows
Number of blocks
Average row length
Column statistics
Number of distinct values (NDV) in column
Number of nulls in column
Data distribution (histogram)
Extended statistics
Index statistics
Number of leaf blocks
Average data blocks per Key
Levels
Index clustering factor
System Statistics
I/O performance and utilization
CPU performance and utilization
133
Estatísticas - Tabela
DBA_TABLES / ALL_TABLES / USER_TABLES
SELECT TABLE_NAME, NUM_ROWS, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, CHAIN_CNT,
AVG_ROW_LEN, SAMPLE_SIZE, LAST_ANALYZED FROM USER_TABLES ORDER BY 1;
134
Estatísticas - Índices
DBA_INDEXES / ALL_INDEXES / USER_INDEXES
SELECT 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;
135
Estatísticas - Colunas
DBA_TAB_COLUMNS / ALL_TAB_COLUMNS / USER_TAB_COLUMNS
SELECT 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;
136
OPTIMIZER_DYNAMIC_SAMPLING
137
OPTIMIZER_DYNAMIC_SAMPLING
138
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.SQL
ANALYZE TABLE emp LIST CHAINED ROWS INTO CHAINED_ROWS;
139
Estatísticas: Coleta Automática
Automatic Optimizer Statistics Collection
SQL> SELECT CLIENT_NAME, STATUS FROM DBA_AUTOTASK_CLIENT;
SQL> BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE (
CLIENT_NAME => 'AUTO OPTIMIZER STATS COLLECTION'
,OPERATION => NULL
,WINDOW_NAME => NULL
);
END;
/
SQL> BEGIN
DBMS_AUTO_TASK_ADMIN.ENABLE (
CLIENT_NAME => 'AUTO OPTIMIZER STATS COLLECTION'
,OPERATION => NULL
,WINDOW_NAME => NULL
);
END;
/
140
Estatísticas: Coleta Manual
Procedures para coleta
DBMS_STATS.GATHER_DATABASE_STATS
DBMS_STATS.GATHER_SCHEMA_STATS
DBMS_STATS.GATHER_TABLE_STATS
DBMS_STATS.GATHER_INDEX_STATS
141 141
Estatísticas: Opções de Coleta
ESTIMATE_PERCENT (Percentual ou DBMS_STATS.AUTO_SAMPLE_SIZE)
EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10);
EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE);
142 142
Estatísticas: Opções de Coleta
OPTIONS (GATHER, GATHER_STALE, GATHER_EMPTY, GATHER_AUTO)
EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>TRUE,
OPTIONS=>'GATHER_STALE');
EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>AUTO_CASCADE
OPTIONS=>'GATHER_AUTO);
143 143
Estatísticas: Opções de Coleta
NO_INVALIDATE (TRUE, FALSE, ou DBMS_STATS.AUTO_INVALIDATE)
EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>AUTO_CASCADE
OPTIONS=>'GATHER_AUTO, GRANULARITY=AUTO, NO_INVALIDATE=TRUE);
EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => 10, DEGREE=>2, CASCADE=>AUTO_CASCADE
OPTIONS=>'GATHER_AUTO, GRANULARITY=AUTO,
NO_INVALIDATE='DBMS_STATS.AUTO_INVALIDATE');
144 144
Estatísticas - Histogramas
DBA_TAB_COLUMNS / ALL_TAB_COLUMNS / USER_TAB_COLUMNS
DBA_TAB_HISTOGRAMS / ALL_TAB_HISTOGRAMS / USER_TAB_HISTOGRAMS
SELECT H.TABLE_NAME, H.COLUMN_NAME, C.HISTOGRAM, H.ENDPOINT_NUMBER,
H.ENDPOINT_ACTUAL_VALUE, H.ENDPOINT_REPEAT_COUNT FROM USER_TAB_HISTOGRAMS
H, USER_TAB_COLUMNS C WHERE H.TABLE_NAME = C.TABLE_NAME AND H.COLUMN_NAME
= C.COLUMN_NAME AND HISTOGRAM <> 'NONE' ORDER BY 1,2,4;
145
Histogramas
- 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
146
Frequency Histograms
Utilizados se:
- Se o NDV é menor ou igual que a quantidade de Buckets indicados na coleta;
- É utilizado AUTO_SAMPLE_SIZE na execução da coleta.
147
Height Balanced Histograms
Utilizados se:
- Se o número de Buckets indicados na coleta é menor que o NDV.
148
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.
149
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.
150
Estatísticas: Opções de Coleta
METHOD_OPT
FOR ALL COLUMNS SIZE 100
FOR ALL COLUMNS SIZE AUTO
FOR ALL COLUMNS SIZE REPEAT
FOR ALL COLUMNS SIZE SKEWONLY
FOR ALL INDEXED COLUMNS SIZE 100
FOR ALL INDEXED COLUMNS SIZE AUTO
FOR ALL INDEXED COLUMNS SIZE REPEAT
FOR ALL INDEXED COLUMNS SIZE SKEWONLY
FOR COLUMNS C1 SIZE 100
FOR COLUMNS C1 SIZE AUTO
FOR COLUMNS C1 SIZE REPEAT
EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,
METHOD_OPT=>'FOR ALL INDEXED COLUMNS SIZE AUTO');
151 151
Estatísticas: Opções de Coleta
Coleta geral
EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,
DEGREE=>2,
CASCADE=>AUTO_CASCADE
OPTIONS=>'GATHER_AUTO,
GRANULARITY=>AUTO,
NO_INVALIDATE=>'DBMS_STATS.AUTO_INVALIDATE');
EXEC DBMS_STATS.LOCK_TABLE_STATS('SCOTT','EMP');
152 152
Outras Estatísticas
Fixed Objects Statistics (V$SQL, V$SESSION, etc.)
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
153
System Statistics
Consulta
SQL> SELECT PNAME, PVAL1 FROM SYS.AUX_STATS$;
Remoção
SQL> EXEC DBMS_STATS.DELETE_SYSTEM_STATS;
Coleta NOWORKLOAD
SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS;
Coleta WORKLOAD
SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('START');
SQL> EXEC DBMS_STATS.GATHER_SYSTEM_STATS('STOP');
154
Extended Statistics – Column Groups
155
Extended Statistics – Column Groups
SQL> CONN SH/SH
SQL> SELECT DBMS_STATS.CREATE_EXTENDED_STATS(USER, 'CUSTOMERS')
FROM DUAL;
SQL> BEGIN
DBMS_STATS.GATHER_TABLE_STATS( 'SH','CUSTOMERS',
METHOD_OPT=>'FOR ALL COLUMNS SIZE SKEWONLY ' || 'FOR COLUMNS SIZE
SKEWONLY (CUST_STATE_PROVINCE,COUNTRY_ID)');
END;
/
156 156
Extended Statistics – Expression
157
Extended Statistics – Expression
SQL> CONN SH/SH
SQL> SELECT DBMS_STATS.CREATE_EXTENDED_STATS(USER, 'CUSTOMERS')
FROM DUAL;
SQL> BEGIN
DBMS_STATS.GATHER_TABLE_STATS('SH','CUSTOMERS'
,METHOD_OPT => 'FOR ALL COLUMNS SIZE SKEWONLY FOR COLUMNS
(LOWER(CUST_STATE_PROVINCE)) SIZE SKEWONLY');
END;
/
158 158
Estatísticas Pendentes
159
Estatísticas Pendentes
SQL> CONN SH/SH
SQL> 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;
160
Restore de Estatísticas
161
Restore de Estatísticas
SQL> CONN OE/OE
SQL> COL TABLE_NAME FORMAT A10
SQL> SELECT
TABLE_NAME,
TO_CHAR(STATS_UPDATE_TIME,'YYYY-MM-DD:HH24:MI:SS') AS STATS_MOD_TIME
FROM DBA_TAB_STATS_HISTORY
WHERE TABLE_NAME='ORDERS'
AND OWNER='OE'
ORDER BY STATS_UPDATE_TIME DESC;
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('OE', 'ORDERS');
162
Transporte de Estatísticas
163
Transporte de Estatísticas
Origem
EXEC DBMS_STATS.CREATE_STAT_TABLE (ownname => 'HR', stattab => TESTE_STATS'));
Destino:
$ impdp PORTILHO DIRECTORY=dump_directory DUMPFILE=TESTE_STATS.dmp
TABLES=TESTE_STATS
164
DBMS_SQLTUNE
165 165
DBMS_SQLTUNE
166
DBMS_SQLTUNE
167
Lab 7.1: DBMS_SQLTUNE
Escolha um dos SQLs mais lentos na V$SQL e o analise com DBMS_SQLTUNE.
168 168
Fragmentação
169 169
Fragmentação
●
Blocos logicamente contíguos espalhados fisicamente.
●
Espaço livre na TABLESPACE / DATAFILEs.
●
Espaço livre da TABELA.
●
Espaço livre no ÍNDICE.
●
Row Chaining.
●
Migrated Rows.
●
EXTENTs.
170 170
Fragmentação: SHRINK
●
ALTER TABLESPACE ... COALESCE
●
ALTER TABLE ... ENABLE ROW MOVEMENT
●
ALTER TABLE ... SHRINK SPACE COMPACT
●
ALTER TABLE ... SHRINK SPACE
●
ALTER TABLE ... MOVE
171 171
Fragmentação: Row Chaining
173 173
Fragmentação Índices - DELETEs
$ sqlplus SCOTT/TIGER
SQL> CREATE TABLE T1 AS SELECT * FROM ALL_OBJECTS;
SQL> INSERT INTO T1 SELECT * FROM T1;
SQL> INSERT INTO T1 SELECT * FROM T1;
SQL> INSERT INTO T1 SELECT * FROM T1;
SQL> INSERT INTO T1 SELECT * FROM T1;
SQL> COMMIT;
SQL> SELECT COUNT(*) FROM T1;
SQL> CREATE INDEX T1_IDX1 ON T1(OBJECT_TYPE);
174 174
Fragmentação Índices - UPDATEs
$ sqlplus SCOTT/TIGER
SQL> SET AUTOTRACE OFF
SQL> @IndexesToRebuild-UPDATEs.sql
SQL> UPDATE T1 SET OBJECT_TYPE = 'NO';
SQL> COMMIT;
SQL> @IndexesToRebuild-UPDATEs.sql
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT', 'T1');
SQL> @IndexesToRebuild-UPDATEs.sql
SQL> ALTER INDEX T1_IDX1 REBUILD;
SQL> @IndexesToRebuild-UPDATEs.sql
175 175
Lab 8.1: DBMS_ADVANCED_REWRITE
Abra uma sessão com o usuário SCOTT com SET TIMING ON:
176 176
Lab 8.2: DBMS_ADVANCED_REWRITE
Na sessão do usuário SCOTT, execute o DBMS_ADVANCE_REWRITE:
BEGIN
SYS.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE (
NAME => 'PORTILHO_REWRITE',
SOURCE_STMT => 'SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE
OBJECT_NAME = ''T''',
DESTINATION_STMT => 'SELECT COUNT(OBJECT_NAME) FROM T T_ALIAS WHERE
OBJECT_NAME = ''T''',
VALIDATE => FALSE,
REWRITE_MODE => 'TEXT_MATCH');
END;
/
177 177
Resource Plan
178 178
Instance Caging
●
11.2.0.1: CPU_COUNT
●
12.1.0.1: PROCESSOR_GROUP_NAME
179 179
Resource Plan
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
180 180
Resource Plan
181 181
Resource Plan
Mudanças de planos:
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'PEAKTIME';
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'OFF-PEAK';
Monitoração:
●
DBA_RSRC_CONSUMER_GROUP_PRIVS
●
DBA_RSRC_PLANS
●
V$SESSION
●
V$RSRC_PLAN
●
V$RSRC_CONSUMER_GROUP
●
V$RSRC_SESSION_INFO
●
V$RSRC_PLAN_HISTORY
●
V$RSRC_CONS_GROUP_HISTORY
●
V$RSRCMGRMETRIC
●
V$RSRCMGRMETRIC_HISTORY
182 182
Lab 9.1 – Resource Plan
Analise o código do arquivo ResourcePlan.sql.
183
183
Relatório AWR
184 184
Lab 10.1: AWR
Tire um SNAPSHOT avulso.
$ sqlplus / AS SYSDBA
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
185 185
Revisão
186 186
Método de Tuning
●
O Banco de Dados está lento agora:
●
Encontrar indícios do gargalo na V$SYSTEM_EVENT.
●
Encontrar indícios do gargalo na V$SESSION_WAIT.
●
Encontrar o(s) SID(s) ofensor na V$SESSION_WAIT.
●
Encontrar o maior Wait Event deste(s) SID(s) na V$SESSION_EVENT.
●
Corrigir o maior Wait Event possível.
●
Se o tempo esta satisfatório, finalizar o processo.
●
O Banco de Dados estava lento ontem:
●
Encontrar indícios do gargalo na V$SYSTEM_EVENT (histórico).
●
Encontrar o maior Wait Event via Statspack / AWR.
●
Corrigir o maior Wait Event possível.
●
Se o tempo esta satisfatório, finalizar o processo.
●
Este SQL está lento:
●
Executar o comando SQL com Extended SQL Trace.
●
Encontrar indícios do gargalo durante a execução do SQL Trace.
●
Encontrar o maior Wait Event via tkprof.
●
Corrigir o maior Wait Event possível.
●
Se o tempo esta satisfatório, finalizar o processo.
187 187
Perguntas?