| 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
| Tipo | Uso |
|---|---|
| Segmented | tradicional |
| Partitioned | grandes volumes |
| Universal | moderno |
| Temporary | temporárias |
| Clone | deploy 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
| Tabela | Função |
|---|---|
| SYSIBM.SYSTABLES | tabelas |
| SYSIBM.SYSCOLUMNS | colunas |
| SYSIBM.SYSINDEXES | índices |
| SYSIBM.SYSPACKAGE | packages |
🧨 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
| Componente | Função |
|---|---|
| Coupling Facility | sincronização |
| GBP | cache compartilhado |
| IRLM | locking |
🚨 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:
- REBUILD INDEX
- REORG
- RUNSTATS
- Ajuste BUFFERPOOL
- 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. ☕💣
Sem comentários:
Enviar um comentário