Académique Documents
Professionnel Documents
Culture Documents
Comando no Oracle:
SQL> SELECT STATUS FROM V$INSTANCE;
4
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
5
Logs
Linux
# tail -f /var/log/messages
Oracle
$ tail -f $ORACLE_BASE/diag/rdbms/<database>/<SID>/trace/alert_<SID>.log
1
----------
1
Elapsed: 00:00:00.00
09:09:00 SYS@ORCL>
7
CDB Architecture
8
Deprecaton of Non-CDB Architecture
Documentação 12cR1:
Documentação 12cR2:
12cR2 CDB New Features
✔ ubset taodby
✔ Data Guard Broker PDB Migratoo or Faiiover
✔ CrossSPiatorm Import of a Piuggabie Database ioto a Muitteoaot Cootaioer Database
✔ I/O Rate Limits for PDBs
✔ Heat Map aod Automatc Data Optmizatoo upport for CDBs
✔ PDB Claracter et
✔ PDB Refresl
✔ Hiots io CONTAINER Query
✔ Paraiiei PDB Creatoo Ciause
✔ PDB Arclive Fiies (apdb Fiies)
✔ Defauit Tabiespace Ciause
✔ Ciooiog a PDB
✔ Near Zero Dowotme PDB Reiocatoo
✔ Logicai taodby Database to upport CDBs witl PDBs witl Difereot Claracter ets
✔ LogMioer to upport CDBs witl PDBs witl Difereot Claracter ets
✔ upport for PDBs witl Difereot Claracter ets, Time Zooe Fiie Versioos, aod Database Time
Zooes io a CDB
✔ Memory Resource Maoagemeot
✔ PerSProcess PGA Limits
✔ Performaoce Profies aod Maodatory PDB Profies
✔ CDBSLevei PDB Lockdowo
12cR2 CDB New Features
✔ Appiicatoo Root
✔ Proxy PDB
✔ Forwardiog Coooectoos to A New Address Based oo ervice
✔ erviceSLevei ACLs for TCP Protocoi
✔ Fiaslback Piuggabie Database
✔ Upgradiog a CDB Witl Ooe or More PDBs io a iogie Operatoo
✔ upport for Tlousaods of Piuggabie Databases for Eacl Muitteoaot Cootaioer Database
✔ Piuggabie Database Lockdowo Profies Eolaocemeots
✔ Piuggabie Database Operatog ystem Credeotais
✔ Oracie Eoterprise Maoager Database Express (EM Express) Resource Maoager upport
✔ EM Express: impiifyiog Coofguratoo for Muitteoaot Tlrougl iogie Port Access
✔ EM Express: Performaoce Hub Eolaocemeots
✔ Automatc Workioad Repository (AWR) upport for a Piuggabie Database (PDB)
✔ eiectve PDB Upgrades
✔ AWR_PDB_AUTOFLU H_ENABLED Ioitaiizatoo Parameter
✔ ENABLE_AUTOMATIC_MAINTENANCE_PDB Ioitaiizatoo Parameter
✔ AUTOTA K_MAX_ACTIVE_PDB Ioitaiizatoo Parameter
✔ Giobai aod lared Coooectoo Pooi for Oracie Cioud aod Muitteoaot Oracie Databases
✔ Prioritzed Rebaiaociog
✔ Oracie Database Vauit Commoo Reaims aod Commaod Ruies for Oracie Muitteoaot
Opton Multtenant
Multtenant - EE
Singletenant - SE2
Esse banco utliza CDB Arquitecture?
Que Containers / PDBs este banco tem?
Em que Container estou conectado?
Como conectar em um PDB? SET CONTAINER
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
$
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)
)
)
...
$
Como conectar em um PDB? tnsnames.ora
Como conectar em um PDB? Easy Connect
E agora, qual o nome da Instância? E do Banco?
E agora, qual o nome da Instância? E do Banco?
CDB e PDBs: STARTUP
CDB e PDBs: STARTUP
Alert Log
DATAFILEs
DATAFILEs
DATAFILEs
Dicionário de Dados
VIEWs
VIEWs
Parâmetros
Parâmetros
TABLESPACEs
USERs
USERs
USERs
USERs
SELECT em outros Containers
Criando (Clonando) um PDB
Criando (Clonando) um PDB
Criando (Clonando) um PDB
Criando (Clonando) um PDB
Criando (Clonando) um PDB
Unplug / Plug
Unplug / Plug
DROP
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;
Tuning: Top Ten Mistakes
1 S Bad coooectoo maoagemeot
2 S Bad use of cursors aod tle slared pooi
o S Bad QL
4 - Use of nonstandard initalizaton parameters
5 - Getng database I/O wrong
6 - Online redo log setup problems
7 - Serializaton of data blocks in the bufer cache due to lack of free lists, free list groups,
transacton slots (INITRANS), or shortage of rollback segments.
8 - Long full table scans
9 S Higl amouots of recursive ( Y ) QL
10 - Deployment and migraton errors
54
Tempo Computacional
R=S+W
OU
55 55
Instrumentação: Mainframe
56
Instrumentação: Solaris DTrace
57
OWI - Oracle Wait Interface
58
Evolução da OWI
●
Versoo 7a0a12: 104 Wait Eveots
●
Versoo 8: 140 Wait Eveots
●
Versoo 8i: 220 Wait Eveots
●
Versoo 9i: ~400 Waits Eveots
●
Versoo 10gR1: ~800 Wait Eveots
●
Versoo 11gR2: ~1100 Wait Eveots
●
Versoo 12cR1: ~1650 Wait Eveots
●
Versoo 12cR2: ~1800 Wait Eveots
59
Wait Events mais comuns
●
bufer busy / read by oler sessioo / iatcl: cacle bufers claios
●
free bufer
●
cootroi fie siogie write / cootroi fie paraiiei write / cootroi fie sequeotai read
●
db fie siogie write / db fie paraiiei read / db fie paraiiei write / db fie asyoc I/O submit
●
db fie scateread read / db fie sequeotai read
●
direct patl read / direct patl write
●
eoqueue
●
free bufer
●
iatcl free / iatcl: slared pooi / iatcl: iibrary cacle
●
iibrary cacle pio / iibrary cacle iock
●
iog bufer space
●
iog fie paraiiei write / iog fie siogie write / iog fie sequeotai read
●
iog fie switcl (arcliviog oeeded)
●
iog fie switcl (cleckpoiot iocompiete) / iog fie switcl compietoo
●
iog fie syoc
●
QL*Net message from ciieot / QL*Net message to ciieot
●
QL*Net more data from ciieot / QL*Net more data to ciieot
●
QL*Net break/reset from ciieot / QL*Net break/reset to ciieot
60 60
Wait Class
61
Análise de Desempenho
Granularidades de análise
●
QL tatemeot
●
essioo
●
Iostaoce
Cenários de Análise
●
Há ieotdoo agoraa
●
Tivemos ieotdoo ootema
Ferramentas de Análise
●
Dyoamic Performaoce Views
●
Exteoded QL Trace (Eveot 10046)
●
tatspack / AWR
Limitações - Views
●
Histórico
64 64
Lab 1.2: VIEWs
Mantenha uma sessão aberta com o SCOTT e outra com o SYS.
$ rlwrap sqlplus SCOTT/TIGER@PROD
$ rlwrap sqlplus / AS SYSDBA
6565
Lab 1.3: VIEWs
Na sessão do SCOTT, crie uma tabela de testes, e a duplique 9 vezes.
Enquanto os INSERTs estão sendo executados, verifque a V$SESSION_WAIT na sessão do SYS.
Anote o tempo do últmo INSERT.
SQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS;
SQL> INSERT INTO T SELECT * FROM T;
SQL> INSERT INTO T SELECT * FROM T;
SQL> INSERT INTO T SELECT * FROM T;
SQL> INSERT INTO T SELECT * FROM T;
SQL> INSERT INTO T SELECT * FROM T;
SQL> INSERT INTO T SELECT * FROM T;
SQL> INSERT INTO T SELECT * FROM T;
SQL> INSERT INTO T SELECT * FROM T;
SQL> INSERT INTO T SELECT * FROM T;
SQL> COMMIT;
66
Lab 1.4: VIEWs
Na sessão do SYS, verifque 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?
67
Lab 1.5: VIEWs
Na sessão do SYS, adicione 10 Redo Logs de 1GB cada.
$ mkdir -p /u01/app/oracle/FRA
SQL> ALTER SYSTEM SET db_recovery_file_dest_size=100G;
SQL> ALTER SYSTEM SET db_recovery_file_dest='/u01/app/oracle/FRA/';
SQL> ALTER DATABASE ADD LOGFILE SIZE 1G;
SQL> ALTER DATABASE ADD LOGFILE SIZE 1G;
...
68
Lab 1.6: VIEWs
Na sessão do SYS, enquanto os INSERTs estão sendo executados, verifque os Eventos também
pelas formas a seguir.
SQL> @PorQueOBancoEstaLento_01.sql
SQL> @PorQueOBancoEstaLento_02.sql
SQL> @PorQueOBancoEstaLento_03.sql
SQL> @PorQueOBancoEstavaLento_01.sql
$ chmod +x /home/oracle/oratop.RDBMS_12.1_LINUX_X64
$ /home/oracle/oratop.RDBMS_12.1_LINUX_X64 -f -i2 / AS SYSDBA
No oratop, aperte a tecla h, verifque e teste as opções.
69 69
Arquitetura
70
Sistema Operacional
71
top
Se Load Average = Cores = 100%
Se Load Average > Cores =
Se Load Average < Cores =
72
vmstat
73
iostat
74
Linux: Outras Ferramentas
75 75
Huge Pages / Large Pages
Deploying Oracle Database 12c on Red Hat Enterprise Linux 7 Best Practces
ltps://accessaredlatacom/oode/1282o0o/40/0 77
ASYNC / Direct I/O
78
I/O Scheduler
79
Arquitetura Oracle
80 80
Confguração de Memória
82 82
Confguração de Memória
db_biock_size = 8192
db_2k_cacle_size = 128M
db_4k_cacle_size = 128M
db_8k_cacle_size = 128M
db_16k_cacle_size = 128M
db_o2k_cacle_size = 128M
resuit_cacle_mode = MANUAL
resuit_cacle_max_size = 10M
resuit_cacle_max_resuit = 5
db_fie_muitbiock_read_couot = 128
iog_bufer = 8o88608
fast_start_mtr_target = 0
83 83
Compression
●
10g OLAP
●
11g OLTP
●
12c InMemory
84
Extended SQL Trace
85 85
Extended SQL Trace: Atvação
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 P
WHERE 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;
86
Extended SQL Trace: Atvaçã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;
/
87
Extended SQL Trace: tkprof
88
Lab 2.1: Extended SQL Trace
Feche e abra a sessão com o SCOTT com SET TIMING ON
SQL> EXIT
$ rlwrap sqlplus SCOTT/TIGER@PROD
SQL> SET TIMING ON
89 89
Lab 2.2: Extended SQL Trace
Com o usuário SCOTT, apague o conteúdo da grande tabela, altere o valor do parâmetro
db_fle_multblock_read_count (apenas na sessão) e reinsira os dados.
SQL> TRUNCATE TABLE X;
SQL> INSERT INTO X SELECT * FROM T;
SQL> COMMIT;
91 91
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 ~]$
92 92
SWAP
Terás uma área de SWAP com o dobro de tua RAM.
93 93
Checkpoint
Teus DATAFILEs deverão ter no máximo 2GB / 10GB / xGB.
Eventos relacionados
●
cootroi fie siogie write
●
cootroi fie paraiiei write
●
cootroi fie sequeotai read
●
db fie siogie write
Checkpoints:
●
Fuii Cleckpoiot
●
Tlread Cleckpoiot
●
Fiie Cleckpoiot
●
Object Cleckpoiot
●
Paraiiei Cleckpoiot
●
Iocremeotai Cleckpoiot
●
Cleckpoiot Log witcl
94 94
UNDO
95 95
Lendas do Oracle
●
Todo teu ELECT deverá utiizar um íodice, para que eie seja rápidoa
●
Utiizarás HINTs, pois tu és mais sábio que o Oraciea
●
e coietar estatstcas em 100%, os piaoos de execuçoo seroo perfeitosa
●
Noo coietarás estatstcas do diciooário de dadosa
●
Deverás separar teus dados e íodicesa
●
Deverás separar teus dados em diversas TABLE PACEsa
●
Noo labiiitarás AUTOEXTEND ONa
●
Utiizarás RAID 5, pois é mais rápido para ieiturasa
●
Coiocar os Redo Logs em D (ODA?)a
●
Noo permitrás mais que um WITCH a cada 20 mioutosa
●
Mas ooo terás graodes REDO LOGsa
●
Executarás REBUILD de íodices reguiarmeotea
●
Executarás MOVE de tabeias reguiarmeotea
●
e graode a tabeia toroarSse, a partciooarása
●
e quiseres mais veiocidade, usarás RACa
●
Quaoto mais CPUs, mais rápido teu baoco de dados seráa
●
e teus RATIO estverem aitos, feiizes estaroo teus usuáriosa
●
empre que possívei, aumeotarás seu DB_CACHE_ IZE e HARED_POOLa
●
e os dados estoo oa memória, tudo será rápidoa
●
O Exadata resoive todos os probiemas de desempeoloa
●
Desabiiitarás o AWR / TAT PACK, pois eie causa ieotdooa
●
Noo utiizarás memória automátcaa Tu és mais sábio que o Oraciea
●
e usar, deixarás a GA_TARGET um pouco meoor que a GA_MAX_ IZEa
●
AUTOMATIC QL TUNING é um dos cavaieiros do apocaiipsea
96 96
Lab 3.1: LGWR x DBWR
Feche e abra a sessão com o SCOTT com SET TIMING ON
SQL> CONN SCOTT/TIGER@PROD
SQL> SET TIMING ON
97
Wait Events - Detalhes
98 98
Referência
99 99
Performance Tuning Guide
100 100
Performance Tuning Guide
101 101
MOS
102 102
OWI: Fontes de Consulta
Oracle Database Reference (explicação simples, direta)
ltp://docsaoracieacom/database/121/REFRN/waiteveots00oaltmBBGGIBDJI
Oracle Database Performance Tuning Guide (explicação melhor, orientada a causas / soluções)
ltp://docsaoracieacom/database/121/TGDBA/pfgrf_iostaoce_tuoealtmBTGDBA94497
MOS / My Oracle Support / Metalink (várias notas sobre Wait Events específcos)
ltps://supportaoracieacom/
103 103
bufer busy
Explicação: O bioco soiicitado está em uso, pois outra sessoo está carregaodo o bioco
para o DB_CACHE_ IZE, ou outra sessoo está utiizaodo o bioco oo DB_CACHE_ IZE em
um modo iocompatveia
Causa: DB_CACHE_ IZE iosufcieote, ou QL ioefcieotea
Correção: Aumeote o DB_CACHE_ IZE ou aitere o QLa
104 104
read by other session
Explicação: O bioco soiicitado está em uso, pois outra sessoo está carregaodo o bioco
para o DB_CACHE_ IZE, ou outra sessoo está utiizaodo o bioco oo DB_CACHE_ IZE em
um modo iocompatveia
Causa: DB_CACHE_ IZE iosufcieote, ou QL ioefcieotea
Correção: Aumeote o DB_CACHE_ IZE ou aitere o QLa
105 105
free bufer
Explicação: O RDBM aguarda biocos de DB_CACHE_ IZE iivresa
Causa: DB_CACHE_ IZE iosufcieotea
Correção: Aumeote o DB_CACHE_ IZEa
106 106
control fle single write / control fle parallel write
Explicação: Espera de I/O para gravar em CONTROLFILEsa
Causa: Excesso de gravaçoo oos CONTROLFILEs ou I/O ioefcieotea
Correção: Mioimize as gravações oos CONTROLFILEs ou meilore o mecaoismo de I/Oa
107 107
control fle sequental read
Explicação: Espera de I/O para ier os CONTROLFILEsa
Causa: Excesso de ieitura oos CONTROLFILEs ou I/O ioefcieotea
Correção: Mioimize as ieituras oos CONTROLFILEs ou meilore o mecaoismo de I/Oa
108 108
db fle parallel write / db fle async I/O submit
Explicação: Gravações de dados oos DATAFILEs esperam peio I/Oa
Causa: Excesso de gravações ou ieotdoo de I/Oa
Correção: Mioimize as gravações ou meilore o mecaoismo de I/Oa
109 109
db file single write
Explicação: Uma gravaçoo oo HEADER do DATAFILE espera peio I/Oa
Causa: Excesso de gravações oo HEADER dos DATAFILEs ou ieotdoo de I/Oa
Correção: Mioimize as gravações oo HEADER dos DATAFILEs ou meilore o mecaoismo de
I/Oa
110 110
db fle parallel read
Explicação: Duraote RECOVER ou duraote PREFETCHING, ieituras de DATAFILEs esperam
peio I/Oa
Causa: RECOVER muito ioogo, PREFETCHING excessivo, ou ieotdoo de I/Oa
Correção: Aceiere o RECOVER, mioimize o PREFETCHING, ou meilore o mecaoismo de I/
Oa
111 111
User I/O
112 112
MBRC: scateread / sequental
Em “db fle scateread read” ocorre “db fle sequental read” quando:
S O bioco já está oo cacle;
S O bioco está oo foai do Exteot;
S Excede o iimite do sistema operaciooai;
S UNDOa
113
db fle scatered read
Explicação: Duraote FT , ieituras de DATAFILEs esperam peio I/Oa
Causa: DB_CACHE_ IZE iosufcieote, FT desoecessário ou ieotdoo de I/O
Correção: Aumeote o DB_CACHE_ IZE, eiimioe o FT , ou meilore o mecaoismo de I/Oa
114 114
db fle sequental read
Explicação: Duraote a ieitura de um bioco, ieituras de DATAFILEs esperam peio
mecaoismo de I/Oa
Causa: DB_CACHE_ IZE iosufcieote, ieitura desoecessária ou ieotdoo de I/O
Correção: Aumeote o DB_CACHE_ IZE, eiimioe a ieitura desoecessária, ou meilore o
mecaoismo de I/Oa
115 115
direct path read [temp] / direct path write [temp]
Explicação: Leitura / gravaçoo eotre DATAFILEs / TEMPFILEs e PGAa
Causa: PGA iosufcieote, ou ieotdoo de I/Oa
Correção: Aumeote a PGA, ou meilore o mecaoismo de I/Oa
116 116
enqueue
Explicação: Mecaoismo de fia ordeoada do RDBM a
Causa: Diversas, depeodeodo do tpo de fiaa
Correção: Diversas, depeodeodo do tpo de fiaa
117 117
latch free
Explicação: Mecaoismo de fia desordeoada do RDBM a
Causa: Diversas, depeodeodo do tpo de fiaa
Correção: Diversas, depeodeodo do tpo de fiaa
118 118
library cache pin / library cache lock
Explicação: Uso iocompatvei do objeto eotre duas sessõesa
Causa: Uso do objeto de forma iocompatvei eotre duas sessõesa
Correção: Fioaiizar o uso do objeto por uma das sessõesa
QL> ELECT /*+ ORDERED */ W1a ID WAITING_ E ION, H1a ID HOLDING_ E ION, WaKGLLKTYPE
LOCK_OR_PIN, WaKGLLKHDL ADDRE , DECODE(HaKGLLKMOD,0,’Nooe’,1,’Nuii’,2,’ lare’,o,’Exciusive’,'Uokoowo’)
MODE_HELD, DECODE(WaKGLLKREQ,0,’Nooe’,1,’Nuii’,2,’ lare’,o,’Exciusive’,'Uokoowo’) MODE_REQUE TED FROM
DBA_KGLLOCK W, DBA_KGLLOCK H, V$ E ION W1, V$ E ION H1 WHERE (((HaKGLLKMOD != 0) AND
(HaKGLLKMOD != 1) AND ((HaKGLLKREQ = 0) OR (HaKGLLKREQ = 1))) AND (((WaKGLLKMOD = 0) OR (WaKGLLKMOD=
1)) AND ((WaKGLLKREQ != 0) AND (WaKGLLKREQ != 1)))) AND WaKGLLKTYPE = HaKGLLKTYPE AND WaKGLLKHDL =
HaKGLLKHDL AND WaKGLLKU E = W1a ADDR AND HaKGLLKU E = H1a ADDR;
119 119
log bufer space
Explicação: Mais espaço oo LOG_BUFFER é oecessário para gravaçõesa
Causa: LOG_BUFFER iosufcieote, REDO LOGs iosufcieotes, ou I/O ieotoa
Correção: Aumeote o LOG_BUFFER, aumeote a quaotdade / tamaolo de REDO LOGs, ou
meilore o mecaoismo de I/Oa
120 120
log fle parallel write
Explicação: Duraote gravaçoo de REDO LOGs, o LGWR espera peio I/Oa
Causa: Excesso de membros oos grupos de REDO LOGs ou ieotdoo de I/Oa
Correção: Reduza a quaotdade de membros oos grupos de REDO LOGs ou meilore o
mecaoismo de I/Oa
121 121
log fle single write
Explicação: Duraote gravaçoo oo HEADER de um REDO LOGs, o LGWR espera peio I/Oa
Causa: Excesso de gravações oo HEADER do REDO LOG ou ieotdoo de I/Oa
Correção: Reduza a quaotdade de gravações oo HEADER do REDO LOG ou meilore o
mecaoismo de I/Oa
122 122
log fle sequental read
Explicação: Duraote ieitura de REDO LOGs, o LGWR espera peio I/Oa
Causa: Leotdoo de I/Oa
Correção: Meilore o mecaoismo de I/Oa
123 123
log fle switch
Explicação: Todos os grupos de REDO LOGs foram utiizados e aioda soo oecessários para
um eveotuai RECOVER, pois o ARCo aioda ooo criou os ARCHIVED REDO LOGs e o DBWR
aioda ooo gravou seu cooteúdo oos DATAFILEsa
Causa: REDO LOGs subSdimeosiooados, coofguraçoo ioadequada de destoo de
ARCHIVED REDO LOGs ou I/O ioefcieotea
Correção: Aumeotar os REDO LOGs em quaotdade e/ou tamaolo, corrigir a
coofguraçoo de destoo do ARCo, ou meilorar o mecaoismo de I/Oa
Variações:
●
iog fie switcl compietoo
●
iog fie switcl (cleckpoiot iocompiete)
●
iog fie switcl (private straod fusl iocompiete)
●
iog fie switcl (arcliviog oeeded)
●
iog fie switcl (cieariog iog fie)
124 124
log fle sync
Explicação: Um CHECKPOINT foi executado, e precisa ser registrado oo REDO LOG, e o
LGRW está aguardaodo peio mecaoismo de I/Oa
Causa: COMMIT em quaotdade excessiva, ou I/O ioefcieotea
Correção: Reduzir a quaotdade de COMMITs ou otmizar o mecaoismo de I/Oa
125 125
SQL*Net message to / from client
Explicação: Espera duraote comuoicaçoo via rede com o protocoio QL*Neta
Causa: essoo ioatva, iatêocia de rede ou iimitaçoo do ciieotea
Correção: Eiimioar a sessoo ioatva, mioimizar a iatêocia oa rede ou mioimizar a iimitaçoo do ciieotea
Variações
●
QL*Net message from ciieot
●
QL*Net message to ciieot
●
QL*Net more data from ciieot
●
QL*Net more data to ciieot
●
QL*Net break/reset to ciieot
●
QL*Net message from dbiiok
●
QL*Net message to dbiiok
●
QL*Net more data from dbiiok
●
QL*Net more data to dbiiok
●
QL*Net break/reset to dbiiok
126 126
Lab 4.1: Infuenciando SQLs
Com o usuário SCOTT, crie um índice BTREE na coluna OWNER da tabela T:
SQL> CREATE INDEX IDX_T ON T(OWNER);
127 127
Lab 4.2: Infuenciando SQLs
Execute o SQL_TUNE do SQL sem HINT.
SQL> CONN / AS SYSDBA
SQL> 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;
/
128
Lab 4.3: Infuenciando SQLs
Execute este SQL e anote seu tempo de execução:
SQL> SELECT COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = 'T';
Com o usuário SYS, dê as permissões necessárias para que o usuário SCOTT utlize o
DBMS_ADVANCED_REWRITE:
$ sqlplus / AS SYSDBA
SQL> GRANT EXECUTE ON DBMS_ADVANCED_REWRITE TO SCOTT;
SQL> GRANT CREATE MATERIALIZED VIEW TO SCOTT;
129 129
Lab 4.4: Infuenciando SQLs
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;
/
130 130
Paralelismo
Permite Query, DML e DDL.
131
Paralelismo
Parâmetros:
PARALLEL_MIN_ ERVER = Número eotre 0 e PARALLEL_MAX_ ERVER a
PARALLEL_MAX_ ERVER = De 0 a o600a
PARALLEL_MIN_PERCENT = De 0 a 100a
PARALLEL_AUTOMATIC_TUNING: Deprecated.
PARALLEL_IO_CAP_ENABLED = Deprecated.
132
Lab 4.5: Infuenciando SQLs
Com o usuário SCOTT, comare estes SQLs.
SQL> SELECT COUNT(*) FROM X;
SQL> +SELECT /*+ PARALLEL(X 4) */ COUNT(*) FROM X;
SQL> SELECT /*+ PARALLEL(X 20) */ COUNT(*) FROM X;
SQL> SELECT /*+ PARALLEL(X 40) */ COUNT(*) FROM X;
133
Paralelismo
SQL> SELECT SID, SERIAL#, QCSID, QCSERIAL# FROM V$PX_SESSION;
134
Estatstcas
135
Estatstcas e SQL Engine
Optmizer Statstcs
Tabie statstcs
Number of rows
Number of biocks
Average row ieogtl
Coiumo statstcs
Number of distoct vaiues (NDV) io coiumo
Number of ouiis io coiumo
Data distributoo (listogram)
Exteoded statstcs
Iodex statstcs
Number of ieaf biocks
Average data biocks per Key
Leveis
Iodex ciusteriog factor
System Statstcs
I/O performaoce aod utiizatoo
CPU performaoce aod utiizatoo
136
Estatstcas - 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;
137
Estatstcas - Í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;
138
Estatstcas - 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;
139
Coleta de Estatstcas - 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;
140
Quando coletar? Coleta automátca
Quando coletar? Coleta automátca
Quando coletar? Coleta automátca
Quando coletar? OPTIMIZER_DYNAMIC_SAMPLING
Nível 0 = Noo lá coietaa
Nível 1 = Coieta o2 biocosa
e lá peio meoos 1 tabeia partciooada oo QL sem estatstcasa
e esta tabeia ooo tem íodicesa
e esta tabeia tem mais que 64 biocosa
Nível 2 = Coieta 64 biocosa
Coieta se lá peio meoos uma tabeia do QL sem estatstcasa
Nível 3 = Coieta 64 biocosa
Coieta se o Nívei 2 é ateodido OU se é utiizada expressoo oo WHEREa
Nível 4 = Coieta 64 biocosa
Coieta se o oívei o é ateodido OU se o QL utiiza AND ou OR eotre múitpios predicadosa
Nível 5 = Coieta 128 biocosa
Coieta se o oívei 4 é ateodidoa
Nível 6 = Coieta 256 biocosa
Coieta se o oívei 4 é ateodidoa
Nível 7 = Coieta 512 biocosa
Coieta se o oívei 4 é ateodidoa
Nível 8 = Coieta 1024 biocosa
Coieta se o oívei 4 é ateodidoa
Nível 9 = Coieta 4086 biocosa
Coieta se o oívei 4 é ateodidoa
Nível 10 = Coieta todos os biocosa
Coieta se o oívei 4 é ateodidoa
Nível 11 (Adaptve Dynamic Sampling: >= 11.2.0.4) = Coieta ? Biocosa Coieta quaodo?
Coleta de Estatstcas
Verifque os planos de execução dos SQL abaixo.
SQL> CONN SCOTT/TIGER
SQL> SET AUTOTRACE ON EXPLAIN
SQL> 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';
145
Estatstcas: Coleta Manual
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');
146 146
Como coletar? Opções
ESTIMATE_PERCENT
DBMS_STATS.AUTO_SAMPLE_SIZE / N
BLOCK_SAMPLE
FALSE / TRUE
DEGREE
NULL / N
GRANULARITY
AUTO / ALL / DEFAULT / GLOBAL / GLOBAL AND PARTITION / PARTITION / UBPARTITION
CASCADE
DBM _ TAT aAUTO_CA CADE / TRUE / FAL E
OPTIONS
GATHER / GATHER AUTO / GATHER STALE / GATHER EMPTY
GATHER_SYS
TRUE / FALSE
NO_INVALIDATE
DBM _ TAT aAUTO_INVALIDATE / TRUE / FALSE
Estatstcas - 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' AND TABLE_NAME = ‘T’ ORDER BY 1,2,4;
148
Como coletar? Histogramas
METHOD_OPT
FOR ALL COLUMNS SIZE AUTO
FOR ALL [INDEXED | HIDDEN] COLUMN IZE [N | REPEAT | AUTO | KEWONLY]
FOR COLUMN column IZE [N | REPEAT | AUTO | KEWONLY]
Exemplos:
FOR ALL COLUMN SIZE 1
FOR ALL COLUMN IZE 100
FOR ALL COLUMN IZE AUTO
FOR ALL COLUMN IZE REPEAT
FOR ALL COLUMN IZE KEWONLY
FOR ALL INDEXED COLUMN SIZE 1
FOR ALL INDEXED COLUMN IZE 100
FOR ALL INDEXED COLUMN IZE AUTO
FOR ALL INDEXED COLUMN IZE REPEAT
FOR ALL INDEXED COLUMN IZE KEWONLY
FOR COLUMN C1 SIZE 1
FOR COLUMN C1 IZE 100
FOR COLUMN C1 IZE AUTO
FOR COLUMN C1 IZE REPEAT
FOR COLUMN C1 IZE KEWONLY
Coleta de Estatstcas
Verifque os planos de execução dos SQL abaixo.
SQL> SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE FROM T GROUP BY OBJECT_TYPE
ORDER BY 1;
SQL> CREATE INDEX IND_T ON T(OBJECT_TYPE);
SQL> SET AUTOTRACE ON EXPLAIN
SQL> 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';
150
Frequency Histograms
Utlizados se:
S e o NDV é meoor ou iguai que a quaotdade de Buckets iodicados oa coieta;
- É utlizado AUTO_SAMPLE_SIZE na execução da coleta.
151
Height Balanced Histograms
Utlizados se:
S e o oúmero de Buckets iodicados oa coieta é meoor que o NDVa
152
Top Frequency Histograms (12c)
Utlizados se:
S e o NDV é maior que a quaotdade de Buckets iodicados oa coieta;
S É utiizado AUTO_ AMPLE_ IZE oa execuçoo da coieta;
S e o perceotuai de iiolas ocupadas peios Top Vaiues é iguai ou maior que p, seodo que p = (1S
(1/Buckets))*100a
153
Hybrid Histograms (12c)
Utlizados se:
S e o oúmero de Buckets iodicados oa coieta é meoor que o NDV;
S É utiizado AUTO_ AMPLE_ IZE oa execuçoo da coieta;
S e os critétos para Top Frequeocy Histograms ooo se apiicama
154
Histogramas
S Buckets: máximo de 254 / 127 (2048 oo 12c);
S Frequeocy Histograms;
S HeigltSBaiaoced Histograms;
S Top Frequeocy Histograms (12c);
S Hybrid Histograms (12c)a
Problemas:
S Tabeias que ooo precisam de Histogramas;
S Custo de coieta;
S eosibiiidade a coieta por AMPLE;
S eosibiiidade a momeoto da coieta (Novos pedidos às 22:00?);
S Biod Variabies (pré AC );
S Frequeocy: e um vaior ooo está em um Bucket, será coosiderada metade da cardioaiidade do
vaior meoos popuiar;
S HeigltSBaiaoced: e um vaior ooo é popuiar (só está em 1 Bucket), será coosiderada a
cardioaiidade = oúmero de iiolas ooo popuiares / oúmero de vaior ooo popuiares (11gR2)a
htp:////docs.oracle.com//datab.ase//121//TGSLL//tgsql_histo.htm
155
Como coletar?
Controle de Opções
QL> EXEC DBM _ TAT a ET_DATABASE_PREF ('DEGREE','2');
QL> EXEC DBM _ TAT a ET_SCHEMA_PREF (' OE','CA CADE','TRUE');
QL> EXEC DBM _ TAT a ET_TABLE_PREF (' OE','CU TOMER ',' TALE_PERCENT',5);
CA CADE
DEGREE
E TIMATE_PERCENT
GRANULARITY
INCREMENTAL
INCREMENTAL_LEVEL
INCREMENTAL_ TALENE
METHOD_OPT
NO_INVALIDATE
PUBLI H
TALE_PERCENT
TABLE_CACHED_BLOCK
OPTION
Como coletar?
Coleta geral
EXEC DBMS_STATS.GATHER_DATABASE_STATS
(ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE,
BLOCK_SAMPLE=>FALSE,
DEGREE=>8,
GRANULARITY=>'AUTO',
CASCADE=>TRUE,
OPTIONS=>'GATHER STALE',
GATHER_SYS=>FALSE,
NO_INVALIDATE=>FALSE,
METHOD_OPT=>'FOR ALL COLUMNS SIZE SKEWONLY');
Como coletar?
Coleta por exceção
EXEC 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');
Como coletar? Coleta de exceção
HINT /*+ GATHER_PLAN_ TATI TIC */
Parâmetro TATI TIC _LEVEL = ALL
Como coletar? Coleta de exceção
OU
OU
$ unzip -q swingbench261046.zip
$ cd /home/oracle/swingbench/bin/
$ ./charbench -uc 10 -cs //nerv01/PROD -c ../configs/SOE_Server_Side_V2.xml
...
162
Extended Statstcs – Column Groups e Expression
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)');
163 163
Estatstcas Pendentes
164
Estatstcas Pendentes
Colete estatstcas, e verifque-as antes de publica-las.
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;
165
Restore de Estatstcas
166
Restore de Estatstcas
Execute o Restore de uma estatstca anterior.
SQL> COL TABLE_NAME FORMAT A10
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='T'
AND OWNER='SCOTT'
ORDER BY STATS_UPDATE_TIME DESC;
167
Transporte de Estatstcas
168
Transporte de Estatstcas
Origem
EXEC DBMS_STATS.CREATE_STAT_TABLE (ownname => 'HR', stattab =>
TESTE_STATS'));
Destno:
$ impdp HR/HR DIRECTORY=dump_directory DUMPFILE=TESTE_STATS.dmp
TABLES=TESTE_STATS
169
Fragmentação
170 170
Fragmentação
●
Biocos iogicameote cootguos espailados fsicameotea
●
Espaço iivre oa TABLE PACE / DATAFILEsa
●
Espaço iivre da TABELAa
●
Espaço iivre oo ÍNDICEa
●
Row Claioioga
●
Migrated Rowsa
●
EXTENTsa
171 171
Fragmentação: SHRINK
●
ALTER TABLESPACE ... COALESCE
●
ALTER TABLE ... ENABLE ROW MOVEMENT
●
ALTER TABLE ... SHRINK SPACE COMPACT
●
ALTER TABLE ... SHRINK SPACE
●
ALTER TABLE ... MOVE
172 172
Fragmentação: Row Chaining
174 174
Lab 5.1: Fragmentação
$ sqlplus SCOTT/TIGER@PROD
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 TABLE T1 MOVE;
SQL> ALTER INDEX T1_IDX1 REBUILD;
SQL> @IndexesToRebuild-UPDATEs.sql
175 175
Lab 5.2: Fragmentação
$ sqlplus SCOTT/TIGER@PROD
CREATE 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;
176 176
Lab 5.3: Fragmentação
UPDATE X4 SET OBJECT_NAME =
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' WHERE OBJECT_TYPE = 'SYNONYM';
COMMIT;
177 177
Lab 5.4: Fragmentação
$ rlwrap sqlplus / AS SYSDBA
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT');
SQL> @OracleBaseAdvisor.sql TABLESPACE USERS NULL
178 178
Limitação de Recursos
179 179
Instance Caging
●
11.2.0.1: CPU_COUNT
●
12.1.0.1: PROCESSOR_GROUP_NAME
180 180
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
181 181
Lab 6.1 – Resource Plan
Analise o código do arquivo ResourcePlan.sql:
●
Usuário OE: OLTP, deve ter muita prioridade duraote o dia, e pouca duraote a ooitea
●
Usuário COTT: ADSHOC, só pode utiizar CPU que oeolum dos usuários acima estver utiizaodoa
●
Outros: OTHER _GROUP, só podem utiizar CPU que oeolum dos usuários acima estver utiizaodoa
Conecte com o usuário SCOTT, e verifque se ele está no Consumer Group correto.
SQL> SELECT USERNAME, RESOURCE_CONSUMER_GROUP FROM V$SESSION WHERE
USERNAME IS NOT NULL;
182
182
Relatório AWR
183 183
AWR != Relatório AWR
184
Evolução do Statspack / AWR
185
Evolução do (BSTAT - ESTAT) / Statspack / AWR
186
Custo do AWR
187
Custo do AWR
Parâmetro CONTROL_MANAGEMENT_PACK_ACCESS
NONE
DIAGNO TIC (AWR, ADDM, etca)
DIAGNO TIC+TUNING ( QL Tuoiog Advisor, QLAccess Advisor, etc) DEFAULT
188
Custo do AWR
ltp://wwwaoracieacom/us/corporate/priciog/priceSiists/iodexaltmi 189
Statspack
190
Statspack
Instalação
$ sqlplus / AS SYSDBA
– - Em 12c com CDB, execute: alter session set "_oracle_script"=true;
SQL> @?/rdbms/admin/spcreate.sql
Enter value for perfstat_password: Nerv2018
Enter value for default_tablespace: SYSAUX
Enter value for temporary_tablespace: TEMP
Desinstalação
$ sqlplus / AS SYSDBA
SQL> @?/rdbms/admin/spdrop.sql
191
Statspack
Job de Coleta de Snapshots
$ sqlplus PERFSTAT/Nerv2018
SQL> @?/rdbms/admin/spauto.sql
Snapshots avulsos
$ sqlplus PERFSTAT/Nerv2018
SQL> EXECUTE STATSPACK.SNAP;
192
Statspack
Remoção de Snapshots
$ sqlplus PERFSTAT/Nerv2018
SQL> @?/rdbms/admin/sppurge.sql
Enter value for losnapid: 3
Enter value for hisnapid: 4
--
-- Post warning
193
Statspack
Extração do Relatório Statspack
$ sqlplus PERFSTAT/Nerv2018
SQL> @?/rdbms/admin/spreport.sql
Enter value for begin_snap: 3
Enter value for end_snap: 4
Enter value for report_name: Teste01
$ vi Teste01.lst
194
Gerenciamento do AWR
195
Gerenciamento do AWR
Parâmetro CONTROL_MANAGEMENT_PACK_ACCESS
NONE
DIAGNO TIC (AWR, ADDM, etca)
DIAGNO TIC+TUNING ( QL Tuoiog Advisor, QLAccess Advisor, etc) DEFAULT
Parâmetro TIMED_STATISTICS
true DEFAULT
faise
Parâmetro STATISTICS_LEVEL
BA IC
TYPICAL DEFAULT
ALL
196
Gerenciamento do AWR
Parâmetro STATISTICS_LEVEL = TYPICAL
●
Automatc Workioad Repository (AWR) oapslots
●
Automatc Database Diagoostc Mooitor (ADDM)
●
Aii serverSgeoerated aierts
●
Automatc GA Memory Maoagemeot
●
Automatc optmizer statstcs coiiectoo
●
Object ievei statstcs
●
Eod to Eod Appiicatoo Traciog (V$CLIENT_ TAT )
●
Database tme distributoo statstcs (V$ E _TIME_MODEL aod V$ Y _TIME_MODEL)
●
ervice ievei statstcs
●
Bufer cacle advisory
●
MTTR advisory
●
lared pooi siziog advisory
●
egmeot ievei statstcs
●
PGA Target advisory
●
Timed statstcs
●
Mooitoriog of statstcs
197
Gerenciamento do AWR
Snapshot avulso
$ sqlplus / AS SYSDBA
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
198
Gerenciamento do AWR
Criação de Baseline
$ sqlplus / AS SYSDBA
SQL> 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 SYSDBA
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE
(BASELINE_NAME => 'BEFORE MIGRATION',
CASCADE => FALSE);
199
Gerenciamento do AWR
Automatc Workload Repository Views
DBA_HI T_WR_CONTROL
DBA_HI T_ NAP HOT
DBA_HI T_DATABA E_IN TANCE
DBA_HI T_DB_CACHE_ADVICE
DBA_HI T_DYN_REMA TER_ TAT
DBA_HI T_IO TAT_DETAIL
DBA_HI T_ QL_PLAN
200
Scripts AWR
201
Scripts AWR
AWR Report
@?/rdbms/admin/awrrpt.sql
Enter value for report_type: html
Enter value for num_days: 1
Enter value for begin_snap: 40
Enter value for end_snap: 41
Enter value for report_name: AWR_01.html
202
Scripts AWR
AWR Informaton
@?/rdbms/admin/awrinfo.sql
Enter value for report_name: awrinfo.txt
203
AWR Informaton
204
AWR Warehouse
205
Oracle RAC AWR Report
206
Scripts AWR
AWR Compare Periods Report
@$ORACLE_HOME/rdbms/admin/awrddrpt.sql
Enter value for report_type: html
Enter value for num_days: 2
Enter value for begin_snap: 33
Enter value for end_snap: 34
Enter value for num_days2: 1
Enter value for begin_snap2:
Enter value for end_snap2: 56
Enter value for report_name: AWR_DIFF_01.html
207
AWR Compare Periods Report
208
Scripts AWR
SQL Statement
@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql
Enter value for report_type: html
Enter value for num_days: 1
Enter value for begin_snap: 40
Enter value for end_snap: 41
Enter value for sql_id: 062savj8zgzut
Enter value for report_name: AWR_SQL_01.html
209
SQL Statement
210
SQL Statement
DISPLAY AWR
SQL> SELECT SQL_ID, SQL_TEXT FROM DBA_HIST_SQLTEXT
WHERE SQL_TEXT LIKE '%SELECT ENAME FROM EMP%';
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('a10jnjwd22gs8'));
TOP N SQL
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS
(RETENTION=>86400,
INTERVAL=>30,
TOPNSQL=>100);
Colored SQL
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.ADD_COLORED_SQL('az9p3ctumhpr8');
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.REMOVE_COLORED_SQL('az9p3ctumhpr8');
211
Scripts AWR
Automatc Database Diagnostc Monitor (ADDM)
SQL> @$ORACLE_HOME/rdbms/admin/addmrpt.sql
Enter value for begin_snap: 51
Enter value for end_snap: 52
Enter value for report_name: ADDM_01.txt
212
ADDM
213
Scripts AWR
Actve Session History Reports
@$ORACLE_HOME/rdbms/admin/ashrpt.sql
Enter value for report_type: html
Enter value for begin_time: -30
Enter value for duration: 10
Enter value for report_name: ASH_01.html
214
Scripts AWR
Actve Session History Reports (Specifc Database Instance)
@$ORACLE_HOME/rdbms/admin/ashrpti.sql
Enter value for report_type: html
Enter value for dbid: 1383175475
Enter value for inst_num: 1
Enter value for begin_time:
Enter value for begin_time: -30
Enter value for duration: 10
Enter value for slot_width: 30
Enter 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
215
ASH Report
216
ASH Report
217
Método de Tuning com AWR
218
Método de Tuning com AWR
Passo 0: Ver o que o AWR não vê.
Identfcar os detalhes da infraestrutura do amb.iente fora do escopo da instância.
219
Método de Tuning com AWR
Passo 4: Identfcar Wait Events agressores
Defnir os Wait Events relevantes, agressores do tempo penalizador da efciência (Passo 3),
analisando em conjunto de tpo (Foreground e Background), agrupando por causa.
220
Seções do AWR
221
Seções do AWR: Cabeçalho
Passo 2: Analisar Cabeçalho.
Conhecer o amb.iente (Passo 0) e o escopo (Passo 1) analisado. A partr do tempo analisado,
defne-se a gravidade do tempo afetado. Utlizar as estatstcas de carga em caso de comparação
de períodos ou amb.ientes.
222
Seções do AWR: Cabeçalho
Elapsed Time * Cores = 100%
Se DB Time > (Elapsed Time * Cores) =
Se DB Time < (Elapsed Time * Cores) =
223
Seções do AWR: Efciência
Passo 3: Analisar Time Model.
Defnir a efciência do amb.iente, e se é necess rio Tuning de Instância // Banco ou não.
224
Seções do AWR: Carga
Passo 2: Analisar Cabeçalho.
Conhecer o amb.iente e o escopo analisado. A partr do intervalo analisado, defne-se a gravidade
do tempo afetado. Utlizar as estatstcas de carga em caso de comparação de períodos.
225
Seções do AWR: Carga
Passo 2: Analisar Cabeçalho.
Conhecer o amb.iente e o escopo analisado. A partr do intervalo analisado, defne-se a gravidade
do tempo afetado. Utlizar as estatstcas de carga em caso de comparação de períodos.
226
Seções do AWR: Wait Events
Passo 4: Identfcar Wait Events agressores
Defnir os Wait Events relevantes, agressores do tempo penalizador da efciência (Passo 3),
analisando em conjunto de tpo (Foreground e Background), agrupando por causa.
227
Seções do AWR: Wait Events
Passo 4: Identfcar Wait Events agressores
Defnir os Wait Events relevantes, agressores do tempo penalizador da efciência (Passo 3),
analisando em conjunto de tpo (Foreground e Background), agrupando por causa.
228
Seções do AWR: Seções Acessórias
Passo 5: Analisar Acessórios dos Wait Events
De acordo com os Wait Events relevantes defnidos (Passo 4), encontrar nas seções
acessórias do relatório as causas associadas, levando em conta o escopo de tempo
analisado (Passo 2).
229
Seções do AWR: Seções Acessórias
Passo 5: Analisar Acessórios dos Wait Events
De acordo com os Wait Events relevantes defnidos (Passo 4), encontrar nas seções
acessórias do relatório as causas associadas, levando em conta o escopo de tempo
analisado (Passo 2).
230
Seções do AWR: Parâmetros
Passo 6: Analisar Parâmetros
Identfcar agravantes, atenuantes e oportunidades dos parâmetros relacionados aos Wait
Events agressores (Passo 4).
231
Cálculo do ROI
Passo 7: Defnir correções e ganhos.
De acordo com o tempo identfcado 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 amb.iente (Passo
0) defnir o tempo ganho, e portanto o ROI do cliente.
232
Cálculo do ROI
Passo 7: Defnir correções e ganhos.
De acordo com o tempo identfcado 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 amb.iente (Passo 0) defnir o tempo ganho, e portanto o ROI do cliente.
233
Cálculo do ROI
Passo 7: Defnir correções e ganhos.
De acordo com o tempo identfcado 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 amb.iente (Passo
0) defnir o tempo ganho, e portanto o ROI do cliente.
234
Cálculo do ROI
Passo 7: Defnir correções e ganhos.
De acordo com o tempo identfcado 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 amb.iente (Passo
0) defnir o tempo ganho, e portanto o ROI do cliente.
235
Wait Events – Causas e Correções
236
Wait Events: Causas similares
Leitura
db fie scateread read / db fie sequeotai read / direct patl read / db fie paraiiei read
free bufer / bufer busy / read by oler sessioo
iatcl: cacle bufers claios / iatcl: cacle bufers iru claio
gc cr request / gc bufer busy / gc bufer busy acquire / gc bufer busy reiease
Gravação
cootroi fie siogie write / cootroi fie paraiiei write / cootroi fie sequeotai read
db fie siogie write / db fie paraiiei write
direct patl write
Gravação LGRW
iog bufer space
iog fie paraiiei write / iog fie siogie write / iog fie sequeotai read
iog fie switcl (cleckpoiot iocompiete) / iog fie switcl compietoo
iog fie switcl (arcliviog oeeded)
iog fie syoc
237
Wait Events: Causas similares
Design / Concorrência / Troubleshootng
eoqueue: TX
eoqueue: TM
eoqueue: HW
eoqueue: Q
eoqueue: CF
free bufer / bufer busy / read by oler sessioo
gc cr request / gc bufer busy / gc bufer busy acquire / gc bufer busy reiease
iatcl: slared pooi / iatcl: iibrary cacle
iatcl: cacle bufers claios / iatcl: cacle bufers iru claio
iatcl: row cacle objects
Compilação / Concorrência
iatcl free / iatcl: iibrary cacle
iibrary cacle pio / iibrary cacle iock
Rede
QL*Net message from ciieot / QL*Net message to ciieot
QL*Net more data from ciieot / QL*Net more data to ciieot
QL*Net break/reset from ciieot / QL*Net break/reset to ciieot
238
Correção de Wait
Leitura
●
Cacle ( GA)
●
DB Fiie Muitbiock Read Couot
●
Database Writers
●
A M
●
Directo I/O
●
Hugepages
●
Compressioo (OLAP Compressioo, OLTP Compressioo, IoMemory)
●
Resuit Cacle
●
Parttooiog
●
CBO Coofguratoo
●
Object tatstcs
●
ystem tatstcs
●
QL
●
I/O
●
Actve Data Guard
239
Lab 7.1: AWR
Tire um SNAPSHOT avulso.
$ sqlplus / AS SYSDBA
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
240 240
Revisão
241 241
Método de Tuning
●
O Banco de Dados está lento agora:
●
Eocootrar iodícios do gargaio oa V$ Y TEM_EVENTa
●
Eocootrar iodícios do gargaio oa V$ E ION_WAITa
●
Eocootrar o(s) ID(s) ofeosor oa V$ E ION_WAITa
●
Eocootrar o maior Wait Eveot deste(s) ID(s) oa V$ E ION_EVENTa
●
Corrigir o maior Wait Eveot possíveia
●
e o tempo esta satsfatório, foaiizar o processoa
●
O Banco de Dados estava lento ontem:
●
Eocootrar iodícios do gargaio oa V$ Y TEM_EVENT (listórico)a
●
Eocootrar o maior Wait Eveot via tatspack / AWRa
●
Corrigir o maior Wait Eveot possíveia
●
e o tempo esta satsfatório, foaiizar o processoa
●
Este SQL está lento:
●
Executar o comaodo QL com Exteoded QL Tracea
●
Eocootrar iodícios do gargaio duraote a execuçoo do QL Tracea
●
Eocootrar o maior Wait Eveot via tkprofa
●
Corrigir o maior Wait Eveot possíveia
●
e o tempo esta satsfatório, foaiizar o processoa
242 242
Perguotas?