| Bellacosa Mainframe configurado o Db2 |
🔥☕ DSN COMMAND E SUBCOMMANDS NO DB2 z/OS — A PORTA DE ENTRADA DO UNIVERSO DB2 NO MAINFRAME IBM Z 💾🚨
Se existe um comando que praticamente todo programador COBOL/DB2, DBA ou sysprog encontra cedo ou tarde no Mainframe, esse comando é:
DSN
O DSN é o processador de comandos do Db2 no z/OS e funciona como um processador TSO.
Em outras palavras:
ele abre uma sessão de comunicação direta com o DB2.
É a partir dele que:
executamos SQL,
fazemos BIND,
REBIND,
RUN,
SPUFI,
administramos packages,
executamos programas DB2,
controlamos aplicações.
🔥 O QUE É O COMANDO DSN?
Tradução
O comando TSO DSN inicia uma sessão DSN.
💾 EXEMPLO BÁSICO
No prompt TSO:
READY
digite:
DSN SYSTEM(DB9G)
🚀 O QUE ACONTECE?
Você entra no ambiente DB2:
DSN
Agora:
comandos DB2,
SQL,
BIND,
RUN
podem ser executados.
🧪 LABORATÓRIO 1 — ENTRANDO NO DB2
Passo 1
No TSO:
DSN SYSTEM(DB9G)
Passo 2
Você verá:
DSN
Passo 3
Teste um comando:
-DIS THREAD(*)
Passo 4
Saia da sessão:
END
🔥 END COMMAND
“Saindo do universo DB2”
Tradução
O subcomando END termina a sessão DSN e retorna ao TSO.
💾 EXEMPLO
END
🚀 RESULTADO
Você volta ao:
READY
🔥 IMPORTANTE — FOREGROUND E BACKGROUND
Os subcomandos DSN podem rodar:
foreground (interativo),
background (batch JCL).
Exceto:
SPUFI
que roda apenas no foreground ISPF.
🔥 ABEND
“Forçar um crash controlado”
Tradução
O subcomando ABEND termina a sessão DSN com abend X'04E'.
🚨 IMPORTANTE
IBM diz claramente:
use apenas sob orientação do suporte IBM.
💾 PARA QUE SERVE?
Diagnóstico profundo:
dumps,
análise interna,
debugging DB2.
🚨 EXEMPLO
ABEND
💥 RESULTADO
Gera:
dump,
encerramento anormal,
diagnóstico técnico.
🔥 BIND PACKAGE
“Criando o package executável do DB2”
Tradução
Constrói um package de aplicação.
O DB2:
registra descrição no catálogo,
salva package no directory,
remove versões antigas.
💾 O QUE É PACKAGE?
Package contém:
SQL compilado,
access path,
metadata otimizada.
🧪 LABORATÓRIO 2 — BIND PACKAGE
Passo 1 — Pré-compilar COBOL DB2
Gerar DBRM.
Passo 2 — Entrar no DSN
DSN SYSTEM(DB9G)
Passo 3 — Executar bind
BIND PACKAGE(MYCOLL) MEMBER(PROG1)
ACTION(REPLACE)
VALIDATE(BIND)
🚀 RESULTADO
DB2 cria:
package executável,
access path SQL.
🚨 ERROS COMUNS
SQLCODE -805
Package não encontrado.
AUTH FAILURE
Sem privilégio BIND.
🔥 BIND PLAN
“Criando o plano de execução da aplicação”
Tradução
Constrói um application plan.
Todo programa DB2 precisa de um PLAN para:
alocar recursos,
executar SQL.
💾 RELAÇÃO PACKAGE vs PLAN
| Item | Função |
|---|---|
| PACKAGE | SQL compilado |
| PLAN | Estrutura execução |
🧪 LABORATÓRIO 3 — BIND PLAN
Passo 1
DSN SYSTEM(DB9G)
Passo 2
BIND PLAN(PLAN1)
PKLIST(MYCOLL.*)
🚀 RESULTADO
Plano criado associando packages.
🔥 BIND QUERY
“Congelando access paths”
Tradução
Lê informações da:
DSN_USERQUERY_TABLE
e controla bind options/access paths.
💾 PARA QUE SERVE?
Estabilizar performance SQL.
Muito usado para:
evitar regressão,
preservar access path.
💥 CENÁRIO REAL
Após upgrade DB2:
SQL ficou pior.
DBA usa:
BIND QUERY
para manter plano antigo.
🔥 BIND SERVICE
“Criando REST Services no DB2”
Tradução
Cria package representando REST Service DB2.
💾 IMPORTÂNCIA MODERNA
Permite:
APIs REST,
integração cloud,
microservices,
mobile.
🧪 EXEMPLO
BIND SERVICE(MYREST)
🔥 DCLGEN
“O gerador mágico de estruturas COBOL”
Tradução
Produz:
DECLARE TABLE SQL,
estrutura COBOL/PL1/C.
💾 O QUE ELE GERA?
Exemplo:
01 CLIENTE.
05 CLI-ID PIC S9(9) COMP.
05 CLI-NOME PIC X(30).
🧪 LABORATÓRIO 4 — DCLGEN
Passo 1
DSN SYSTEM(DB9G)
Passo 2
DCLGEN TABLE(CLIENTES)
LIBRARY('USER.COPYLIB')
ACTION(REPLACE)
🚀 RESULTADO
DB2 gera:
copybook COBOL,
DECLARE TABLE.
🔥 FREE PACKAGE
“Apagando packages antigos”
Tradução
Remove:
versões específicas,
collections inteiras,
packages antigos.
🧪 EXEMPLO
FREE PACKAGE(MYCOLL.PROG1)
🚨 CUIDADO
Se apagar package em produção:
SQLCODE -805
🔥 FREE PLAN
“Removendo plans”
Tradução
Apaga application plans do DB2.
🧪 EXEMPLO
FREE PLAN(PLANOLD)
🚨 IMPACTO
Aplicações associadas:
param imediatamente.
🔥 REBIND PACKAGE
“Reotimizando SQL sem recompilar”
Tradução
Rebind package após mudanças que afetam package sem alterar SQL.
💾 PARA QUE SERVE?
Muito usado após:
RUNSTATS,
upgrade DB2,
mudança índice,
tuning.
🧪 LABORATÓRIO 5 — REBIND PACKAGE
Passo 1
REBIND PACKAGE(MYCOLL.PROG1)
🚀 RESULTADO
DB2:
recalcula access path,
reotimiza SQL.
🚨 PERIGO
Às vezes:
performance piora 😄
🔥 REBIND PLAN
“Atualizando plans sem recriar”
Tradução
Rebind application plan após alterações atributos.
🧪 EXEMPLO
REBIND PLAN(PLAN1)
🔥 RUN
“Executando programa DB2”
Tradução
Executa aplicação contendo SQL.
🧪 LABORATÓRIO 6 — RUN COBOL DB2
Passo 1
DSN SYSTEM(DB9G)
Passo 2
RUN PROGRAM(PROGCOB)
PLAN(PLAN1)
LIB('USER.LOADLIB')
🚀 RESULTADO
Programa COBOL executado sob DB2.
🔥 SPUFI
“O SQL interativo clássico do Mainframe”
Tradução
Executa SQL usando entrada arquivo.
💾 O QUE É SPUFI?
SQL Processor Using File Input.
Ferramenta clássica DB2.
🧪 LABORATÓRIO 7 — SPUFI
Passo 1
Entrar no DB2I.
Passo 2
Selecionar:
SPUFI
Passo 3
Executar:
SELECT *
FROM SYSIBM.SYSTABLES
FETCH FIRST 10 ROWS ONLY;
🚀 RESULTADO
DB2 retorna linhas SQL.
🔥 O QUE SEPARA O PROGRAMADOR COBOL DO ESPECIALISTA DB2?
O iniciante:
escreve SQL.
O especialista:
entende:
BIND,
PLAN,
PACKAGE,
REBIND,
RUN,
DCLGEN,
access path,
runtime DB2.
💣 A GRANDE VERDADE DO DB2
O SQL é apenas:
a superfície.
O verdadeiro motor do DB2 vive:
nos packages,
nos plans,
nos binds,
nos traces,
no optimizer,
no runtime DSN.
E entender os subcomandos DSN é praticamente:
Sem comentários:
Enviar um comentário