Translate

Mostrar mensagens com a etiqueta DB2 Utilities. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta DB2 Utilities. Mostrar todas as mensagens

quarta-feira, 29 de julho de 2020

🔥☕ LABORATÓRIO DB2 UTILITIES z/OS — 20 INCIDENTES REAIS DE PRODUÇÃO ☕🔥

Bellacosa Mainframe apresenta Laboratorio de incidentes no Db2


🔥☕ LABORATÓRIO DB2 UTILITIES z/OS — 20 INCIDENTES REAIS DE PRODUÇÃO ☕🔥

“Quando o DBA entra na sala de máquinas do mainframe”

Este laboratório é baseado no menu DB2 UTILITIES da sua tela:

  • REBUILD
  • COPY
  • RECOVER
  • REORG
  • RUNSTATS
  • LOAD
  • CHECK
  • REPAIR
  • UNLOAD
  • QUIESCE

Aqui você vai encontrar:

  • 🚨 problemas reais
  • 🔍 investigação
  • 💣 diagnóstico
  • ✅ solução
  • 🧠 análise operacional

🔥 LAB 01 — REBUILD PENDING

🚨 Problema

Aplicação começou a falhar.

SQLCODE:

-904 RESOURCE UNAVAILABLE

🔍 Investigação

-DIS DATABASE(ESCOLA)

💣 Resultado

INDEXSPACE IXALUNO
STATUS RBDP

✅ Solução

Executar:

//STEP1 EXEC DSNUPROC,SYSTEM=DB9G
//SYSIN DD *
REBUILD INDEX(ESCOLA.IXALUNO)
/*

🧠 Explicação

Índice inválido.

O optimizer não consegue utilizá-lo.


🔥 LAB 02 — COPY PENDING

🚨 Problema

INSERT falhando após LOAD.


🔍 Investigação

-DIS DATABASE(FINANCE)

💣 Resultado

COPY PENDING

✅ Solução

COPY TABLESPACE FINANCE.CLIENTE

🧠 Explicação

Objeto exige backup válido.


🔥 LAB 03 — SQL MUITO LENTO

🚨 Problema

Queries demorando minutos.


🔍 Investigação

RUNSTATS não executa há meses.


💣 Diagnóstico

Optimizer usando access path ruim.


✅ Solução

RUNSTATS TABLESPACE FINANCE.CLIENTE

🧠 Explicação

Sem estatísticas atualizadas:

  • DB2 escolhe índices ruins
  • pode fazer full tablescan

🔥 LAB 04 — TABELA FRAGMENTADA

🚨 Problema

I/O elevadíssimo.


🔍 Investigação

AREO*

💣 Diagnóstico

Fragmentação pesada.


✅ Solução

REORG TABLESPACE FINANCE.CLIENTE

🧠 Explicação

Páginas desorganizadas.


🔥 LAB 05 — LOAD QUEBROU ÍNDICES

🚨 Problema

Após LOAD REPLACE:

  • índices sumiram
  • SQL lento

🔍 Investigação

RBDP

✅ Solução

REBUILD INDEX

🧠 Explicação

LOAD REPLACE invalida índices.


🔥 LAB 06 — UTILITY PRESA

🚨 Problema

REORG nunca termina.


🔍 Investigação

-DIS UTIL(*)

💣 Resultado

Utility em WAIT.


✅ Solução

-TERM UTIL(REORG01)

🧠 Explicação

Utility aguardando drain/lock.


🔥 LAB 07 — RECOVER NECESSÁRIO

🚨 Problema

Disco falhou.


🔍 Investigação

Objeto inacessível.


✅ Solução

RECOVER TABLESPACE FINANCE.CLIENTE

🧠 Explicação

Restauração via image copy + logs.


🔥 LAB 08 — INDEX CORROMPIDO

🚨 Problema

Abends em SQL.


🔍 Investigação

CHECK INDEX INDEXSPACE IXCLI01

💣 Resultado

Corrupção detectada.


✅ Solução

REBUILD INDEX

🧠 Explicação

Estrutura B-tree inconsistente.


🔥 LAB 09 — ORPHAN ROWS

🚨 Problema

Violação referencial.


🔍 Investigação

CHECK DATA TABLESPACE FINANCE.CLIENTE

💣 Resultado

Orphan rows encontradas.


✅ Solução

Corrigir dados.

Executar CHECK novamente.


🧠 Explicação

Foreign key inconsistente.


🔥 LAB 10 — BUFFERPOOL EXPLODINDO

🚨 Problema

REORG causando pressão memória.


🔍 Investigação

-DIS BUFFERPOOL(*)

💣 Resultado

Page stealing elevado.


✅ Solução

  • aumentar BP
  • reduzir concorrência utilities

🧠 Explicação

REORG consome memória intensamente.


🔥 LAB 11 — LOG FULL

🚨 Problema

Batch travado.


🔍 Investigação

-DIS LOG

💣 Resultado

Logs quase esgotados.


✅ Solução

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

🧠 Explicação

LOAD/REORG podem gerar muito log.


🔥 LAB 12 — UNLOAD GIGANTE

🚨 Problema

Necessidade de exportar bilhões de linhas.


✅ Solução

UNLOAD TABLESPACE BIGDB.TRANSAC

🧠 Explicação

UNLOAD é muito mais rápido que SELECT tradicional.


🔥 LAB 13 — REORG BLOQUEANDO ONLINE

🚨 Problema

Usuários reclamam indisponibilidade.


🔍 Investigação

REORG executado SHRLEVEL NONE.


✅ Solução

REORG SHRLEVEL CHANGE

🧠 Explicação

Permite acesso concorrente.


🔥 LAB 14 — QUIESCE ANTES DE DEPLOY

🚨 Problema

Necessidade de rollback seguro.


✅ Solução

QUIESCE TABLESPACESET FINANCE

🧠 Explicação

Cria ponto consistente recuperação.


🔥 LAB 15 — REPAIR MAL UTILIZADO

🚨 Problema

DBA júnior removeu pendência errada.


💣 Resultado

Objeto inconsistente.


🧠 Explicação

REPAIR ignora validações normais DB2.


🚨 Moral

REPAIR é bisturi nuclear.


🔥 LAB 16 — RUNSTATS ESQUECIDO

🚨 Problema

Plano SQL mudou drasticamente.


🔍 Investigação

Stats desatualizadas.


✅ Solução

RUNSTATS TABLESPACE FINANCE.PEDIDOS

🧠 Explicação

Optimizer “envelheceu”.


🔥 LAB 17 — TEMPLATE ERRADO

🚨 Problema

COPY falhando.


🔍 Investigação

Dataset template inválido.


💣 Resultado

Allocation errors.


✅ Solução

Corrigir TEMPLATE.


🧠 Explicação

Naming padrão incorreto.


🔥 LAB 18 — LISTDEF MAL DEFINIDO

🚨 Problema

REORG atingiu tablespaces errados.


🔍 Investigação

LISTDEF genérico demais.


✅ Solução

Restringir INCLUDE.


🧠 Explicação

Automação perigosa.


🔥 LAB 19 — LOAD MASSIVO SEM SORT

🚨 Problema

LOAD extremamente lento.


🔍 Investigação

Sem SORT adequado.


✅ Solução

Adicionar SORTDEVT/SORTNUM.


🧠 Explicação

LOAD depende muito de sort eficiente.


🔥 LAB 20 — O COLAPSO DA JANELA BATCH

🚨 Problema

Batch noturno explodiu.


🔍 Investigação

Rodando simultaneamente:

  • COPY
  • REORG
  • RUNSTATS
  • LOAD

💣 Resultado

  • lock contention
  • log saturation
  • I/O overload
  • CPU spike

✅ Solução

Separar scheduling utilities.


🧠 Explicação

Utilities competem brutalmente por:

  • disco
  • bufferpool
  • log
  • CPU

🔥 DESAFIO EXTRA — COMANDOS PARA TREINAR

Ver utilities

-DIS UTIL(*)

Terminar utility

-TERM UTIL(utilid)

Ver status objetos

-DIS DATABASE(DB1)

Ver logs

-DIS LOG

🔥 EXERCÍCIO AVANÇADO

Monte um fluxo completo:

COPY
REORG
RUNSTATS
CHECK INDEX
CHECK DATA

E explique:

  • por que essa sequência existe,
  • quais riscos evita,
  • e como impacta performance.

☕ VISÃO “BELLACOSA MAINFRAME”

As DB2 Utilities são os “robôs industriais” do z/OS.

Elas:

  • reconstruem,
  • reorganizam,
  • restauram,
  • limpam,
  • validam,
  • e mantêm vivo o banco mais crítico da empresa.

No mundo distribuído muita gente reinicia serviço.

No mainframe…
o DBA conversa diretamente com os mecanismos internos 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. ☕💣