Translate

Mostrar mensagens com a etiqueta Bufferpool. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Bufferpool. Mostrar todas as mensagens

segunda-feira, 28 de setembro de 2020

🔥☕ LABORATÓRIO DB2 z/OS — 20 PROBLEMAS REAIS DE PRODUÇÃO COM SOLUÇÕES ☕🔥

 

Bellacosa Mainframe te coloca a prova no uso do DB2 com labs praticos


🔥☕ LABORATÓRIO DB2 z/OS — 20 PROBLEMAS REAIS DE PRODUÇÃO COM SOLUÇÕES ☕🔥

“O DIA EM QUE O OPERADOR VIROU DETETIVE DO DB2”

Este laboratório foi inspirado no menu DB2 COMMANDS da sua tela SDSF/DB2I.

A ideia aqui é simular:

  • incidentes reais,
  • troubleshooting,
  • crises de produção,
  • panes de batch,
  • locks,
  • bufferpool,
  • utilities,
  • recovery,
  • gargalos,
  • runaway SQL.

Cada cenário possui:

  • 🚨 Problema
  • 🔍 Investigação
  • 💣 Diagnóstico
  • ✅ Solução
  • 🧠 Explicação técnica

🔥 LAB 01 — TABLESPACE PAROU

🚨 Problema

Aplicação CICS começou a falhar:

SQLCODE -904
RESOURCE UNAVAILABLE

🔍 Investigação

-DIS DATABASE(ESCOLA)

💣 Resultado

SPACENAM ALUNOS
STATUS STOP

✅ Solução

-START DATABASE(ESCOLA) SPACENAM(ALUNOS)

🧠 Explicação

O tablespace estava parado.

Pode ocorrer após:

  • utility abortada
  • falha de recovery
  • intervenção operacional

🔥 LAB 02 — LOCK GIGANTE

🚨 Problema

Usuários reclamam:

“Sistema congelou”


🔍 Investigação

-DIS THREAD(*) LOCKS

💣 Resultado

Uma thread batch segurando lock exclusivo.


✅ Solução

-CANCEL THREAD(token)

🧠 Explicação

A thread travou milhares de registros.

O cancel provoca rollback.


🔥 LAB 03 — BUFFERPOOL SATURADO

🚨 Problema

DB2 lento.

Muito I/O.


🔍 Investigação

-DIS BUFFERPOOL(BP0) DETAIL

💣 Resultado

HIT RATIO = 62%

✅ Solução

Aumentar VPSIZE.


🧠 Explicação

Cache pequeno.

DB2 lendo disco excessivamente.


🔥 LAB 04 — REORG PENDENTE

🚨 Problema

Performance degradada.


🔍 Investigação

-DIS DATABASE(FINANCE)

💣 Resultado

AREO*

✅ Solução

Executar REORG.


🧠 Explicação

Tabela fragmentada.

DB2 recomenda reorganização.


🔥 LAB 05 — COPY PENDING

🚨 Problema

INSERT falhando.


🔍 Investigação

-DIS DATABASE(PAGTO)

💣 Resultado

COPY PENDING

✅ Solução

Executar COPY utility.


🧠 Explicação

Objeto precisa backup válido.


🔥 LAB 06 — REBUILD PENDING

🚨 Problema

Índice corrompido.


🔍 Investigação

-DIS DATABASE(CLIENTE)

💣 Resultado

REBUILD PENDING

✅ Solução

REBUILD INDEX

🧠 Explicação

Indexspace precisa reconstrução.


🔥 LAB 07 — UTILITY TRAVADA

🚨 Problema

REORG nunca termina.


🔍 Investigação

-DIS UTIL(*)

💣 Resultado

Utility em WAIT.


✅ Solução

-TERM UTIL(utilid)

Reexecutar utility.


🧠 Explicação

Utility ficou presa aguardando recurso.


🔥 LAB 08 — LOG QUASE CHEIO

🚨 Problema

DB2 emitindo alertas.


🔍 Investigação

-DIS LOG

💣 Resultado

Active logs quase esgotados.


✅ Solução

  • aumentar logs
  • acelerar archive
  • reduzir commits longos

🧠 Explicação

Transações segurando log excessivamente.


🔥 LAB 09 — THREAD ZUMBI

🚨 Problema

Sessões antigas nunca encerram.


🔍 Investigação

-DIS THREAD(*) TYPE(INACTIVE)

💣 Resultado

Centenas de conexões JDBC abandonadas.


✅ Solução

Cancelar threads.

Ajustar timeout DDF.


🧠 Explicação

Pooling mal configurado.


🔥 LAB 10 — DDF FORA

🚨 Problema

Aplicações distribuídas não conectam.


🔍 Investigação

-DIS DDF

💣 Resultado

DDF STOPPED

✅ Solução

-START DDF

🧠 Explicação

DRDA estava parado.


🔥 LAB 11 — DEADLOCK

🚨 Problema

SQLCODE -911.


🔍 Investigação

-DIS THREAD(*) LOCKS

💣 Resultado

Duas aplicações disputando recursos.


✅ Solução

Identificar offender.

Cancelar thread problemática.


🧠 Explicação

Deadlock clássico de concorrência.


🔥 LAB 12 — RUNAWAY SQL

🚨 Problema

CPU do LPAR explodiu.


🔍 Investigação

-DIS THREAD(*) SERVICE(WAIT)

💣 Resultado

SELECT sem índice.


✅ Solução

Cancelar thread.

Criar índice.


🧠 Explicação

Full tablescan monstruoso.


🔥 LAB 13 — CLAIMERS SEGURANDO OBJETO

🚨 Problema

REORG não inicia.


🔍 Investigação

-DIS DATABASE(DB1) CLAIMERS

💣 Resultado

Aplicações usando objeto.


✅ Solução

Encerrar aplicações.


🧠 Explicação

Claims impedem drains.


🔥 LAB 14 — BUFFERPOOL ERRADO

🚨 Problema

Objeto crítico lento.


🔍 Investigação

-DIS BUFFERPOOL(*)

💣 Resultado

Objeto em BP inadequado.


✅ Solução

Mover para bufferpool maior.


🧠 Explicação

Pool incompatível com workload.


🔥 LAB 15 — MASSIVE ARCHIVE

🚨 Problema

Milhares de archive logs.


🔍 Investigação

-DIS ARCHIVE

💣 Resultado

Archive atrasado.


✅ Solução

Verificar HSM/tape/storage.


🧠 Explicação

Offload congestionado.


🔥 LAB 16 — START READ ONLY

🚨 Problema

Necessidade de manutenção.


✅ Solução

-START DATABASE(FINANCE) ACCESS(RO)

🧠 Explicação

Permite leitura sem updates.


🔥 LAB 17 — INDEX INDISPONÍVEL

🚨 Problema

Queries lentas.


🔍 Investigação

-DIS DATABASE(DB2PRD)

💣 Resultado

Indexspace STOPPED.


✅ Solução

-START DATABASE(DB2PRD)

🧠 Explicação

Optimizer perdeu acesso ao índice.


🔥 LAB 18 — UTILITIES CONCORRENTES

🚨 Problema

COPY e REORG competindo.


🔍 Investigação

-DIS UTIL(*)

💣 Resultado

Conflito operacional.


✅ Solução

Replanejar janela batch.


🧠 Explicação

Utilities disputam recursos físicos.


🔥 LAB 19 — DB2 EM RECOVER

🚨 Problema

Objeto indisponível.


🔍 Investigação

-DIS DATABASE(SEGURADORA)

💣 Resultado

STATUS RECOVER

✅ Solução

Executar RECOVER utility.


🧠 Explicação

Objeto inconsistente.


🔥 LAB 20 — O “FANTASMA” DO MAINFRAME

🚨 Problema

Sistema lento apenas à noite.


🔍 Investigação

-DIS THREAD(*)
-DIS UTIL(*)
-DIS LOG
-DIS BUFFERPOOL(*)

💣 Resultado

Batch gigantesco executando RUNSTATS + REORG + COPY simultaneamente.


✅ Solução

Separar janela batch.

Priorizar workloads.


🧠 Explicação

Concorrência destrutiva:

  • I/O
  • CPU
  • log
  • bufferpool
  • locks

🔥 DESAFIO EXTRA — COMANDOS PARA TREINAR

Diagnóstico rápido

-DIS THREAD(*)
-DIS UTIL(*)
-DIS LOG
-DIS BUFFERPOOL(*)
-DIS DATABASE(*)

Administração

-START DATABASE(DB1)
-STOP DATABASE(DB1)

Emergência

-CANCEL THREAD(token)
-TERM UTIL(utilid)

☕ O QUE ESSE LAB ENSINA

Esse tipo de troubleshooting desenvolve:

  • visão operacional
  • raciocínio rápido
  • análise de sintomas
  • entendimento interno do DB2
  • troubleshooting de produção
  • mentalidade de DBA z/OS

🔥 FRASE FINAL DO LAB

“No mundo distribuído você abre dashboards.
No mainframe você conversa diretamente com o coração do banco.” ☕💣

 

quarta-feira, 11 de março de 2020

🔥☕ DB2 z/OS MAINFRAME — A ANATOMIA DO “CÉREBRO DOS DADOS” ☕🔥

 

Bellacosa Mainframe entenda o funcionamento do DB2

🔥☕ DB2 z/OS MAINFRAME — A ANATOMIA DO “CÉREBRO DOS DADOS” ☕🔥

Salve jovem padawan neste laboratorio pratico veremos alguns dos componentes mais profundos e importantes do DB2 z/OS:
Storage Groups, Bufferpools, Logs, Optimizer, EDM Pool, índices B-Tree, Data Sharing, BSDS e arquitetura interna do banco.

Isso já entra no território de:

  • DBA de produção,
  • suporte avançado,
  • performance tuning,
  • recovery,
  • troubleshooting crítico,
  • arquitetura interna do DB2.

O DB2 no z/OS não é apenas um “banco de dados”.

Ele é:

  • sistema transacional,
  • gerenciador de memória,
  • engine de recovery,
  • scheduler interno,
  • coordenador de locking,
  • otimizador SQL,
  • e controlador de integridade transacional.

🔥 1) STORAGE GROUP — O “MAPEAMENTO DO TERRITÓRIO”

🧠 O que é

Storage Group é o agrupamento lógico de volumes DASD usados pelo DB2.


🔍 Função

O DBA não precisa dizer:

  • “grave exatamente no disco XYZ”

O DB2 usa o Storage Group para decidir:

  • onde alocar datasets,
  • como distribuir dados,
  • onde criar VSAM LDS.

🧨 Exemplo

CREATE STOGROUP STGPRD
VOLUMES(PRD001,PRD002)
VCAT(DB2CAT);

🔥 O que ele controla

  • datasets DB2
  • VSAM LDS
  • tablespaces
  • indexspaces
  • crescimento físico

🚨 Problema clássico

Storage Group sem espaço.

Resultado:

  • inserts falham,
  • extents explodem,
  • utilities quebram.

🔥 LAB 01 — STORAGE GROUP LOTADO

🚨 Problema

Aplicação falhando:

SQLCODE -904
RESOURCE UNAVAILABLE

🔍 Investigação

Verificar volumes:

-DIS DB(*) SPACENAM(*)

💣 Diagnóstico

DASD cheio.


✅ Solução

Adicionar volume:

ALTER STOGROUP STGPRD
ADD VOLUMES(PRD003);

🧠 Explicação

O DB2 não conseguia expandir datasets.


🔥 2) TABELAS — O “CORPO FÍSICO” DOS DADOS

🧠 Estrutura lógica

Tabela:

  • colunas
  • linhas
  • constraints
  • índices

Mas internamente:

  • pages
  • RID
  • slots
  • overflow pages

🧨 Exemplo

CREATE TABLE ALUNOS
(
ID INTEGER,
NOME CHAR(40),
CURSO CHAR(20)
);

🔥 Tipos de tabelas

TipoUso
Segmentedtradicional
Partitionedgrandes volumes
Universalmoderno
Temporarytemporárias
Clonedeploy online

🚨 Problema clássico

Tabela enorme sem particionamento.

Resultado:

  • REORG gigantesco,
  • recovery lento,
  • scans monstruosos.

🔥 LAB 02 — TABELA GIGANTE

🚨 Problema

Tabela com 4 bilhões de linhas.

REORG demora 18 horas.


✅ Solução

Migrar para partitioned tablespace.


🧠 Explicação

Particionamento divide carga física.


🔥 3) ÍNDICES — O GPS DO DB2

🧠 O que fazem

Índices evitam full scan.


🔥 Estrutura B-Tree

Seu material menciona:

B-Tree : Índice – Arvore Binaria


🧠 Como funciona

A árvore possui:

  • root page
  • branch pages
  • leaf pages

🔍 O DB2 percorre:

ROOT → BRANCH → LEAF → ROW

🚨 Sem índice

O DB2 lê:

  • milhões de páginas.

🧨 Exemplo

CREATE INDEX IXALUNO
ON ALUNOS(ID);

🔥 LAB 03 — SQL MATANDO CPU

🚨 Problema

SELECT demorando minutos.


🔍 Investigação

EXPLAIN mostra:

TABLESPACE SCAN

✅ Solução

Criar índice:

CREATE INDEX IXCPF
ON CLIENTE(CPF);

🧠 Explicação

DB2 deixou de varrer tabela inteira.


🔥 4) CATALOGO DB2 — O “DNA” DO BANCO

Seu material aborda:

Catalogo
Metadados


🧠 O que é

O catálogo guarda:

  • definição tabelas
  • índices
  • colunas
  • privileges
  • packages
  • plans

🔍 Tabelas famosas

TabelaFunção
SYSIBM.SYSTABLEStabelas
SYSIBM.SYSCOLUMNScolunas
SYSIBM.SYSINDEXESíndices
SYSIBM.SYSPACKAGEpackages

🧨 Exemplo

SELECT NAME
FROM SYSIBM.SYSTABLES
WHERE CREATOR='ESCOLA';

🔥 LAB 04 — DESCOBRIR ÍNDICES

🚨 Problema

Ninguém sabe quais índices existem.


✅ Solução

SELECT NAME
FROM SYSIBM.SYSINDEXES
WHERE TBNAME='CLIENTE';

🧠 Explicação

Catálogo é o “Google interno” do DB2.


🔥 5) LOG — A “CAIXA PRETA” DO DB2

Seu material aborda:

Active LOG
Archive LOG
BSDS


🧠 O que é o LOG

Tudo que muda no DB2 vai para log.


🔥 Serve para

  • rollback
  • recovery
  • restart
  • integridade
  • auditoria

🔥 ACTIVE LOG

Logs atuais em uso.


🔥 ARCHIVE LOG

Logs antigos arquivados.


🔥 BSDS

Bootstrap Dataset.

Contém:

  • inventário logs
  • checkpoints
  • bootstrap recovery

🚨 Se BSDS corrompe…

O DB2 entra em crise séria.


🔥 LAB 05 — LOG FULL

🚨 Problema

Sistema travado.


🔍 Investigação

-DIS LOG

💣 Resultado

Logs esgotados.


✅ Solução

  • aumentar logs
  • reduzir transações longas
  • acelerar archive

🧠 Explicação

Sem log livre o DB2 para updates.


🔥 6) BUFFERPOOL — O “PULMÃO” DO DB2

Seu material aborda:

Bufferpool
Frame Bufferpool


🧠 O que é

Cache de páginas em memória.


🔍 Fluxo

DASD → BUFFERPOOL → CPU

🚨 Bufferpool ruim = muito I/O


🧨 Exemplo

-DIS BUFFERPOOL(BP0)

🔥 LAB 06 — HIT RATIO HORRÍVEL

🚨 Problema

I/O gigantesco.


🔍 Resultado

HIT RATIO 58%

✅ Solução

Aumentar:

ALTER BUFFERPOOL(BP0) VPSIZE(50000)

🧠 Explicação

Mais páginas em cache.


🔥 7) DB2 DATA SHARING — O “CLUSTER” DO MAINFRAME

Seu material mostra:

DB2 DATA SHARING com Group Bufferpools


🧠 O que é

Vários DB2s compartilhando dados simultaneamente.


🔥 Permite

  • alta disponibilidade
  • escalabilidade
  • failover
  • paralelismo

🔍 Componentes

ComponenteFunção
Coupling Facilitysincronização
GBPcache compartilhado
IRLMlocking

🚨 Problema clássico

Contention no GBP.


🔥 LAB 07 — CONTENTION EM DATA SHARING

🚨 Problema

Locks excessivos.


🔍 Investigação

-DIS GROUP

💣 Resultado

GBP saturation.


✅ Solução

Aumentar Group Bufferpool.


🧠 Explicação

Muitos membros acessando mesmas páginas.


🔥 8) OPTIMIZER — O “CÉREBRO” DO SQL

Seu material aborda:

DB2 Optimizer


🧠 O que faz

Decide:

  • índice
  • join
  • scan
  • sort
  • access path

🔥 Sem optimizer

SQL seria inviável.


🔍 Ele analisa:

  • cardinalidade
  • seletividade
  • RUNSTATS
  • índices
  • distribuição dados

🔥 LAB 08 — OPTIMIZER ESCOLHEU MAL

🚨 Problema

SQL piorou após deploy.


🔍 Investigação

Novo access path.


✅ Solução

Executar:

RUNSTATS TABLESPACE FINANCE.CLIENTE

Rebind package.


🧠 Explicação

Stats antigas enganaram optimizer.


🔥 9) EDM POOL — O “CACHE CEREBRAL”

Seu material aborda:

  • EDM POOL
  • Dynamic Cache
  • PT/CT
  • Skeleton Pool
  • DBD


🧠 O que é

Cache interno de:

  • packages
  • plans
  • SQL dinâmico
  • estruturas DBD

🔥 Problema clássico

EDM pequeno.


🚨 Resultado

  • compilação excessiva
  • CPU alta
  • cache thrashing

🔥 LAB 09 — EDM SATURADO

🚨 Problema

CPU do DB2 explodindo.


🔍 Investigação

-DIS DDF

e monitor EDM.


💣 Resultado

Dynamic statement cache lotado.


✅ Solução

Aumentar EDM pool.


🧠 Explicação

SQL dinâmico recompilando continuamente.


🔥 10) BIND E PACKAGE

Seu material cita:

BindProgram


🧠 O que é BIND

Transforma SQL em package executável.


🔥 PACKAGE

Código SQL otimizado armazenado.


🔥 LAB 10 — PACKAGE INVALIDADO

🚨 Problema

Programa falha após alteração tabela.


💣 Resultado

Package inválido.


✅ Solução

REBIND PACKAGE

🧠 Explicação

DDL alterou estrutura dependente.


🔥 LAB EXTRA — INCIDENTE COMPLETO

🚨 Cenário

Sistema financeiro lento.


🔍 Investigação

Descoberto:

  • RUNSTATS vencido
  • bufferpool saturado
  • índice inválido
  • logs pressionados

✅ Solução

Fluxo:

  1. REBUILD INDEX
  2. REORG
  3. RUNSTATS
  4. Ajuste BUFFERPOOL
  5. Revisão commits

🧠 Resultado

CPU caiu:

  • de 92%
  • para 34%

☕ VISÃO “BELLACOSA MAINFRAME”

O DB2 z/OS parece um banco…

Mas internamente ele é:

  • sistema operacional de dados,
  • motor transacional,
  • mecanismo de recuperação,
  • orquestrador de memória,
  • e inteligência analítica.

Quem aprende:

  • logs,
  • bufferpool,
  • optimizer,
  • EDM,
  • utilities,
  • data sharing,

não aprende apenas SQL…

aprende a anatomia do coração digital das grandes corporações. ☕💣