Translate

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

terça-feira, 5 de maio de 2026

🔥☕ PACKAGE, PLAN, DBRM E O SUBMUNDO DA COMPILAÇÃO Db2 — O GUIA PADAWAN DO COBOL MAINFRAME ☕🔥

 

Bellacosa Mainframe explica como funciona um programa COBOL com DB2

🔥☕ PACKAGE, PLAN, DBRM E O SUBMUNDO DA COMPILAÇÃO Db2 — O GUIA PADAWAN DO COBOL MAINFRAME ☕🔥

Todo programador COBOL iniciante passa por isso.

Você escreve:

EXEC SQL
SELECT *
FROM EMPLOYEE
END-EXEC.

compila…

e de repente aparecem criaturas malignas como:

  • DBRM
  • PACKAGE
  • PLAN
  • BIND
  • DSNHPC
  • SQLCODE -805
  • SQLCODE -818

E o padawan pensa:

“Mas eu só queria fazer um SELECT…”

☕🔥

Então vamos entrar no verdadeiro submundo do Db2 z/OS.


☕ O MAIOR SEGREDO DO Db2

O Db2 NÃO executa SQL diretamente do fonte COBOL.

Ele precisa:

  • analisar SQL
  • validar objetos
  • escolher access path
  • gerar runtime structures

Por isso existe toda a cadeia:

SOURCE

PRECOMPILE

DBRM

COMPILE

LINK

BIND PACKAGE

BIND PLAN

RUN

🔥 VISÃO GERAL DA ARQUITETURA


☕ SOURCE COBOL

Seu programa original.

Exemplo:

EXEC SQL
SELECT EMPNO
INTO :WS-EMPNO
FROM EMPLOYEE
END-EXEC.

Dataset típico:

USERID.COBOL.SOURCE(MEUCOB)

🔥 STEP 1 — PRECOMPILE

Programa usado:

//DB2PC EXEC PGM=DSNHPC

☕ O QUE É O DSNHPC?

É o:

Db2 PRECOMPILER

🔥 O QUE ELE FAZ?

Ele:

✅ encontra EXEC SQL
✅ valida sintaxe SQL
✅ remove SQL do COBOL
✅ gera COBOL expandido
✅ gera DBRM


☕ RESULTADO DO PRECOMPILE

Saídas:

SaídaFunção
COBOL expandidoserá compilado
DBRMusado no BIND

🔥 O QUE É O DBRM?

DBRM =

DATABASE REQUEST MODULE

☕ PENSE NO DBRM COMO:

“o extrato SQL do seu programa”

Ele contém:

  • SQL do programa
  • informações internas Db2
  • metadados SQL

🔥 O DBRM NÃO É EXECUTÁVEL

Isso é importante.

Ele NÃO roda.

Ele apenas alimenta o BIND.


☕ ONDE O DBRM É SALVO?

Normalmente em:

//DBRMLIB DD DSN=USERID.DBRM.LIB(MEUPRG)

Dataset típico:

USERID.DBRM.LIB

Tipo:

PDS ou PDSE

🔥 EXEMPLO REAL DE PRECOMPILE

//DB2PC EXEC PGM=DSNHPC,
// PARM=('HOST(IBMCOB),APOST')

☕ EXPLICANDO OS PARÂMETROS


HOST(IBMCOB)

Define linguagem COBOL IBM.


APOST

Aspas simples delimitam strings SQL.


SOURCE

Mantém fonte expandido legível.


XREF

Gera cross reference.


DATE(ISO)

Formato ISO de datas.


🔥 STEP 2 — COMPILE COBOL

Programa:

//COB EXEC PGM=IGYCRCTL

☕ O QUE ACONTECE?

Agora o compilador COBOL compila:

o COBOL expandido gerado pelo precompiler

🔥 ELE NÃO COMPILA MAIS EXEC SQL

Porque o precompiler já removeu.


☕ SAÍDA DO COMPILE

Gera:

OBJECT MODULE

temporário.


🔥 STEP 3 — LINK-EDIT

Programa:

//LKED EXEC PGM=IEWL

☕ O QUE O LINK FAZ?

Une:

  • objeto COBOL
  • bibliotecas runtime
  • chamadas Db2

🔥 RESULTADO

LOAD MODULE EXECUTÁVEL

☕ ONDE FICA O LOAD MODULE?

Exemplo:

//SYSLMOD DD DSN=USERID.LOADLIB(MEUPRG)

Dataset típico:

USERID.LOADLIB

🔥 AGORA ENTRA O VERDADEIRO MUNDO Db2

Até aqui temos apenas:

programa COBOL executável

Mas o Db2 ainda NÃO sabe nada sobre ele.


☕ STEP 4 — BIND PACKAGE

Programa:

//BIND EXEC PGM=IKJEFT01

🔥 O QUE É O PACKAGE?

PACKAGE é:

o SQL compilado e otimizado do programa

☕ O PACKAGE CONTÉM

✅ access paths
✅ SQL otimizado
✅ metadados
✅ permissões
✅ informações de runtime


🔥 QUEM CRIA O PACKAGE?

O comando:

BIND PACKAGE

☕ O BIND USA:

  • DBRM
  • catálogo Db2
  • índices
  • estatísticas
  • permissões

🔥 O ACCESS PATH NASCE AQUI

Db2 decide:

  • index scan?
  • tablespace scan?
  • join order?
  • sort?
  • parallelism?

☕ ONDE PACKAGE É ARMAZENADO?

No próprio catálogo Db2.

Tabelas internas como:

SYSIBM.SYSPACKAGE

🔥 NÃO FICA EM PDS

Isso pega MUITOS iniciantes.

PACKAGE NÃO fica em dataset.

Fica dentro do Db2.


☕ EXEMPLO DE BIND PACKAGE

DSN SYSTEM(DBCG)

BIND PACKAGE(MYCOLL)
MEMBER(MEUPRG)
ACTION(REPLACE)
ISOLATION(CS)
VALIDATE(BIND)
EXPLAIN(YES)

🔥 EXPLICANDO OS PARÂMETROS


PACKAGE(MYCOLL)

Collection/package name.


MEMBER(MEUPRG)

Nome do DBRM.


ACTION(REPLACE)

Substitui package antigo.


ISOLATION(CS)

Cursor Stability.


VALIDATE(BIND)

Valida objetos no bind.


EXPLAIN(YES)

Salva access path.


☕ STEP 5 — BIND PLAN

Agora vem o PLAN.


🔥 O QUE É O PLAN?

PLAN é:

um agrupador de packages

☕ ANTIGAMENTE

Db2 antigo usava:

PLAN + DBRM

🔥 Db2 MODERNO USA:

PLAN + PACKAGE

☕ O PLAN FUNCIONA COMO

“container lógico de execução”

🔥 EXEMPLO

BIND PLAN(MYPLAN)
PKLIST(MYCOLL.*)

☕ PKLIST

Lista packages autorizados.


🔥 ONDE O PLAN FICA?

Também no catálogo Db2.

Tabela:

SYSIBM.SYSPLAN

☕ EXECUÇÃO — RUN

Agora sim:

RUN PROGRAM(MEUPRG)
PLAN(MYPLAN)

🔥 O FLUXO EM EXECUÇÃO

Programa chama:

PLAN

PACKAGE

SQL

Db2 Engine

☕ ANALOGIA PADAWAN

Imagine:


☕ SOURCE

Receita escrita.


🔥 DBRM

Lista dos ingredientes.


☕ PACKAGE

Receita otimizada pelo chef.


🔥 PLAN

Cardápio do restaurante.


☕ LOAD MODULE

Cozinheiro executando.

☕🔥


🔥 ERROS MAIS FAMOSOS


☕ SQLCODE -805

O terror dos iniciantes.

PACKAGE NÃO ENCONTRADO

CAUSAS

✅ bind não executado
✅ collection errada
✅ package apagado
✅ plan errado


🔥 SQLCODE -818

TIMESTAMP MISMATCH

SIGNIFICA

LOAD MODULE ≠ PACKAGE atual.


ACONTECE QUANDO

recompila COBOL mas não rebinda package.


☕ SQLCODE -204

objeto não encontrado

NORMALMENTE

schema/qualifier errado.


🔥 SQLCODE -551

sem autorização

☕ COMO INVESTIGAR PROBLEMAS


🔥 VER PACKAGE

SELECT *
FROM SYSIBM.SYSPACKAGE
WHERE NAME = 'MEUPRG'

☕ VER PLAN

SELECT *
FROM SYSIBM.SYSPLAN
WHERE NAME = 'MYPLAN'

🔥 DISPLAY PACKAGE

-DISPLAY PACKAGE(*)

☕ O QUE O JUNIOR PRECISA ENTENDER


🔥 O COBOL NÃO EXECUTA SQL DIRETAMENTE


☕ O PACKAGE É O SQL “COMPILADO”


🔥 O PLAN ORGANIZA EXECUÇÃO


☕ O DBRM É A PONTE ENTRE FONTE E PACKAGE


🔥 O BIND DEFINE PERFORMANCE


☕ O ACCESS PATH NASCE NO BIND


🔥 O MAIOR SEGREDO DO Db2

Muitos problemas de produção NÃO estão no COBOL.

Estão em:

  • package inválido
  • bind errado
  • access path ruim
  • rebind problemático
  • estatísticas ruins
  • qualifier incorreto

☕ A VERDADEIRA MAGIA

Enquanto frameworks modernos escondem tudo…

o programador mainframe aprende:

  • como SQL realmente executa
  • como runtime funciona
  • como otimização nasce
  • como banco conversa com aplicação

E isso transforma um simples padawan COBOL…

num verdadeiro Jedi do Db2 z/OS. ☕🔥


segunda-feira, 4 de maio de 2026

🔥☕ O SUBMUNDO DO Db2 z/OS — LOGS, RECOVERY E O QUE ACONTECE QUANDO O BANCO “MORRE” ☕🔥

 

Bellacosa Mainframe em uma visão sobre o LOG do DB2

🔥☕ O SUBMUNDO DO Db2 z/OS — LOGS, RECOVERY E O QUE ACONTECE QUANDO O BANCO “MORRE” ☕🔥

Existe um momento na vida de todo programador COBOL/Db2 em que ele descobre uma verdade assustadora:

O Db2 nunca esquece nada.

Cada:

  • INSERT,
  • UPDATE,
  • DELETE,
  • COMMIT,
  • ROLLBACK,
  • ALTER,
  • REORG,

deixa rastros.

E esses rastros vivem dentro de uma das estruturas mais importantes do ecossistema mainframe:

🔥 O LOG DO Db2.

Se você é programador COBOL pleno e acha que recovery é “coisa de DBA”, cuidado.

Porque no dia em que um:

-904
-911
-803
00C90084
RESOURCE UNAVAILABLE

explodir produção às 3h da manhã…

você vai descobrir que entender o log do Db2 muda completamente sua carreira.


☕ O QUE É O LOG DO Db2?

O log do Db2 é o “diário transacional” do banco.

Tudo que altera dados gera registros de log.

O Db2 escreve:

  • before image,
  • after image,
  • controle transacional,
  • checkpoints,
  • unidades de recuperação.

Basicamente:

ALTERAÇÃO → LOG → DISCO

Antes mesmo da página ser gravada no tablespace.


🔥 ACTIVE LOGS vs ARCHIVE LOGS

Aqui começa uma das maiores confusões dos iniciantes.

🔹 Active Logs

São os logs online e ativos.

Ficam sendo usados continuamente.

Eles armazenam:

  • alterações recentes,
  • transações em andamento,
  • recovery imediato.

São críticos.

Perder active log é pesadelo nível apocalipse.


🔹 Archive Logs

Quando active logs ficam cheios:

  • Db2 descarrega,
  • copia,
  • arquiva.

Esses logs históricos viram:

ARCHIVE LOGS

Eles são usados para:

  • PIT recovery,
  • auditoria,
  • rollback histórico,
  • disaster recovery.

☕ COMO O Db2 ESCREVE NO LOG?

Muita gente acha que Db2 grava direto no disco.

Não.

Primeiro ele grava em:

🔥 LOG BUFFERS

na memória.

Depois:

  • COMMIT,
  • checkpoint,
  • buffer cheio,
  • sync I/O,

forçam gravação nos:

ACTIVE LOG DATASETS

🔥 WRITE AHEAD LOGGING (WAL)

Aqui está o segredo do recovery moderno.

O Db2 segue:

🔥 WAL — Write Ahead Logging

Regra:

“O log precisa ser gravado ANTES da página do banco.”

Isso garante:

  • rollback,
  • redo,
  • recuperação consistente.

Sem isso:
💀 corrupção.


☕ O QUE ACONTECE NUM COMMIT?

Quando o programa COBOL faz:

EXEC SQL COMMIT END-EXEC

o Db2:

  1. sincroniza logs,
  2. confirma UOW,
  3. libera locks,
  4. torna alterações permanentes.

O COMMIT é basicamente:

🔥 “Agora isso virou verdade oficial.”


☕ E NUM ABEND?

Aqui entra o terror psicológico do DBA.

Se ocorre:

  • S0C7,
  • S878,
  • timeout,
  • deadlock,
  • cancel,
  • crash,
  • queda de LPAR,

o Db2 usa os logs para:

🔥 ROLLBACK

Ele desfaz tudo desde o último COMMIT.


🔥 TIPOS DE ERRO MAIS COMUNS


⚠️ SQLCODE -911 / -913

Deadlock ou timeout

Dois programas querem recursos incompatíveis.

Exemplo clássico:

  • batch segurando tabela,
  • online tentando atualizar.

DBA/Sysprog:

  • analisar locking,
  • IFCID,
  • traces,
  • IRLM,
  • timeout values.

Programador COBOL:

  • reduzir tempo entre commits,
  • melhorar SQL,
  • evitar scan gigante.

⚠️ SQLCODE -904

Resource unavailable

Tablespace parado.
Utility rodando.
Objeto indisponível.

DBA:

  • verificar STOP status,
  • utilities,
  • claim/drain,
  • locks.

Sysprog:

  • investigar subsystem,
  • storage,
  • I/O,
  • coupling facility.

⚠️ SQLCODE -803

Duplicate key

Programador tentou inserir chave já existente.

Programador:

  • validar lógica,
  • tratar concorrência,
  • revisar sequence/identity.

DBA:

  • verificar índice,
  • constraints,
  • integridade.

⚠️ SQLCODE -805

Package não encontrado

Clássico inferno de deploy.

DBA:

  • verificar BIND,
  • PLAN/PACKAGE,
  • consistency token.

Sysprog:

  • SDSNLOAD,
  • STEPLIB,
  • DBRM libraries.

Programador:

  • garantir promote correto.

⚠️ 00C90084

Log full

Aqui o DBA começa a envelhecer rapidamente.

O active log lotou.

Possíveis causas:

  • UOW gigante,
  • commit inexistente,
  • archive parado.

DBA:

  • verificar ARCHIVE process,
  • aumentar logs,
  • cancelar job problemático.

Programador:

  • COMMIT frequente,
  • evitar transação monstruosa.

☕ COMO FUNCIONA O RECOVERY?

Aqui mora a mágica do Db2.


🔥 FORWARD RECOVERY

Db2:

  1. restaura image copy,
  2. reaplica logs.

Resultado:
✅ banco volta até ponto desejado.


🔥 BACKOUT / ROLLBACK

Db2 usa:

  • before images,
  • undo records.

E desfaz alterações.


🔥 RESTART RECOVERY

Após crash do subsystem:

Db2:

  • lê logs,
  • identifica UOW incompletas,
  • faz undo/redo automático.

Muitas vezes o usuário nem percebe.


☕ O PAPEL DO DBA

O DBA é o “cirurgião do banco”.

Ele:

  • monitora logs,
  • executa RECOVER,
  • controla utilities,
  • administra image copies,
  • resolve locking,
  • acompanha catalog,
  • analisa performance.

Ferramentas clássicas:

  • DSN1LOGP,
  • RECOVER,
  • COPY,
  • REORG,
  • DISPLAY DATABASE,
  • DISPLAY LOG.

☕ O PAPEL DO SYSPROG

O Sysprog atua na infraestrutura pesada.

Ele cuida:

  • do subsystem Db2,
  • IRLM,
  • z/OS,
  • JES,
  • storage,
  • coupling facility,
  • datasets de log,
  • BSDS,
  • bootstrap datasets.

Se o DBA é cirurgião…
o Sysprog é engenheiro nuclear.


☕ O QUE O PROGRAMADOR COBOL PRECISA ENTENDER?

Muito mais do que imaginam.

Porque SQL ruim gera:

  • lock,
  • timeout,
  • log storm,
  • escalation,
  • crash recovery lento.

🔥 Um bom programador Db2:

✅ faz commit racional
✅ evita cursor infinito
✅ reduz scans
✅ trata SQLCODE corretamente
✅ entende UOW
✅ sabe impacto do rollback
✅ evita transações gigantes


☕ O MAIOR ERRO DOS INICIANTES

Achar que:

COMMIT é só “salvar”.

Não.

COMMIT é:

  • sincronização,
  • liberação de lock,
  • persistência,
  • checkpoint lógico,
  • controle de recovery.

É o coração do Db2 transacional.


🔥 CONCLUSÃO

O log do Db2 é praticamente:

🔥 a memória do banco.

Sem ele:

  • não existe rollback,
  • recovery,
  • integridade,
  • restart,
  • consistência.

Quando você entende:

  • active log,
  • archive log,
  • WAL,
  • UOW,
  • rollback,
  • recovery,

você deixa de ser apenas “quem escreve SELECT”.

E começa a pensar como:

  • DBA,
  • sysprog,
  • arquiteto transacional.

E no universo mainframe…

isso muda tudo. ☕🔥

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