Translate

Mostrar mensagens com a etiqueta dba db2. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta dba db2. Mostrar todas as mensagens

sexta-feira, 15 de fevereiro de 2019

☕🔥 DB2 z/OS — COMO IDENTIFICAR THREADS PRESOS, PROBLEMAS DE POOL, CPU, MEMÓRIA, LOG E PERFORMANCE


 

Bellacosa Mainframe analisando o DB2 em busca de problemas

☕🔥 DB2 z/OS — COMO IDENTIFICAR THREADS PRESOS, PROBLEMAS DE POOL, CPU, MEMÓRIA, LOG E PERFORMANCE

No Db2 Mainframe, praticamente tudo gira em torno de:

  • Threads

  • Buffer Pools

  • EDM Pool

  • Logging

  • Tablespaces

  • I/O

  • CPU

  • Storage

  • Rede (DDF/DRDA)

  • Tempo de resposta

O segredo do Sysprog/DBA é saber:

“QUAL COMANDO MOSTRA O QUE ESTÁ SOFRENDO?”


🔥 1 — IDENTIFICANDO THREADS PRESOS (HANG / LOCK / DEADLOCK)


✅ COMANDO MAIS IMPORTANTE

-DISPLAY THREAD(*)

ou resumido:

-DIS THD(*)

📌 O que ele mostra

  • Threads ativos

  • Usuário

  • Plano

  • CPU consumida

  • Tempo ativo

  • WAITs

  • Locks

  • Corrrelation ID

  • Workstation

  • DDF

  • CICS

  • Batch


✅ EXEMPLO PRÁTICO

-DIS THD(*) TYPE(ACTIVE)

Saída típica:

STATUS=WAIT
PLAN=DSNESPCS
AUTHID=APPUSER
CORRID=CICS001
ELAPSED=00:12:55

📌 Interpretação

CampoSignificado
WAITThread parada esperando
ELAPSED altoPossível travamento
CICS001Região CICS origem
PLANAplicação responsável

🔥 Identificando lock

-DIS DATABASE(DBPAGTO) LOCKS

Exemplo

RESOURCE TYPE = PAGESET
LOCK STATE = CLAIM

📌 Isso indica

  • Objeto preso

  • Thread segurando lock

  • Possível contention


🔥 DEADLOCKS

-DIS THREAD(*) SERVICE(WAIT)

Procure:

STATUS=WAIT

🔥 CANCELANDO THREAD PROBLEMÁTICA

-CANCEL THREAD(token)

ou:

-CANCEL DDF THREAD(*)

Cuidado:

  • Pode causar rollback gigante

  • Pode explodir log

  • Pode gerar timeout em cascata


☕ 2 — PROBLEMAS EM BUFFER POOL

Bufferpool = cache de páginas do Db2.

Quando sofre:

  • CPU sobe

  • I/O explode

  • Tempo resposta piora


✅ COMANDO

-DISPLAY BUFFERPOOL(BP0)

ou:

-DIS BPOOL(BP0)

📌 O QUE ANALISAR

CampoProblema
VPSEQTMuito alto → sequential flooding
HIT RATIOBaixo → excesso de I/O
PREFETCHIneficiente
WRITE ENGINEGargalo disco

✅ EXEMPLO

-DIS BPOOL(BP1)

Saída:

HIT RATIO = 72%

📌 Interpretação

Muito ruim.

Ideal:

TipoIdeal
OLTP> 95%
Batch> 85%

🔥 ALTERANDO BUFFERPOOL

-ALTER BUFFERPOOL(BP1) VPSIZE(200000)

📌 O que isso faz

Aumenta memória do pool.

Menos I/O.
Menos CPU.
Mais cache.


☕ 3 — PROBLEMAS EM TABLESPACE


✅ STATUS DO TABLESPACE

-DIS DATABASE(DBFIN) SPACENAM(TSPAGTO)

📌 O QUE PROCURAR

StatusSignificado
STOPPparado
AREO*advisory reorg
RECPrecovery pending
COPYprecisa COPY
GRECPgroup recovery pending

✅ EXEMPLO

STATUS=AREO*

📌 Interpretação

Tablespace precisa REORG.

Impactos:

  • Performance ruim

  • Overflow

  • Mais GETPAGE

  • Mais CPU


🔥 RESOLVENDO

REORG TABLESPACE DBFIN.TSPAGTO

☕ 4 — ALTO CONSUMO DE CPU


✅ THREADS CONSUMINDO CPU

-DIS THREAD(*) DETAIL

Procure:

CPU=

📌 Exemplo

CPU=000123.456

Possíveis causas

ProblemaEfeito
SQL ruimCPU explode
Tablespace fragmentadoMais GETPAGE
Índice erradoTable scan
RUNSTATS antigoAccess path ruim
Lock contentionReprocessamento

🔥 COMANDO IMPORTANTE

-DIS STATS

📌 Mostra

  • EDM pool

  • Dynamic SQL cache

  • RID pool

  • Sort

  • Storage


☕ 5 — ALTO CONSUMO DE MEMÓRIA (STORAGE)


✅ COMANDO

-DIS STORAGE

📌 Mostra

  • Above the bar

  • Below the bar

  • 31-bit

  • 64-bit

  • Agentes Db2


EXEMPLO

DBM1
MSTR
DIST

📌 Interpretação

Address SpaceFunção
DBM1Buffer pools
MSTRControle
DISTDDF/network

🔥 STORAGE LEAK

Sinais:

  • DIST crescendo sem parar

  • Threads DDF não encerram

  • EDM saturado


☕ 6 — PROBLEMAS COM LOG DATASET

O log é o coração do recovery.

Quando sofre:

  • Commit lento

  • Rollback lento

  • Batch trava

  • CICS congela


✅ COMANDO

-DIS LOG

📌 Mostra

  • Active logs

  • Archive logs

  • Checkpoints

  • Utilização


EXEMPLO

ACTIVE LOG COPY 1
ACTIVE LOG COPY 2

📌 O QUE PROCURAR

ProblemaSinal
Log fullarchive atrasado
Checkpoint lentocommit lento
Dual logging falhandorisco recovery

🔥 LOG SATURADO

Mensagem clássica:

DSNJ110I

ou:

ARCHIVE LOG REQUIRED

🔥 SOLUÇÃO

  • Mais active logs

  • Logs maiores

  • Melhor disco

  • Archive mais rápido


☕ 7 — TEMPO DE RESPOSTA LENTO


✅ COMANDO

-DIS THREAD(*) DETAIL

Compare:

CampoInterpretação
ELAPSEDtempo total
CPUCPU real
SUSPENDespera

📌 EXEMPLO

ELAPSED=00:10:00
CPU=00:00:03

Interpretação

O problema NÃO é CPU.

É:

  • WAIT

  • I/O

  • Lock

  • Rede

  • Commit

  • Syncpoint


☕ 8 — PROBLEMAS DE REDE / DDF / DRDA

Muito comum hoje com:

  • Java

  • APIs

  • Microservices

  • JDBC

  • REST


✅ COMANDO

-DIS DDF

📌 Mostra

  • Threads distribuídas

  • TCP/IP

  • Localização

  • Status


EXEMPLO

STATUS=STARTD

🔥 THREADS DDF

-DIS THREAD(*) TYPE(SYSTEM)

📌 Procure

DIST

🔥 MUITAS CONEXÕES

Problemas:

  • Java pool ruim

  • Connection leak

  • Firewall timeout

  • Keepalive errado


☕ 9 — IDENTIFICANDO I/O EXCESSIVO


✅ COMANDO

-DIS BUFFERPOOL(BP0) DETAIL

Procure

CampoSignificado
SYNCH READleitura síncrona
PREFETCHleitura antecipada
WRITE I/Oescrita

📌 Se SYNCH READ sobe

Significa:

  • Cache ruim

  • Índice ruim

  • SQL ruim

  • Pool pequeno


☕ 10 — COMANDOS MAIS IMPORTANTES DO DBA/SYSPROG DB2

ObjetivoComando
Ver threads-DIS THREAD(*)
Ver locks-DIS DB(...) LOCKS
Ver bufferpool-DIS BPOOL
Ver log-DIS LOG
Ver storage-DIS STORAGE
Ver DDF-DIS DDF
Ver tablespace-DIS DB(...) SPACENAM
Ver utilities-DIS UTILITY(*)
Ver claims/drains-DIS DB(...) CLAIMERS
Ver status geral-DIS GROUP

☕🔥 FLUXO MENTAL DE TROUBLESHOOTING NO Db2


🚨 Usuário reclamou de lentidão

PASSO 1

-DIS THREAD(*) DETAIL

Ver:

  • CPU

  • WAIT

  • ELAPSED


PASSO 2

-DIS BPOOL(BP0) DETAIL

Ver:

  • Hit ratio

  • Sync I/O


PASSO 3

-DIS LOG

Ver:

  • Saturação

  • Checkpoint


PASSO 4

-DIS DB(...) LOCKS

Ver lock contention.


PASSO 5

-DIS STORAGE

Ver memory pressure.


☕🔥 SINTOMAS CLÁSSICOS E CAUSAS

SintomaPossível causa
CPU altaSQL ruim
ELAPSED altoWAIT/I/O
Commit lentoLog
DIST giganteJDBC leak
Lock timeoutThread presa
GETPAGE altoREORG necessário
Sync read altoPool pequeno
RID failureRID pool
EDM cheioDynamic SQL excessivo

☕🔥 O QUE OS GRANDES DBAs FAZEM

Eles sempre correlacionam:

  • THREAD

  • LOCK

  • BUFFERPOOL

  • SQL

  • LOG

  • STORAGE

  • DDF

Nunca analisam apenas um comando isolado.

Porque no Db2:

“O sintoma aparece em um lugar…
mas a causa real geralmente está em outro.”