🔥☕ 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. ☕💣