Translate

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

quinta-feira, 28 de maio de 2026

☕🔥 DLI IMS AVANÇADO: O LADO SOMBRIO DO MAINFRAME QUE O SQL NUNCA CONSEGUIU SUBSTITUIR

 

Bellacosa Mainframe e o DL/I IMS o painel de controle dentro do banco de dados hierarquico

☕🔥 DLI IMS AVANÇADO: O LADO SOMBRIO DO MAINFRAME QUE O SQL NUNCA CONSEGUIU SUBSTITUIR

Durante décadas o mercado tentou decretar a morte do IMS.

Vieram os bancos relacionais.

Vieram os ERPs.

Vieram os clusters distribuídos.

Vieram NoSQL, cloud, Kubernetes, microservices e a eterna promessa de que “agora o mainframe acabou”.

Mas existe um pequeno detalhe inconveniente:

Enquanto muita tecnologia moderna ainda luta para entregar estabilidade em escala planetária…

o velho IMS continua processando bilhões de transações críticas diariamente com tempos de resposta absurdos.

E quem realmente conhece DL/I avançado sabe de uma verdade quase proibida no mundo corporativo:

Existem workloads onde o IMS simplesmente continua imbatível.

Não por nostalgia.

Não por legado.

Mas por engenharia brutalmente eficiente.


🌳 DL/I — O Anti-SQL

O SQL venceu o mundo porque trouxe abstração.

O DL/I sobreviveu porque eliminou abstração.

Essa diferença muda tudo.

No SQL o banco precisa descobrir:

  • caminho de acesso

  • plano de execução

  • índice

  • optimizer

  • cardinalidade

  • join strategy

No DL/I:

o programador já sabe exatamente onde quer chegar.

O acesso é navegacional.

Direto.

Hierárquico.

Cirúrgico.

Enquanto o SQL pergunta:

“O que você deseja?”

o DL/I pergunta:

“Você sabe navegar?”

E essa pergunta separa operadores de aventureiros.


⚡ O Verdadeiro Poder do Posicionamento

Muitos programadores COBOL juniores enxergam:

CALL 'CBLTDLI'

como apenas uma API antiga.

Veteranos enxergam outra coisa:

Controle absoluto do path físico.

No IMS avançado, posicionamento é tudo.

O estado corrente do PCB literalmente define o universo de navegação da aplicação.

Quando um programa executa:

GU ROOT
GNP CHILD
GNP CHILD
GN NEXT ROOT

ele não está apenas lendo registros.

Ele está percorrendo estruturas físicas reais de armazenamento.

O IMS não pensa em linhas.

Ele pensa em:

  • segmentos

  • paths

  • dependência hierárquica

  • posicionamento lógico

  • ponteiros físicos

E isso muda completamente a mentalidade de desenvolvimento.


💾 O Segredo Físico Que Pouca Gente Entende

O maior erro de quem vem do SQL é imaginar que o IMS seja apenas “um banco hierárquico”.

Não.

O IMS é um modelo de acesso físico extremamente otimizado.

A verdadeira mágica está nos ponteiros.

Em bancos HIDAM, HDAM e DEDB, o IMS reduz drasticamente o custo de navegação usando estruturas físicas extremamente agressivas para a época.

Enquanto bancos relacionais modernos frequentemente precisam montar planos complexos de execução…

o IMS muitas vezes apenas segue ponteiros previamente organizados.

É quase obsceno de tão eficiente.

Especialmente em workloads previsíveis.


🚀 HDAM — Quando Hashing Vira Arte Negra

Veteranos IMS sabem que HDAM não é apenas “acesso direto”.

HDAM é uma filosofia.

A randomizing routine define praticamente o comportamento físico do banco.

E aqui mora um dos pontos mais subestimados do universo mainframe:

O programador IMS influenciava diretamente o layout físico da informação.

Não existia o conforto moderno do:

“deixa o banco resolver.”

No IMS avançado:

você é parcialmente responsável pelo desempenho físico do sistema.

E isso assusta desenvolvedores modernos acostumados com abstração total.


🌳 Parentage — O Peso da Hierarquia

No mundo relacional:

JOIN resolve quase tudo.

No IMS:

hierarquia mal desenhada vira pesadelo operacional.

Veteranos conhecem a dor de:

  • logical relationships

  • secondary indexing

  • twin chains

  • parentage explosion

  • reorgs monstruosos

Porque o IMS premia modelos previsíveis.

Mas pune violentamente modelagens ruins.

Um DBD mal desenhado pode condenar décadas de manutenção.

E muitos sistemas bancários ainda carregam decisões arquiteturais feitas nos anos 70.


☠️ O Trauma Coletivo Chamado REORG

Se existe uma entidade mitológica no mundo IMS…

ela se chama:

REORG

Quem nunca passou madrugada acompanhando:

  • unload

  • reload

  • image copy

  • prefix resolution

  • pointer rebuild

  • HD reorganization

ainda não conheceu o verdadeiro lado operacional do IMS.

Porque diferente do mundo SQL moderno, no IMS o layout físico importa absurdamente.

Overflow chains crescem.

Ponteiros degradam.

Randomizers envelhecem mal.

E eventualmente o banco precisa ser reorganizado.

O problema?

Alguns ambientes IMS possuem dezenas de TB e bilhões de segmentos.

Reorganizar isso não é “maintenance window”.

É engenharia de guerra.


🔥 Fast Path — O Monstro Sagrado

Quando alguém menciona:

DEDB Fast Path

os veteranos imediatamente entendem que a conversa ficou séria.

Porque Fast Path não foi criado para conveniência.

Foi criado para TPS brutal.

A ideia era simples:

reduzir ainda mais overhead.

Menos logging.

Menos locking.

Menos complexidade.

Mais velocidade.

E mesmo hoje o desempenho de certos ambientes Fast Path continua assustador.

Especialmente em telecom e financial switching.


⚔️ IMS vs DB2 — A Guerra Que Nunca Acabou

O mercado gosta de tratar IMS e DB2 como concorrentes.

Veteranos sabem que isso é ingenuidade.

Os maiores ambientes do planeta usam:

IMS + DB2

ao mesmo tempo.

Porque cada um resolve problemas diferentes.

DB2 entrega:

  • flexibilidade

  • SQL

  • analytics

  • BI

  • consultas ad-hoc

IMS entrega:

  • TPS monstruoso

  • previsibilidade

  • latência mínima

  • throughput absurdo

O DB2 é um cérebro analítico.

O IMS é um sistema nervoso autônomo.


🧠 O Que os Novatos Não Percebem

A maioria dos desenvolvedores modernos nunca precisou pensar em:

  • CI split

  • root anchor points

  • segment occurrence

  • PCB sensitivity

  • path call optimization

  • SSA qualification

  • PROCOPT impact

Mas no IMS avançado esses detalhes definem:

  • performance

  • lock contention

  • response time

  • CPU consumption

  • operational scalability

E é justamente isso que torna o IMS tão fascinante.

Ele exige que o desenvolvedor compreenda a máquina.


☕ Easter Egg Mainframe

Existe uma velha piada entre sysprogs veteranos:

“SQL é para perguntar.
DL/I é para saber.”

😄

E honestamente…

existe uma certa verdade cruel nisso.


🌐 IMS Moderno — O Dinossauro Virou API

Talvez o aspecto mais surreal do IMS moderno seja este:

Hoje APIs REST em JSON frequentemente terminam em:

CBLTDLI

Lá no fundo.

Aplicativos mobile modernos.

Pix.

Cartões.

Cloud híbrida.

OpenShift.

Tudo isso frequentemente desemboca em um banco hierárquico criado antes da internet existir.

É quase cyberpunk corporativo.


💣 O Grande Paradoxo do IMS

O IMS parece antigo porque ele é antigo.

Mas ao mesmo tempo ele continua incrivelmente moderno em alguns princípios fundamentais:

  • eficiência

  • previsibilidade

  • throughput

  • estabilidade

  • controle físico

  • otimização extrema

Enquanto o mundo moderno adicionou camadas infinitas de abstração…

o IMS permaneceu brutalmente próximo do hardware.

E talvez seja justamente por isso que ele ainda sobreviva.


🚀 O Dinossauro Que Continua Dominando

O mercado adora prever o fim do mainframe.

Mas existe um detalhe inconveniente:

Boa parte do sistema financeiro mundial ainda depende dele.

E dentro desse ecossistema…

o IMS continua sendo uma das peças mais resilientes já criadas pela engenharia de software corporativa.

Talvez porque no final das contas:

moda tecnológica muda.

Mas performance real em missão crítica continua rara.

E o velho DL/I ainda sabe exatamente onde os dados estão.

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, 22 de maio de 2019

☕🔥 DB2 z/OS — COMO IDENTIFICAR PROBLEMAS EM ÍNDICES, ANALISAR A SAÚDE E CRIAR ÍNDICES EFICIENTES

 

Bellacosa Mainframe e a saude do Db2

☕🔥 DB2 z/OS — COMO IDENTIFICAR PROBLEMAS EM ÍNDICES, ANALISAR A SAÚDE E CRIAR ÍNDICES EFICIENTES

No Db2 for z/OS, índices são literalmente o “GPS” do otimizador.
Quando um índice está ruim, fragmentado, mal desenhado ou inconsistente, os sintomas aparecem rapidamente:

  • CPU alta

  • GETPAGE excessivo

  • LOCKS maiores

  • Deadlocks

  • Elapsed Time absurdo

  • SORT desnecessário

  • RUNSTATS inconsistentes

  • ACCESS PATH inesperado

  • Tablespace em CHECK/RBDP/RECP

  • RID List Overflow

  • REORG frequente


🔥 COMO IDENTIFICAR PROBLEMAS EM ÍNDICES

1 — Verificando Fragmentação do Índice

Um dos principais indicadores.

Consultas importantes

SELECT
    NAME,
    CLUSTERING,
    CLUSTERRATIOF,
    LEAFDIST,
    NLEVELS,
    FULLKEYCARDF,
    FIRSTKEYCARDF
FROM SYSIBM.SYSINDEXES
WHERE CREATOR = 'SEU_SCHEMA'
AND TBNAME = 'SUA_TABELA';

🔎 O QUE OBSERVAR

CLUSTERRATIOF

Mostra o quanto os dados seguem a sequência do índice clustering.

Valores

ValorSituação
> 95Excelente
80–95Aceitável
< 80Fragmentação séria

Baixo CLUSTERRATIO gera:

  • Mais I/O

  • Mais Sync Read

  • Mais Random Access

  • Mais CPU


LEAFDIST

Distância média entre páginas leaf.

Quanto maior:

  • pior a localidade física

  • mais page split ocorreu


NLEVELS

Quantidade de níveis B-Tree.

NívelInterpretação
2-3Normal
4+Índice muito grande ou mal estruturado

Mais níveis = mais GETPAGE.


🔥 PAGE SPLIT — O GRANDE VILÃO

Quando páginas do índice enchem:

  • Db2 divide páginas

  • reorganiza ponteiros

  • aumenta fragmentação

Sintomas:

  • CPU cresce

  • bufferpool sofre

  • random I/O aumenta


🔎 COMO IDENTIFICAR PAGE SPLIT

SELECT
    NAME,
    SPACEF,
    STATSTIME
FROM SYSIBM.SYSINDEXSPACESTATS
WHERE DBNAME = 'SEU_DB';

🔥 REORGCHECK — O TESTE CLÁSSICO

No Db2 LUW existe REORGCHK.

No z/OS normalmente usamos:

  • RUNSTATS

  • REORG TABLESPACE/INDEX

  • Estatísticas catalogadas

  • RTS (Real Time Statistics)


🔥 REAL TIME STATISTICS (RTS)

Tabela importantíssima:

SYSIBM.SYSINDEXSPACESTATS

Campos críticos:

CampoSignificado
REORGINSERTSInserts desde último REORG
REORGDELETESDeletes
REORGUPDATESUpdates
LEAFDISTFragmentação
FARINDREFReferência distante
NEARINDREFReferência próxima

🔥 FARINDREF — UM DOS MELHORES INDICADORES

Mostra quantos acessos ao índice apontam para linhas longe fisicamente.

Quanto maior:

  • pior clustering

  • pior cache

  • pior bufferpool hit ratio


🔥 COMO SABER SE O ÍNDICE NÃO ESTÁ SENDO USADO

Pacotes e explain.


EXPLAIN

EXPLAIN PLAN SET QUERYNO = 100
FOR
SELECT *
FROM CLIENTES
WHERE CPF = ?;

Depois consulte:

SELECT
    ACCESSNAME,
    ACCESSTYPE,
    MATCHCOLS
FROM PLAN_TABLE
WHERE QUERYNO = 100;

🔎 INTERPRETAÇÃO

CampoSignificado
ACCESSTYPE='I'Uso de índice
MATCHCOLSQuantas colunas casaram
ACCESSNAMEÍndice usado

🔥 INDICADORES DE ÍNDICE RUIM

1 — MATCHCOLS baixo

Índice composto mal desenhado.


2 — ACCESSTYPE = 'R'

Tablespace Scan.

Ruim para tabelas grandes.


3 — RID LIST PROCESSING

Pode indicar:

  • excesso de índices

  • índices ruins

  • baixa seletividade


🔥 COMO DESENHAR UM ÍNDICE FORTE

REGRA #1 — COLUNA MAIS SELETIVA PRIMEIRO

Exemplo ruim:

CREATE INDEX IX1
ON CLIENTES
(SEXO, ESTADO);

Baixa cardinalidade.


Melhor:

CREATE INDEX IX1
ON CLIENTES
(CPF, ESTADO);

🔥 REGRA #2 — RESPEITAR O PREDICATE

Db2 usa LEFTMOST MATCHING.

Exemplo:

INDEX(A,B,C)

Funciona bem para:

WHERE A=?
WHERE A=? AND B=?
WHERE A=? AND B=? AND C=?

Ruim para:

WHERE B=?
WHERE C=?

🔥 REGRA #3 — EVITAR ÍNDICES DEMAIS

Cada índice:

  • aumenta INSERT

  • aumenta UPDATE

  • aumenta DELETE

  • aumenta LOG

  • aumenta LOCKING

  • aumenta CPU


🔥 QUANTOS ÍNDICES UMA TABELA DEVE TER?

Não existe número mágico.

Mas no mundo real:

TipoRecomendação
OLTP3–7
Tabelas críticas10–15 máximo
Acima de 20normalmente problema de modelagem

Já vi tabelas com:

  • 80 índices

  • 120 índices

Resultado:

  • INSERT sofrendo

  • Deadlock

  • log monstruoso

  • CPU absurda


🔥 ÍNDICE CLUSTERING

Muito importante.

CREATE INDEX IXCLI1
ON CLIENTES (CPF)
CLUSTER;

Só pode existir UM clustering index por tabela.

Ele influencia:

  • ordem física

  • prefetch

  • sequential detection

  • range scan


🔥 RUNSTATS — FUNDAMENTAL

Sem RUNSTATS:

  • optimizer fica “cego”

  • access path piora


Exemplo

RUNSTATS TABLESPACE DB1.TSCLI
TABLE(ALL)
INDEX(ALL)
KEYCARD
FREQVAL
HISTOGRAM
UPDATE ALL

🔥 O QUE O RUNSTATS FAZ

Atualiza:

  • cardinalidade

  • clustering

  • distribuição

  • frequência

  • histogramas

  • seletividade


🔥 RUNSTATS COM SHRLEVEL CHANGE

Permite online.

SHRLEVEL CHANGE

Muito usado em produção.


🔥 REORG INDEX

Quando usar:

  • fragmentação

  • page split

  • baixa cluster ratio


Exemplo

REORG INDEX (ALL) TABLESPACE DB1.TSCLI
SHRLEVEL CHANGE

🔥 REBUILD INDEX

Mais pesado.

Usado quando:

  • índice corrompido

  • recover

  • inconsistency

  • rebuild pós LOAD REPLACE


🔥 RUNSTATS x REORG

UtilitárioFunção
RUNSTATSAtualiza estatísticas
REORGReorganiza fisicamente
REBUILD INDEXReconstrói índice

🔥 RUNSTATUS / RESTRICTIVE STATES

Estados importantes no Db2.


🔴 CHECK PENDING (CHKP)

Db2 exige CHECK DATA.

Exemplo:

-904 RESOURCE UNAVAILABLE

Resolver:

CHECK DATA TABLESPACE DB1.TS1

🔴 REORG PENDING (REORP)

Db2 exige REORG.

Muito comum após:

  • ALTER

  • compress

  • partition change

Resolver:

REORG TABLESPACE DB1.TS1

🔴 RECOVER PENDING (RECP)

Objeto precisa RECOVER.


🔴 AUX CHECK PENDING

LOB inconsistente.


🔴 ADVISORY REORG PENDING (AREO*)

Db2 recomenda REORG.

Não bloqueia uso.


🔥 QUIESCE — O “PONTO DE RESTORE”

Cria ponto consistente para recover coordenado.


Exemplo

QUIESCE TABLESPACE DB1.TS1
WRITE YES

🔎 O QUE ELE FAZ

Sincroniza:

  • logs

  • páginas

  • buffers

Muito usado antes de:

  • LOAD

  • grandes mudanças

  • backup crítico


🔥 DISPLAY DATABASE

Comando essencial.

-DISPLAY DATABASE(DB1) SPACENAM(TS1) RESTRICT

Mostra:

  • REORP

  • CHKP

  • AREO*

  • COPY pending

  • advisory states


🔥 DISPLAY INDEX

-DISPLAY DATABASE(DB1) SPACENAM(TS1) USE

🔥 IFCID E MONITORAMENTO

Sysprog geralmente usa:

  • IFCID 199

  • IFCID 376

  • IFCID 389

  • OMEGAMON

  • MainView

  • Query Monitor

Para detectar:

  • index scan ruim

  • getpages altos

  • synchronous I/O

  • random read

  • RID overflow


🔥 SINAIS CLÁSSICOS DE ÍNDICE PROBLEMÁTICO

SintomaPossível causa
CPU altaÍndice ruim
Tablespace Scanfalta índice
GETPAGE altoexcesso de níveis
Sync I/O altofragmentação
Deadlockexcesso índices
INSERT lentomuitos índices
REORG frequentepage split
Bufferpool ruimclustering baixo

☕ MELHOR ESTRATÉGIA ENTERPRISE

Fluxo saudável

RUNSTATS
   ↓
EXPLAIN
   ↓
ANÁLISE RTS
   ↓
REORG
   ↓
MONITORAMENTO IFCID
   ↓
AJUSTE DE ACCESS PATH

🔥 RESUMO ENTERPRISE

Índice saudável:

✅ Alta seletividade
✅ Baixo NLEVELS
✅ CLUSTERRATIO alto
✅ Poucos page splits
✅ MATCHCOLS alto
✅ Bom clustering
✅ Estatísticas atualizadas
✅ Poucos índices redundantes


☕ REGRA DE OURO NO Db2 z/OS

“Índice demais mata INSERT.
Índice de menos mata SELECT.
Índice ruim mata os dois.”

quinta-feira, 9 de abril de 2009

🧔‍♂️💈 Seus REORGs do Db2 estão criando barba?

 

Bellacosa Mainframe apresenta o reorg do db2 

🧔‍♂️💈 Seus REORGs do Db2 estão criando barba?

Ou: quando o REORG vira o primo cabeludo do ambiente z/OS

Se você trabalha com IBM Mainframe + Db2 z/OS há mais de cinco minutos, já sabe:
👉 REORG não é luxo, é higiene básica do banco.
O problema é como ele costuma ser tratado no mundo real.

Em ambientes médios e grandes, o cenário é quase sempre o mesmo:

  • Centenas (às vezes milhares) de jobs de REORG

  • Criados por times de aplicação diferentes

  • Cada um com seu “jeitinho especial”

  • Scripts frágeis

  • Dependências implícitas

  • CHECK DATA aqui, DISCARD ali

  • E quando um passo falha… 🔥 incêndio operacional 🔥

É aí que surge a pergunta filosófica do DBA moderno:

“Será que meus REORGs estão criando barbas?”

Porque quando o REORG cresce sem controle, ele fica:

  • desalinhado

  • imprevisível

  • difícil de reiniciar

  • impossível de auditar

  • e um pesadelo para compliance 😈


🧠 Um pouco de história (porque Bellacosa sempre conta)

Lá atrás, no “Velho Testamento do Db2”, REORG era quase um ritual sagrado:

  • Janela batch gigante

  • Tudo parado

  • DBA com café forte

  • E muito JCL artesanal

Com o tempo:

  • Vieram REORG SHRLEVEL CHANGE

  • Depois ONLINE

  • Depois automação

  • Depois… bagunça organizada (ou nem isso)

O problema não é o REORG.
O problema é a falta de controle centralizado sobre quando, como e por quê ele roda.


🎯 O ponto crítico: falta de controle central

Vamos ser honestos (fofoquinha de corredor):

  • Times de aplicação sabem criar REORG

  • Mas não querem (nem devem) cuidar de padrão corporativo

  • DBA vira o “bombeiro de utilitário”

  • Restart vira arqueologia

  • Auditor pergunta:

    “Quem rodou esse REORG? Quando? Por quê? Com qual critério?”

  • E o DBA responde:

    “Então… veja bem…” 😬

Script-driven process é frágil.
Um COND CODE mal interpretado e todo o castelo cai.


⚡ Power Up Your Db2 REORGs (sem quebrar nada)

É aqui que se separa as crianças dos adultos.

E já vou adiantar o diferencial que faz o DBA sorrir:

🧙‍♂️ Sem mudar JCL

Sim. Você leu certo.
Nada de refatorar centenas de jobs legados.

🧩 Sem impactar os fluxos de aplicação

Os times continuam criando seus REORGs como sempre.

🏛️ Separação clara de papéis

  • Aplicação: o que precisa

  • DBA: como, quando e sob quais regras

Esse detalhe é ouro em ambientes corporativos.


🧰 O que muda na prática?

O Mestre dos Magos do DB2 deve agir como um orquestrador invisível:

  • Centraliza a execução

  • Aplica padrões

  • Controla paralelismo

  • Registra tudo

  • E mantém compliance feliz (raridade!)

Tudo isso transparente, sem “quebrar” o legado.


📚 O que você aprende (e ganha) com essa abordagem

🔍 Seleção inteligente de REORGs

Nada de “REORG por feeling”:

  • Regras

  • Thresholds

  • Estatísticas reais

  • Prioridades de negócio

📏 Ajuste automático de espaço

  • Tablespace cresceu? Ajusta.

  • Encolheu? Otimiza.
    Sem DBA das organizações Tabajara ficar refazendo cálculo no guardanapo.

🧭 Impacto em access path? Sim, senhor!

  • Análise pós-REORG

  • REBIND opcional e controlado

  • Nada de surpresa em produção segunda-feira cedo ☕😱

⚙️ Paralelismo com limites

  • Executa múltiplos objetos

  • Respeitando cotas

  • Sem matar o LPAR

  • Sem “storm” de utilitários

📊 Relatórios e auditoria

  • Quem rodou

  • Quando

  • Por quê

  • Com quais critérios

Auditor pergunta → você mostra relatório → fim da conversa.


🥚 Easter Eggs para DBAs atentos

  • REORG sem governança é dívida técnica disfarçada

  • “Sempre rodamos assim” não é estratégia

  • REORG automático não substitui DBA — ele liberta o DBA

  • O maior inimigo da performance não é fragmentação… é improviso


🗣️ Comentário de bastidor (aquele sincero)

Se você:

  • Vive apagando incêndio de REORG

  • Já perdeu noite com restart quebrado

  • Já ouviu “foi só um REORGzinho”

  • Ou já explicou access path estranho depois de maintenance…

Então você não precisa rodar mais REORG.
Você precisa rodar REORG com controle.


🎓 Conclusão estilo Bellacosa

REORG não pode ser selvagem.
REORG precisa de coleira, guia e pedigree.

Automatizar sem padronizar é só acelerar o caos.
Centralizar sem mudar o legado é maturidade operacional.

Se seus REORGs estão “esta crescendo as barbas ”, talvez não seja hora de cortar…
👉 é hora de pentear com inteligência.

☕💙
Um café, um REORG bem governado e um DBA feliz.