| Bellacosa Mainframe Laboratio DB2 |
💥 LAB: Db2 na prática — do TSO ao Batch
Trabalharemos com o IBM Db2 13 for z/OS usando duas abordagens:
👉 Online (TSO/ISPF + SPUFI)
👉 Batch (JCL + DSNTEP2)
🧪 PARTE 1 — SPUFI (modo interativo)
🔹 O que é SPUFI?
👉 SPUFI = SQL Processor Using File Input
Ferramenta dentro do DB2I (ISPF) para rodar SQL rapidamente.
🚀 Passo a passo
1. Entrar no DB2I
No ISPF:
===> DB2I
2. Selecionar SPUFI
Option ===> 1
3. Criar dataset de entrada
Exemplo:
VAGNER.SQL.INPUT
4. Escrever o SQL
CREATE TABLE VAGNER.CLIENTES (
ID INTEGER,
NOME VARCHAR(50),
CIDADE VARCHAR(50)
);
INSERT INTO VAGNER.CLIENTES VALUES (1, 'ANA', 'SAO PAULO');
INSERT INTO VAGNER.CLIENTES VALUES (2, 'JOAO', 'CAMPINAS');
SELECT * FROM VAGNER.CLIENTES;
5. Executar (PF8)
👉 Resultado vai para o dataset de saída
💡 O que você aprendeu aqui
✔ Criar tabela
✔ Inserir dados
✔ Consultar
✔ Usar ambiente interativo
⚙️ PARTE 2 — DSNTEP2 (modo batch raiz)
Agora vem o modo produção de verdade 😎
🔹 O que é DSNTEP2?
👉 Programa utilitário que executa SQL via JCL
💡 Tradução Bellacosa:
SPUFI é treino… DSNTEP2 é jogo oficial ⚔️
📜 JCL COMPLETO
//DB2JOB JOB (ACCT),'DB2 LAB',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//*
//STEP01 EXEC PGM=IKJEFT01
//STEPLIB DD DISP=SHR,DSN=DSN!!0.SDSNLOAD
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DB2P)
RUN PROGRAM(DSNTEP2) PLAN(DSNTEP71) -
LIB('DSN!!0.SDSNLOAD')
END
/*
//SYSIN DD *
SELECT * FROM VAGNER.CLIENTES;
/*
🔍 Explicando (nível especialista)
🔹 IKJEFT01
👉 Interface TSO em batch
🔹 DSN SYSTEM(DB2P)
👉 Conecta no subsistema Db2
🔹 DSNTEP2
👉 Executa comandos SQL
🔹 PLAN(DSNTEP71)
👉 Plano necessário para execução
🔹 SYSIN
👉 Onde está o SQL
🧠 Resultado esperado
Você verá:
ID NOME CIDADE
----------------------
1 ANA SAO PAULO
2 JOAO CAMPINAS
💣 PEGADINHAS DE PRODUÇÃO
⚠️ 1. Falha de autorização
👉 Verifique permissões no RACF
⚠️ 2. PLAN não encontrado
👉 DSNTEP71 pode variar no ambiente
⚠️ 3. SQLCODE negativo
Exemplo:
- -104 → erro de sintaxe
- -204 → objeto não existe
- -911 → deadlock
🔥 EVOLUÇÃO DO LAB
Quer subir o nível? Tenta isso:
💡 Desafio 1
Criar índice:
CREATE INDEX IDX1 ON VAGNER.CLIENTES (ID);
💡 Desafio 2
Update:
UPDATE VAGNER.CLIENTES
SET CIDADE = 'RIO DE JANEIRO'
WHERE ID = 1;
💡 Desafio 3
Delete:
DELETE FROM VAGNER.CLIENTES WHERE ID = 2;
🚀 VISÃO DE MAINFRAME RAIZ
👉 SPUFI → exploração / debug
👉 DSNTEP2 → automação / batch / produção
Se você domina isso, você já está acima de 80% dos devs Db2 💥