Treinamento DB2 Autor: Sebastião Elton Meira
Treinamento DB2 SQL ESTÁTICO vs. SQL DINÂMICO ESTÁTICO ..................................................... ..................................................... Exec SQL Delete from Dept End-Exec. ..................................................... ..................................................... .....................................................
Instrução SQL Completa Fixo
Estratégia de o pré-estabelecida.
Treinamento DB2 DINÂMICO ..................................................... Var .
Instrução SQL fornecida durante a execução.
..................................................... Exec SQL Estratégia de o Immediate : Var pré-estabelecida. End-Exec ..................................................... Delete from Dept
Execute
Treinamento DB2 VARIÁVEL HOST Variável Host As variáveis HOST são utilizadas para permuta de valores entre a linguagem SQL e a linguagem de programação. Uma das possíveis utilizações da variável HOST é a de fornecer um valor a uma instrução AQL, tornando-a assim uma instrução genérica. A referencia á variável HOST deve ser precedida pelo caracter “:”. Seu uso é facultativo mas recomenda-se sua utilização para evitar possibilidade de confusão. O uso da variável HOST é opcional. Seu uso é obrigatório somente para as instruções SELECT. A variável HOST deve ser compatível com a coluna quanto ao seu data type e ao seu tamanho.
Treinamento DB2 As variáveis HOST não devem ser utilizadas para referenciar nomes de tabelas ou de colunas. Exemplo de Variáveis HOST: EXEC SQL INSERT INTO EMPR (MATR, SOBRENOME) VALUES ( :MATR, :SNOME ) END-EXEC EXEC SQL UPDATE EMPR SET SALARIO = SALARIO * :PERCENT WHERE CARGO = :CARGO END-EXEC
Treinamento DB2 PROCESSAMENTO DE MÚLTIPLAS LINHAS Processamento de Múltiplas Linhas
SELECT MATR SOBRENOME 30 SILVA 290 SANTOS 300 ALMEIDA
MATR SOBRENOME
OPEN
FETCH
30 SILVA 290 SANTOS 300 ALMEIDA
MATR SOBRENOME 30 SILVA
290 SANTOS 300 ALMEIDA
FETCH
Treinamento DB2 Select com Fetch
Definição de um CURSOR EXEC SQL DECALRE CUR001 CURSOR FOR SELECT MATR, SOBRENOME FROM EMPR WHERE DEPT = :DEPT END-EXEC Abrindo um CURSOR previamente definido. EXEC SQL OPEN CUR001
END-EXEC
FETCH das linhas resultantes EXEC SQL FETCH CUR001 INTO :MATR, :SNOM END-EXEC Fechando o CURSOR quando terminar a leitura dos dados. EXEC SQL CLOSE CUR001
END-EXEC
Treinamento DB2 Commit / Rollback COMMIT / ROLLBACK COMMIT Indica término bem sucedido de uma unidade de trabalho Alteração dos dados serão gravadas. Todas os PAGE LOCKS serão liberados CURSOR fechado, exceto para CURSOR WITH HOLD ROLLBACK Unidade de trabalho corrente é abandonado Atualização dos dados desde o último COMMIT são desfeitas Todos os PAGE LOCKS são liberados CURSOR fechado
Treinamento DB2 CÓDIGO FONTE SQL
BIBLIOTECA DE INCLUDE PRÉ-COMPILAÇÃO
CÓDIGO FONTE MODIFICADO COMPILAÇÃO MÓDULO OBJETO LINKEDIÇÃO
BIND
CATÁLOGO DB2 DESCRIÇÃO DE TABELA AUTORIZAÇÃO DBRM
DIRETÓRIO PLANO/PACKAGE
MÓDULO DE CARGA LANGUAGE INTERFACE
EXECUÇÃO
Treinamento DB2 BIND BIND BIND ADD Adiciona Plano Novo
REBIND
BIND REPLACE
Refaz Plano (Ambiente alterado)
Refaz Plano (SQL Alterado)
OTIMIZADOR
DBRM
DBRM
CATÁLOGO
PLANO PACKAGE
DIRETÓRIO
Treinamento DB2 SEGURANÇA INTERNA DO DB2 TABELAS VIEW
SELECT UPDATE [Lista de colunas] INSERT
PLANOS PACKAGES
BIND EXECUTE
Treinamento DB2 SEGURANÇA INTERNA DO DB2 STOGROUP BUFFERPOOL TABLESPACE
USE
DB2
SYS RECOVER TRACE, etc..
DATABASE
DB CREATETS LOAD, etc..
Treinamento DB2 Atribuição de Autoridade Instrução SQL
GRANT
REVOKE
+
Privilégio Sobre Recurso
+
TO
+
Privilégio Sobre Recurso
+
FROM
+
AUTH-ID
+ AUTH-ID
Exemplo: GRANT SELECT ON EMPR TO PUBLIC REVOKE SELECT FROM EMPR FROM PUBLIC
Treinamento DB2 Utilitários DB2 - On Line
1. LOAD
4.REORG
10.QUIESCE
7.COPY 11.MODIFY
2.CHECK INDEX
5.RUNSTATS
3.CHECK DATA
6.STOPSPACE
8.MERGE COPY
12.REPORT
9.RECOVER 13.REPAIR
Treinamento DB2 Utilitários DB2 - Off Line
Treinamento DB2 Utilitários DB 2 - Services AIDS 1. 2. 3. 4. 5. 6. 7. 8.
DSN1COPY DSN1PRNT DSN1COMP DSN1LOGP DSN1CHKR DSNTIAUL DSNTEP2 DSNTIAD
Trata data por data set Listas e formatas data set pages Estimativas de espaços a ser arquivados(DB2) Lê o conteúdo da Log e formata para display. Verifica a Integridade dos diretórios e catálogo. Unload de tabelas para uma arquivo sequencial. Para emissão de SQL dinâmico. Para emissão de SQL dinâmico exceto SELECT.
Treinamento DB2 SYSIBM.SYSUTILX SysIBM.SysutilX Uma Tabela de Diretório DB2.
UTILID
JOB NOME
UTILITY NOME
CHECKPOINT INFORMAÇÃO....
Identificador Único
Coluna é inserida no Início do Utility Coluna é atualizada em Pontos de Checkpoints e Parada de Utility. Coluna eliminada quando do termino do Utility.
Treinamento DB2 LOAD LOAD Definição da Tabela: CREATE TABLE PROD.EMPRESA (NOME_EMPRESA CHAR(6) PRIMEIRO_NOME VARCHA(12) INTERM_NOME CHAR(1) ULTIMO_NOME VARCHAR(15) FONE CHAR(4) SALARIO DECIMAL(8,2) DEPTO CHAR(3) PRIMARY KEY(NOME_EMPRESA), FOREIGN KEY(DEPTO) REFERNCES DEPT ON DELETE SET NULL) IN TESTEDB1.TESTTSP1;
NOT NULL, NOT NULL, NOT NULL, NOT NULL, , , ,
Treinamento DB2 LOAD - JCL //LOADTEST EXEC DSNUPROC,.... //DSNUPROC.SYSREC DD DSN=ARQUIVO.ENTRADA ,DISP=SHR //DSNUPROC.SYSUT1 DD DSN=ARQUIVO.SYSUT1,DISP=( MOD,DELETE,CATLG),... //DSNUPROC.SORTOUT DD DSN=ARQUIVO.SORTOUT,DISP=(MOD,DELETE,CATLG),... //DSNUPROC.SYSERR DD DSN=ARQUIVO.SYSERR,DISP=(MOD,DELETE,CATLG),... //DSNUPROC.SYSMAP DD DSN=ARQIVO.SYSMAP,DISP=(MOD,DELETE,CATLG),... //DSNUPROC.SYSIN DD *
LOAD DATA INTO TABLE PROD.EMPRESA WHEN (32:34) = ‘A00’ (NOME_EMPRESA POSITION (1:6), PRIMEIRO_NOME POSITION(8:16) CHAR, INTERM_NOME POSITION(19), ULTIMO_NOME POSITION(21:30) CHAR, DEPTO POSITION(32:34), FONE POSITION(36:39) NULLIF PHONE = ‘ ‘, SALARIO POSITION(65:69) DECIMAL EXTERNAL)
Treinamento DB2 LOAD - Opção LOG LOG YES Cada página será registrada na LOG. LOG NO Carga mais rápida Requer ImageCopy Modificação por SQL não permitida enquanto não fizer o ImageCopy SQL error code –904
Treinamento DB2 LOAD - Continuação LOAD RESUME NO REPLACE
LOAD RESUME YES
LOAD RESUME NO (Cond. Code = 8 ) TABLESPACE
Treinamento DB2 Violação de Índice Único Quando do LOAD, se inserido duas ou mais ocorrências com a mesma chave o DB2 descartas todas as ocorrências deste LOAD. CHAVE ENTRADA A B C D B
CARGA NA TABELA A
DESCARTES B
C D B
Fases do Load
Saída Tabela
FASES DO LOAD
Dados de Entrada (SYSREC)
Sysut1
RELOAD Syserr
Sysmap
Sysut1
Sortout Sysut1
SORT
BUILD
Sortout
Sysut1 Syserr
Indexes
Sysut1 Syserr
IDEXVAL
Saída
Tabelas
Treinamento DB2
FASES DO LOAD Sysut1
Sysut1
Sortout
ENFORCES
Parent Tables
Treinamento DB2
Saída
Tabelas
Sortout Syserr
Fases do Load Continuação
Dados entrada (SYSREC)
Sortout Syserr
DISCARD
Sysdisc
Sysmap
Sortout Syserr
REPORT
Relatório Sumário
Treinamento DB2 CHECK DATA Checa todas as chaves estrangeiras de uma lista de tablespaces com os valores de chaves primárias correspondentes. Checa todas as ocorrências dependente, ou somente as adicionadas pelo LOAD. Opcionalmente copia ocorrências „Órfã‟ para uma tabela de exceção, e elimina a ocorrência da tabela ou não. Tirar do Status de CHECK PENDING Nenhuma violação foi detectado, ou Erros são eliminados com a opção DELETE YES .
FasesFASES do DO Check Data CHECK DATA Repetida para Dependent Table (Tabela “FILHA”) Dependent table
SYSUT1
Treinamento DB2
SCANTAB
SYSUT1
SORTOUT SORT
Sortout/Índice chave estrangeira SYSERR SCANTAB
Índice chave Primária
Dependent/Descendent Tables
SYSERR
Tabela Exceção
REPORTCK
Relatório de Sumário
Treinamento DB2 CHECK INDEX
O CHECK INDEX testa a consistência entre o dados e o Índices. O Check procura a inconsistência e emite uma mensagem de erro, descrevendo qual o problema. Exemplos de SYSIN: //DSNUPROC.SYSIN DD * CHECK INDEX NAME(prd.indice1, prd.index2) CHECK INDEX(prd.indice1 PART 3) CHECK INDEX(ALL) TABLESPACE PRD.EMPRESA
Fases doCHECK Check Index FASES DO INDEX
Treinamento DB2
Índices
UNLOAD
Sysut1
Sysut1
SORT
Sysut1
Sysut1
CHECKINDEX Tabelas
Relatório Sumário
Treinamento DB2 REORG A fase de UNLOAD dos registros de uma tabela. Descarrega as ocorrências na sequência do Índice de clusterização Fase de RELOAD carrega o dados de volta a tabela, respeitando os FREE PAGE, PCTFREE, etc. FASE de SORT Sorteia as chaves do índices contidas no SYSUT1, gravando no SORTOUT. Fase de BUILD Reconstroí os Índices com a saída do SORT.
Treinamento DB2
FASES REORG FasesDO do Reorg Table space
UNLOAD
Saída dos Dados (SYSREC) Entrada dos Dados (SYSREC)
Table space
RELOAD
Sysut1
Sysut1
Sortout
SORT
BUILD
Sortout
Indexes
Treinamento DB2
REORG Reorg
UNLOAD CONTINUE
RESTART
UNLOAD PAUSE STOP Edit/Field
UNLOAD ONLY Edit/Field
Field/Edit
TERMINATE
LOAD REPLACE Validation/Field/Edit
Treinamento DB2 COPY
Cria um Backup do Tablespace COPY TABLESPACE CURXDB01.CURXTS01 FULL YES SHRLEVEL REFERENCE Permite Atualização Leitura compartilhada Se não quiser compartilhar o a base, emita o comando no DB2: -START DB(CURXDB01) SPACE(CURXTS01) ACCESS(UT) Assim somente utilitários podem agir sobre os Objetos.
Treinamento DB2
Copy
Controle de Cópia Incremental SPACE MAP PAGE
Altera Indicadores de Páginas
Altera bit no HEADER DATA PAGE
O Copy Full e Incremental desliga o bit. Fazer sempre Image Copy FULL após REORG LOG NO ou LOAD LOG NO. Se mais que 15% das páginas foram alteradas, opte por COPY FULL. Especifique DISP=(MOD,CATLG) para permitir restart do utilitário.
Treinamento DB2 Mergecopy MERGECOPY
MERGECOPY
Image Copys Incremental
Merge Image Copy Incremental
SYSIN: MERGECOPY TABLESPACE PRD.EMPRESA NEWCOPY NO
Treinamento DB2
Mergecopy
Incremental
MERGECOPY
Full
Full Image Copy
SYSIN: MERGECOPY TABLESPACE PRD.EMPRESA NEWCOPY YES
NEWCOPY YES insere um apontamentos no catalogo DB2 como FULL Image Copy. NEWCOPY NO atualiza o registros com Image Copy Incremental.
Treinamento DB2 Funções do Utilitário RECOVER 1. 2. 3. 4. 5.
Inicialização Alocação Dinâmica se não existir apontamento no statements DD Define os datasets do Tablespaces. Image Copy Merge e Restaura Aplica a log.
Recovery RECOVERY 22:00
IMAGECOPY EMPRESA FULL YES
Treinamento DB2
RUN PROGRAM XYZ
22:20
08:45
Descobre que programa Atualizou dados errados
09:00
Restaurar a partir do Último Image Copy
PONTOS DE RECOVERY Permite restaurar ate: Um especifico Full ou Incremental Image Copy RECOVER .... TOCOPY I.D15.CUR.DBP0TS01.G0001V00 Um especifico LOG RBA. RECOVER .... TORBA X‟005E00123456‟
Treinamento DB2
Index Recovery
INDEX RECOVERY Fase UNLOAD
Fase SORT
Fase BUILD Index1
UNLOAD Sysut1 BUILD
Arquivo de Trabalho Index2
SORT Tablespace Sysut1
Exemplos de SYSIN: RECOVER INDEX(PRD.INDICE1, PRD.INDICE2) RECOVER INDEX (ALL) TABLESPACE PRDXDB01.EMPRESA RECOVER INDEX(PRD.INDICE1 PART 2)
Treinamento DB2 RECOVERY PENDING segue as seguintes condições: Condição Term Util Term Util
UTILITÁRIO FASE Recover TS -------Recover Index BUILD RELOAD Term Util Reorg/Load SORT BUILD Point in Time Recover -------TS Recovery Tablespace
OBJETOS colocado em RE TABLESPACE Índice ainda não construídos Tablespace, Partições e Índices Todos os Índices Índice ainda não construídos Todos os Índices
Treinamento DB2 MODIFY Elimina Image Copy desnecessários e log ranges do catálogo DB2, As entradas são da SYSCOPY e SYSLGRNG. Possível o concorrente durante o MODIFY com exceção do SYSCOPY e SYLGRNG. Exemplo: MODIFY RECOVERY TABLESPACE(CURXDB01.CURXTS01) DELETE DATE(19981101). MODIFY RECOVERY TABLESPACE(CURXDB01.CURXTS01) DELETE AGE(90) DELETE DATE é eliminados as ocorrências da data informada para trás DELETE AGE todos ocorrências com a quantidades de dias maior que a informadas serão eliminadas.
Treinamento DB2 DIAGNOSE Ajuda no diagnóstico de problemas de utilitários. Normalmente sua utilização é a pedido do E IBM STOSPACE Colhe informação de espaço alocado para cada Storage Groups, Tablespaces e índices relacionados. A informação é registrada no catálogo DB2.
Treinamento DB2 QUIESCE
Verifica restrições para os tablespaces especificados e cria um ponto de consistência para eles. Para cada tabespace, o Quiesce cria uma entrada na SYSCOPY com RBA válido para a recuperação. QUIESCE
TABLESPACE CURXDB01.CURXTS01 TABLESPACE CURXDB01.CURXTS02
Treinamento DB2 REPORT Listas dados sobre Tablespaces. O relatório pode Ter 2 tipos de saídas: TABLESPACESET – Tablespace e tabelas que participam de Relacionamento de Integridade Relacional (RI). RECOVERY - Informações de recuperação a partir do catálogo, diretório e BSDS.
REPORT TABLESPACESET TABLESPACE CURXDB01.CURXTS01 REPORT RECOVERY TABLESPACE CURXDB01.CURXTS01.
RUNSTATS
RUNSTATS
Treinamento DB2
Varre um Tablespace ou índice para atualização no catálogo de utilização de espaço e eficiência do índices. Esses dados são utilizados pelo otimizador do DB2. O Runstats atualizadas as tabelas: Estatística usada pelo OTIMIZADOR 1. SYSTABLES 2. SYSTABLESPACE 3. SYSINDEXES 4. SYSCOLUMNS 5. SYSCOLDIST
Outras para informações do DBA 1. SYSTABLEPART 2. SYSINDEXPART 3. SYSCOLDISTSTAS 4. SYSCOLSTATS 5. SYSINDEXSTATS 6. SYSTABSTATS
DSNTIAUL DSNTIAUL
Treinamento DB2
Permite gerar um arquivo sequencial dos dados da tabelas, e um outro com as informações de onde inicia e termina os registros, alem das informações necessária para o LOAD. Exemplo do JCL: //UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSUDUMP DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSPUNCH DD DSN=P915537.FONTES.CAPXTS14,UNIT=SYSDA, // DISP=(,CATLG,DELETE),SPACE=(TRK,(50,10),RLSE) //SYSREC00 DD DSN=P915537.DADOS.CAPXTS14,UNIT=SYSDA, // DISP=(,CATLG,DELETE),SPACE=(CYL,(80,05),RLSE) //SYSTSIN DD * DSN SYSTEM(DBP0) RUN PROGRAM(DSNTIAUL) PLAN(DSNTIB41) PARMS('SQL') LIB('DB2P1.V4R1M0.RUNLIB.LOAD') //SYSIN DD * SELECT * FROM SICAP.CAPXTB14ENTRADA ; /*
Treinamento DB2 COMANDOS DB2 Principais comandos DB2 -DIS DB(ABE*) SPACE(*) LIMIT(*) Verifica os status de todos os Tablespace e Indexspace do DATABASE que comece com ABE.
-DIS DB(*) SPACE(*) LIMIT(*) RESTRICT Verifica todos os Tablespaces e Indexspace com alguma Restrição
-START DB2 / -STOP DB2 Inicializa e encerra o DB2 (Comandos na console OS/390)
-DIS UTIL(*) Mostra todos os UTILID com seus respectivos STATUS
Principais Comandos DB2 - Continuação
Treinamento DB2
-TERM UTIL(IMAGC) Termina o UTILID IMAGC
-START DB(ABEXDB01) SPACE(*) ACCESS(RW) Libera todos Indexspace e Tablespaces para o de READ/WRITE
-START DB(ABEXDB01) SPACE(ABEXTS12,ABEXPX12) ACCESS(UT) Starta os Tablespace ABEXTS12 e o Indexspace ABEXPX12 somente para o de utilitários DB2.
-DIS DB(ABEXDB01) SPACE(*) LIMIT(*) LOCKS Mostra todos os Tablespaces e Indexspaces do Database ABEXDB01 e as respectivas alocação.
-DIS THREAD(*) Mostra todas as threads conectado ao DB2.
Treinamento DB2