Académique Documents
Professionnel Documents
Culture Documents
DBMS RELACIONAL..............................................................................................................................3
DB2 é um DBMS Relacional....................................................................................................................5
OBJETOS DO DB2...................................................................................................................................7
ENTIDADE RELACIONAMENTO.......................................................................................................10
RELACIONAMENTO............................................................................................................................11
LINGUAGEM SQL.................................................................................................................................17
INSTRUÇÃO SELECT.......................................................................................................................18
QUERY............................................................................................................................................21
SELECT DE TODAS AS COLUNAS............................................................................................23
CONTROLE DE LINHAS..............................................................................................................24
NULIDADE.....................................................................................................................................26
MÚTIPLAS CONDIÇÕES..............................................................................................................28
IN.....................................................................................................................................................30
PESQUISAS PARCIAIS.................................................................................................................31
MANIPULANDO TABELA RESULTANTE................................................................................33
ORDER BY.....................................................................................................................................33
SELECT DISTINCT.......................................................................................................................35
SELECT DE VALORES CALCULADOS.....................................................................................37
ORDER BY POR VALOR CALCULADO....................................................................................38
SELECT AVANÇADO...................................................................................................................40
JOIN DE TABELAS.......................................................................................................................57
INNER JOIN....................................................................................................................................62
OUTER JOIN...................................................................................................................................63
EXPRESSÕES CASE......................................................................................................................64
UNION.............................................................................................................................................65
SUBQUERY....................................................................................................................................67
MANUTENÇÃO DE DADOS - INSERT.........................................................................................72
MANUTENÇÃO DE DADOS - UPDATE........................................................................................73
MANUTENÇÃO DE DADOS - DELETE........................................................................................74
DATA DEFINITION LANGUAGE.......................................................................................................75
DDL.....................................................................................................................................................76
STORAGE GROUP.............................................................................................................................77
DATABASE........................................................................................................................................78
TABLESPACE....................................................................................................................................79
TABLE.................................................................................................................................................81
ÍNDICE................................................................................................................................................83
VIEW...................................................................................................................................................84
DROP.......................................................................................................................................................85
SQL ESTÁTICO vs. SQL DINÂMICO..................................................................................................86
COMMIT / ROLLBACK........................................................................................................................91
BIND........................................................................................................................................................92
SEGURANÇA INTERNA DO DB2.......................................................................................................97
UTLITÁRIOS DO DB2...........................................................................................................................99
SYSIBM.SYSUTILX........................................................................................................................100
LOAD.................................................................................................................................................101
LOAD – JCL..................................................................................................................................102
FASES DO LOAD.........................................................................................................................105
CHECK DATA..................................................................................................................................109
FASES DO CHECK DATA..........................................................................................................110
CHECK INDEX.................................................................................................................................112
FASES DO CHECK INDEX.........................................................................................................112
REORG..............................................................................................................................................113
FASES DO REORG......................................................................................................................113
COPY.................................................................................................................................................116
MERGECOPY...................................................................................................................................117
RECOVERY......................................................................................................................................118
QUIESCE...........................................................................................................................................120
REPORT............................................................................................................................................120
INDEX RECOVERY........................................................................................................................121
RECOVERY PENDING...................................................................................................................122
MODIFY............................................................................................................................................123
1 #59585
DB2 - CONCEITOS E UTILIZAÇÃO 19/11/98
DIAGNOSE.......................................................................................................................................123
STOSPACE........................................................................................................................................123
RUNSTATS.......................................................................................................................................124
REPAIR.............................................................................................................................................124
DSNTIAUL........................................................................................................................................125
COMANDOS DB2............................................................................................................................126
2 #59585
DBMS RELACIONAL
Notas:
• Operadores de Tabelas
Deve ter operadores que conseguem manipular dados em tabelas
Colunas
Notas :
DPROP
IMS DM DB2
DXT
Notas:
DB2 pode ser acessado através do IMS, CICS, TSO e jobs BATCH
simultaneamente.
DATA BASE
Tablespace1
Indice1 Tabela1
Tablespace2
Indice2 Tabela2
View X
Notas:
• DATABASE
Conjunto de tabelas, índices e tablespaces agrupados sob um critério
administrativo.
• TABLE (Tabelas)
Conjunto de linhas com as mesmas colunas. Representam uma entidade
de um modelo entidade-relacionamento.
• TABLESPACE
Conjunto de datasets VSAM LDS (Linear Data Sets) que contem de
uma ou mais tabelas. Suas paginas podem ser de 4K ou 32K. Existem
três tipos de tablespaces:
• SIMPLES
As páginas de seus data sets podem conter dados de uma ou
mais tabelas.
• SEGMENTADO
É dividido em segmentos que são constituído de 4 a 64 páginas e
sempre múltiplos de 4. Cada segmento só pode conter dados de
uma tabela.
• PARTICIONADO
Recomendado para tabelas gigantes. Pode ser dividido em até 64
partições. Cada partição pode ter no máximo 4Gbytes. Requer um
índice CLUSTER que serve de filtro para determinar a
distribuição das linhas entre as partições.
• ÍNDICE
Utilizado para agilizar a leitura de dados ou para garantir a unicidade
dos dados.
Existem três tipos de índices:
• UNIQUE
Força a unicidade dos dados através dos valores de uma coluna
escolhida como chave primaria.
OBJETOS DO B2 (Continuação)
• CLUSTER
A seqüência física das linhas procura obedecer a seqüência das
entradas do índice. Existem utilitários que reorganizam um
tablespace através do índice CLUSTER de suas tabelas.
• NORMAL
• VIEW
É uma tabela lógica que é um subconjunto de uma ou mais tabelas. Sua
utilização m nada difere com a de uma tabela. Conforme o caso uma
View pode ser somente para leitura
• STORAGE GROUP
É um conjunto de volumes(discos) onde estarão os tablespaces e
índices. Os discos devem ser do mesmo device type.
A utilização do Storage Group nos poupa ca codificação do AMS de
VSAM para definir os data sets de um tablespace.
Os discos de um Storage Group não precisam ser dedicados ao DB2.
• SYNONYM (Sinônimo)
É um nome alternativo (Apelido) para uma tabela ou uma VIEW. Uma
vez criado, a sua utilização é restrita a um AUTH-ID e válido a nível
de um subsistema DB2.
• ALIAS
É um nome alternativo(Apelido) para uma tabela ou VIEW. Um alias é
de uso compartilhado ao contrario do SYNONYM. É utilizado mais
como apelido para uma tabela remota e é válido a nível de um
subsistema DB2.
ENTIDADE RELACIONAMENTO
Modelo
E R DB2
Notas:
Chave Chave
Primária Estrangeira
Operador
Relacional
Z13 Reserva
A00 Vendas
Notas:
1 PARA MUITOS
DEPTO
DeptoCod DeptoNome
Chave
Primária Z13Reserva
A00 Vendas
: :
EMPREGADO
Chave
419 Maria A00
Estrangeira
003 Carlos Z13
087 Paulo Z13
: : :
TIPOS DE RELACIONAMENTO
Notas:
EMPREGADO EMP-PROJ
Matr Nome Mat Cod Chave Primária
419 Maria 003 A2 PROJETO
003 Carlos 087 A2
087 Paulo : : Pcod PNome
419 A2 A2 Projeto 2.000
: : QD Qualidade
419 QD
TABELA DE ASSOCIAÇÃO
Notas:
Nada impede que uma tabela de associação tenha colunas que não sejam
chaves estrangeiras.
INTEGRIDADE DE REFERENCIA
EMPR DEPT
(Dependet) (Parent)
Integridade
Referencial
Notas:
Uma linha de uma Parent Table é chamada Parent Row ou linha Mãe se
existir pelo menos uma linha na tabela dependente com chave
estrangeira correspondente à sua chave primária.
SQL
STRUCTURED
QUERY
LANGUAGE
Notas:
• DML
Data Manipulation Language, utilizado para fazer pesquisas e
atualizações nas tabelas DB2.
• DDL
Data Definition Language, utilizado para definir, alterar e
eliminar objetos DB2.
• CONTROL
Utilizado para administrar a segurança dos recursos DB2.
INSTRUÇÃO SELECT
• Não é procedural
• Conceito da teoria os conjuntos
• Fácil
Notas:
1. Zere o contador
2. Abra o arquivo
3. Leia um registro
4. Verifique se satisfaz o critério de pesquisa
5. Incremente o contador
6. etc.
A B
◊ INTERSECÇÃO A∩B
A B
◊ DIFERENÇA A-B
◊ PRODUTO A X B = { (x, y) : x ∈ A e y ∈ B}
CARTESIANO
TABELAS USADAS NOS EXEMPLOS
x.staff
Sequência obrigatória:
Notas:
Uma instrução SELECT pode ser escrita em formato livre desde que as
cláusulas estejam obedecendo à sequência obrigatória, como descrito
abaixo:
♦ EXEMPLO
Resultado:
DEPTNOME DEPTCOD
MATRIZ 10
CAMPINAS 15
RIO 20
MINAS 38
: :
SELECT DE TODAS AS COLUNAS
Resultado:
WHERE
Resultado:
= Igual
<> or ¬= Diferente
> Maior
>= Maior ou Igual
< Menor
<= Menor ou Igual
¬= Não Igual
¬> Não Maior
¬< Não Menor
Resultado:
Resultado:
Resultado:
Resultado:
Resultados:
Não equivale a:
WHERE CARGO = ‘VENDAS’ AND (COMIS > 1200 OR ANOS > 10)
Resultados:
BETWEEN
Equivale a
Resultado:
NOME CARGO ANOS
SOUZA GER 10
LU GER 10
LEA GER 9
WILSON VENDAS 9
PINHO GER 10
EXEMPLOS:
Exemplo:
... WHERE coluna LIKE ‘100+%%’ ESCAPE ‘+’
Notas:
Neste exemplo, quaisquer ocorrência do ‘+’ que não sejam ‘++’, ‘+%’ ou ‘+_’
provoca erro.
NEGAÇÃO
Exclui: ANOS de 9 a 11
USER
Registro Especial
SELECT *
FROM SYSIBM.SYSTABLES
WHERE OWNER = USER
MANIPULANDO TABELA RESULTANTE
ORDER BY
Resultado:
Notas:
Resultado:
NOME CARGO ANOS
GAFNEY ATEND 5
PINHO GER 10
VIEIRA VENDAS 7
DAVIS VENDAS 5
Resultado:
Múltiplas colunas
EXEMPLO:
DEPT CARGO
15 ATEND
20 ATEND
38 ATEND
. .
. .
10 GER
15 GER
20 GER
. .
. .
. .
15 VENDAS
20 VENDAS
. .
. .
. .
SELECT DE VALORES CALCULADOS
+ SOMA * MULTIPLICAÇÃO
- SUBTRAÇÃO / DIVISÃO
Resultado:
ID SALARIO COMIS TOTAL
10 18357.50 - -
20 18171.25 612.45 18783.70
80 13504.60 128.20 13632.80
190 14252.75 126.50 14379.25
Resultado:
NOME TOTAL
OLIVEIRA 20094.15
GRAHAM 21200.30
ORDER BY POR VALOR CALCULADO
Exemplo 1:
Resultado:
NOME TOTAL
GRAHAM 21200.30
OLIVEIRA 20094.15
Exemplo 2:
Resultado:
JONES,JOHN P.
MARQUES,FRANCO X.
. . .
SELECT AVANÇADO
FUNÇÕES DE COLUNA
♦ Dados numéricos
♦ SUM Total dos valores de uma coluna
♦ AVG Média dos valores de uma coluna
Notas:
Exemplo:
Resultado:
Notas:
Resultado:
8 16 19604.190625
Resultado:
513.31 12319.45
LITERAIS
Resultado:
Notas:
Resultado:
DEPT TOTSAL TOTCOM
15 41269.53 1468,70
20 45928.60 867.15
38 59778.80 1913.30
: : :
Notas:
Resultado:
DEPT TOTSAL TOTCOM
20 45928.60 867.15
. . .
15 41269.53 1468.70
. . .
38 59778.80 1913.30
Notas:
Podemos fazer GROUP BY sobre múltiplas colunas. Isto faz com que sejam
formados subgrupos dentro de grupos.
SELECT . . . FROM . . .
WHERE . . .
GROUP BY . . . FILTROS
HAVING . . .
DEPT TOTSAL
10 83463.45
15 61929.33
20 64286.10
38 77285.55
42 58369.05
: :
DEPT TOTSAL
10 83463.45
38 77285.55
: :
EXEMPLOS DE HAVING(Continuação)
Notas:
FUNÇÕES ESCALARES
• Funções STRING
• Funções de conversão
• Funções DATE/TIME
Notas:
Resultado:
DEPTNOME NOMEPARC
MATRIZ MATR
CAMPINAS CAMP
RIO RIO
MINAS MINA
BAHIA BAHI
. .
Resultado:
DEPTCOD DIVISÃO
15 SUDESTE
20 SUDESTE
38 SUDESTE
Notas:
Resultado:
NOME TAMNOME CARGO TAMCAR
SANTANA 7 GER 6
ORSINI 6 VENDAS 6
GONZALES 8 VENDAS 6
. . . .
Notas:
Resultado:
ID COMIS
10 - 0.00
20 612.45 612.45
30 - 0.00
. . .
Notas:
17506.75
17506.7 17506
Notas:
DURACAO DATE/TIME
♦ DURAÇÃO SIMPLES
♦ Duração Rotulada
♦ Somando/Subtraindo duração
DATACOL1 + 3 MONTHS Resulta em Data
TEMPCOL1 - 30 MINUTES - 20 SECONDS Resulta em tempo
TSTCOL + 2 DAYS - 3 HOURS
TMSTCOL + 50000 MICROSECONDS
Tabela DT
Resultado:
PROJCOD DATAINI DATAFIM
AX001 31.01.1991 31.01.2005
AX002 28.02.1989 30.06.1988
AX003 01.02.1988 01.12.1986
Resultado:
PROJCOD aaaammdd hhmmss
AX001 00150200 153000
AX002 00000602 000000
AX003 00000000 074159
FUNÇÕES ESCALARES DATE/TIME
Resultado:
HR_ISO HR_USA
15.30.00 03:30 PM
Resultado:
DIA MÊS ANO
31 1 1990
FUNÇÕES ESCALARES DATE/TIME(Continuação)
Resultado:
DATAS NU_DIAS
00150228 5538
aaaammdd (n.º dias)
• DATE, TIME
• CURRENT DATE
Data de hoje
• CURRENT TIME
Horário do momento.
• CURRENT TIMESTAMP
Mesmo domínio
ID NOME DEPT
10 SANTANA 20
20 ORSINI 20
30 DANTAS 38
40 O’BRIEN 38
50 SOUZA 15
60 SUZUKI 38 DEPTCOD DEPTNOME GERENTE
70 ALMEIDA 15 10 MATRIZ 160
80 JAMES 20 15 CAMPINAS 50
90 KOONITZ 42 20 RIO 10
100 PLOTZ 42 38 MINAS 30
. . . 42 BAHIA 100
51 RECIFE 140
Resultado:
DEPTNOME NOME
RIO SANTANA
MINAS DANTAS
CAMPINAS SOUZA
. .
A1 A2 A3 R1 R2 B1 B2 B3
A A X X
B A Y Y
C B X
B Y
C X
C Y
JOIN COM MAIS DE DUAS TABELAS
Resultado:
ID NOME DEPT DEPTNOME CODPEDIDO
20 ORSINI 20 RIO 3456
20 ORSINI 20 RIO 6667
20 ORSINI 20 RIO 3580
20 ORSINI 20 RIO 7010
40 O’BRIEN 38 MINAS 4567
. . . . .
♦ QUALIFICADORES
SOLUÇÃO:
♦ Qualificador correlacionado
Notas:
Aqui neste exemplo temos um caso onde duas colunas de tabelas distintas
tem o mesmo nome.
A solução para distingui-las é qualificar o nome da coluna com o nome da
tabela.
Outra técnica é a utilização do qualificador correlacionado onde
atribuímos um rótulo à tabela.
No nosso caso exemplo a tabela x.org foi rotulada como “Z”. Assim a
coluna Z.CODIGO é uma referência à coluna x.org.CODIGO.
Esta rotulação não é permanente e vale somente durante a execução da
instrução SELECT que faz uso da mesma.
JOIN DE UMA TABELA COM ELA MESMA
CONCEITUALMENTE:
Solução:
Resultado:
NOME SALARIO NOME SALARIO
OLIVEIRA 19456.50 SANTANA 18357.50
. . . .
. . . .
INNER JOIN
Resultado:
DEPTNOME NOME
RIO SANTANA
MINAS DANTAS
CAMPINAS SOUZA
. .
Nota:
TABELAS EXEMPLOS:
EMPL DEPTO
EMPNO NOME DEPTNOME CODEMP
10 HAAS SPIFFY COMPUTER 10
150 ADAMSON DEVELOPMENT -
20 THOMPSON SOFTWARE 100
250 SMITH ADMINISTRATION 700
100 SPENSER BRANCH OFFICE -
70 PILASKI
140 NATZ
OUTER JOIN
Resultados:
RIGHT OUTER JOIN LEFT OUTER JOIN
NOME DEPTNOME NOME DEPTNOME
HAAS SPIFFY COMPUTER HAAS SPIFFY COMPUTER
- DEVELOPMENT ADAMSON -
SPENSER SOFTWARE THOMPSON -
PULASKI ADMINISTRATION SMITH -
- BRANCH OFFICE SPENSER SOFTWARE
PULASKI ADMINISTRATION
NATZ -
EXPRESSÕES CASE
Resultado:
PARTNO DESCRIPT COLOR SIZE QTY
12-234 SWEATER BLUE SMALL 18
12-235 SWEATER RED MEDIUM 22
14-276 JACKET GREEN DESCONHECIDO 9
UNION
Resultado
Notas:
Resultado:
CARGO SALARIO
VENDAS 21420.0000
. .
. .
VENDAS 17144.4660
ATEND 16918.2000
VENDAS 16832.8866
Exemplo de SUBQUERY.
Considerações SUBQUERY:
1. Pode ser usada no WHERE ou no HAVING
2. Pode ser encadeado
3. A escolha do operador do SELECT externo depende da quantidade de
linhas do SUBQUERY.
4. Deve estar a direita do operador na condição de seleção.
5. Deve ser colocado entre parênteses.
6. O SUBQUERY deve selecionar apenas um coluna.
7. O SUBQUERY pode retornar uma ou mais linhas e isto acaba
determinando o operador a ser usado na condição de procurar.
8. Não pode conter UNION, UNIN ALL ou ORDER BY.
9. SUBQUERY conhecido como SUBSELECT.
SUBQUERY DE UMA LINHA
Listar os funcionários com salário superior à média da companhia
Resultado:
NOME SALARIO
SANTANA 18357.50
ORSINI 18171.25
Resultado:
NOME SALARIO
MOLINARI 22959.20
SUBQUERY COM VÁRIAS LINHAS: ALL
Resultado:
NOME SALARIO
FRAYE 21150.00
GRAHAM 21000.00
JONES 21234.00
MOLINARE 22959.20
Lista classificada dos funcionários com salário maior que a média salarial
de qualquer departamento.
Resultado:
NOME SALARIO
DANIELS 19260.25
DAVIS 15454.50
EDWARDS 17844.00
IN
Resultado:
DEPT
66 16880.175000000
51 16235.200000000
84 15443.000000000
20 15309.530000000
SUBQUERY CORRELACIONADA
Notas:
OU
INSERT INTO PROJ
(DEPT, PCODIGO, PNOME, RESP, DATAINI)
VALUES(‘B01’, ‘MA2114’, ‘ ‘, ‘ ‘, CURRENT DATE)
Resultado:
PCODIGO PNOME DEPT RESP EQUIPE DATAINI DATAFIM
........... .............. ....... ........ ............. ................. ................
OP2011 SUPORTE E21 320 001.00 25.12.1998 01.02.1999
OP2012 APLICACAO E21 330 001.00 25.12.1998 01.02.1999
OP2013 DB/DC E21 340 001.00 25.12.1998 01.02.1999
MA2114 B01 ? 26.12.1998 ?
TESTPROJ
PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIM
Resultado
PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIM
PL2100 ...... B01 20 001.00 01.01.1987 15.09.1987
OP1010 OPERAÇÃO E11 90 005.00 01.01.1986 01.05.1988
OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988
OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988
OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988
OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
MANUTENÇÃO DE DADOS - UPDATE
Update de colunas
Antes:
PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIM
PL2100 ...... B01 20 001.00 01.01.1987 15.09.1987
OP1010 OPERAÇÃO E11 90 005.00 01.01.1986 01.05.1988
OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988
OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988
OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988
OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
UPDATE TESTPROJ
SET EQUIPE = EQUIPE*2, DATAFIM=NULL,
DATAINI=’02.01.1999’
WHERE DEPT = ‘B01’
Depois:
PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIM
PL2100 ...... B01 20 002.00 02.01.1999 ?
OP1010 OPERAÇÃO E11 90 005.00 01.01.1986 01.05.1988
OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988
OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988
OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988
OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
♦ Um subconjunto de linhas
UPDATE PESSOAL
SET SALARIO = SALARIO + 300
WHERE CARGO = ‘ATEND’
♦ Todas as linhas:
UPDATE PESSOAL
SET ANOS = ANOS + 1
MANUTENÇÃO DE DADOS - DELETE
Antes:
PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIM
PL2100 ...... B01 20 002.00 02.01.1999 ?
OP1010 OPERAÇÃO E11 90 005.00 01.01.1986 01.05.1988
OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988
OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988
OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988
OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
Depois:
PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIM
OP1010 OPERAÇÃO E11 90 005.00 01.01.1986 01.05.1988
OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988
OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988
OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988
OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
Depois:
PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIM
DDL
Exemplos:
Privilégio de CREATEDBA
Privilégio de CREATEDBC
Autoridade de SYSADM ou SYSCTRL
Parâmetros
Uma página DB2 não é totalmente utilizada para os dados pois existe um
espaço ocupado para informação de controle.
• PRIMARY KEY
• Especifica a chave primária da tabela, sendo que a chave
pode ser composta de até 64 colunas. O comprimento de uma
chave primária não pode exceder 254 bytes. Apenas uma chave
primária é permitida por tabela.
• FOREIGN KEY
• Especifica a chave estrangeira da tabela. A definição de uma
chave estrangeira deve ser igual tamanho e tipo de dados. A
palavra chave REFERENCES identifica a tabela mãe (Parent
table). A Palavra chave ON DELETE especifica a regra de
deleção.
ÍNDICE
Parâmetros:
SYNONYM E ALIAS
♦ ESTÁTICO
.....................................................
..................................................... Instrução SQL Completa
Exec SQL Fixo
Delete from Dept
End-Exec.
..................................................... Estratégia de
acesso ..................................................... pré-estabelecida.
.....................................................
♦ DINÂMICO
.....................................................
Var . Instrução SQL fornecida
durante a execução.
.....................................................
Exec SQL Estratégia de acesso
Execute Immediate : Var pré-estabelecida.
End-Exec
.....................................................
Delete from Dept
Notas:
Cada linguagem tem seu delimitador próprio para isolar as instruções SQL.
O delimitador que indica o início de uma instrução SQL é comum á todas
as linguagens.
VARIÁVEL HOST
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.
A variável HOST deve ser compatível com a coluna quanto ao seu data
type e ao seu tamanho.
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
EXEC SQL
SELECT MATR, SOBRENOME
INTO :MATR, :SNOME
FROM EMPR
WHERE CARGO = :CARGO
END-EXEC
PROCESSAMENTO DE MÚLTIPLAS LINHAS
SELECT OPEN
MATR SOBRENOME
30 SILVA
290 SANTOS
300 ALMEIDA
FETCH
MATR SOBRENOME
30 SILVA
290 SANTOS
300 ALMEIDA
FETCH
MATR SOBRENOME
30 SILVA
290 SANTOS
300 ALMEIDA
SELECT COM FETCH
♦ Definição de um CURSOR
EXEC SQL
DECALRE CUR001 CURSOR FOR
SELECT MATR, SOBRENOME
FROM EMPR
WHERE DEPT = :DEPT
END-EXEC
EXEC SQL
FETCH CUR001 INTO :MATR, :SNOM
END-EXEC
• 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
BIND
Preparação de Programa
Código Fonte
SQL
Biblioteca de
Include
PRECOMPILAÇÃO
DBRM
Código Fonte Biblioteca de
Modificado Usuário
Catálogo DB2
Autorização
Módulo Objeto
DBRM
Linkedição
Diretório
Plano/Package
Módulo de Carga
Notas:
O precompilador pode ser executado com o DB2 fora. Mas sua função é
gerar a partir de fonte dois data set’s selados com um Timestamp. Os
data set’s gerados são:
• Fonte Modificada
• fonte é copiado para este data set com modificações. As
instruções SQL são transformadas em comentários e os CALLs para
o DB2 são inseridos logo a seguir.
• Eventualmente códigos de definição de variáveis HOST são
copiados a partir de uma biblioteca de INCLUDE (DCLGEN – book
das tabelas)
• Índices utilizados
• Estratégia de Locking
• Estratégia de execução do SQL
• E outros
• BIND ADD
Utilizado para criar um novo Plano/Package
• BIND REPLACE
Utilizado quando a própria instrução SQL foi alterada e queremos
refazer o Plano/Package existente.
• REBIND
Utilizado quando o SQL permanece inalterado mas queremos
refletir uma modificação ocorrida no ambiente tais como
criação/eliminação de índices ou atualizações das estatística do
Catálogo.
BIND
OTIMIZADOR
PLANO
DBRM PACKAGE
TABELAS SELECT
VIEW UPDATE [Lista de colunas]
INSERT
PLANOS BIND
PACKAGES EXECUTE
STOGROUP
BUFFERPOOL USE
TABLESPACE
SYSADM
DB2 RECOVER
TRACE, etc..
DBADM
DATABASE CREATETS
LOAD, etc..
SEGURANÇA INTERNA DO DB2
Recursos DB2
Podemos proteger:
• OBJETOS
• Tabela, View
• PLANOS/PACKAGES
• Programas, QMF, SPUFI
• COMANDOS DB2
• -Bind, -Display
• UTILITÁRIS DB2
• Load, Recover
• RECURSOS DO SISTEMA
• Buffer, Storage Group
ATRIBUIÇÃO DE AUTORIDADE
Instrução SQL
Privilégio
GRANT Sobre TO AUTH-ID
+ Recurso + +
Privilégio
REVOKE Sobre FROM AUTH-ID
+ Recurso + +
• ONLINE
1. LOAD Carga de arquivo sequencial para uma
tabela.
2. CHECK INDEX Checa a consistência entre o Índex e os
Dados.
3. CHECK DATA Checa a integridade entre a Chave
Primária e a Chave estrangeira.
4. REORG Reorganiza um Tablespace, Partição de
um Tablespace ou Índex.
5. RUNSTATS Atualiza informações do catálogo sobre
os Tablespaces e Indexes.
6. STOSPACE Atualiza informações sobre a utilização
em Disco do Storage Group.
7. COPY Copia um Tablespace para um dataset
Sequencial
8. MERGECOPY Utilizado para juntar um ImageCopy FULL
com outro Incremental.
9. RECOVER Recuperação de um Tablespace, Partição
ou Recuperação de Índex.
10. QUIESCE Estabelece um ponto de sincronismo de
uma lista de tablespaces.
11. MODIFY Manutenção no catálogo DB2.
12. REPORT Listas informações de Recovery para
Tablespaces.
13. REPAIR Função de reparo físico em Disco.
• OFFLINE
• SERVICE AIDS
SYSIBM.SYSUTILX
Identificador
Único
• Checagem Integridade
Notas:
Definição da Tabela:
LOAD – JCL
Load Logging
Quando o volume de carga é grande, deve ser usar LOG NO, pois isto evita
uma trabalho do DB2 para registrar cada registro na LOG, e
consequentemente a LOG poderá ficar mais tempo em DISCO para um
possível RECOVERY.
• 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
LOAD RESUME NO
REPLACE
LOAD RESUME NO
(Cond. Code = 8)
TABLESPACE
LOAD
LOAD RESUME NO
Usada somente quando a tabela estiver vazia, caso haja algum
registro na tabela ocorrerá abend com Return-Code 8.
Integridade Referencial
Saída
FASES DO LOAD Tabela
Syserr
Sysmap
Sysut1 Sortout
SORT
Sortout Sysut1
Sysut1 BUILD Syserr
Indexes
Sysut1 Saída
Syserr IDEXVAL
Tabelas
FASES DO LOAD
Sysut1 Sysut1
Sortout Saída
ENFORCES
Tabelas
Parent Sortout
Tables Syserr
Dados entrada
(SYSREC)
Sortout Sysdisc
DISCARD
Syserr
Sysmap
RELOAD
Esta fase faz a carga do sequencial para a Tabela, Armazena as
chaves dos índices e chave estrangeira não indexados (Se ENFORCE
CONSTRAINTS) na SYSUT1.
SORT
Sorteia o registros da SYSUT1 pelo Chave do índices, e Chaves
estrangeiras seguem a chave indexadas.
BUILD
Constrói os Índice do SORTOUT e adiciona informações de erros na
SYSERR, e informações na SYSUT1 caso não ocorra erros.
INDEXVAL
Das informações recolhidas dos SYSERR/SYSUT1 são removidas as
ocorrências da tabelas.
FASES DO LOAD
ENFORCE
De acordo com o SORTOUT, e o relacionamento definido para a
tabela, esta fase faz a checagem para a violação da RI. A Checagem
envolves a tabela mãe onde se verifica a chave estrangeira carregada.
Todas as ocorrências sem um ”PAI” serão removidos da tabela, e
incluída na SYSDISC.
REPORT
Listas um relatório de sumário contendo os erros.
Recomendações:
//DSNUPROC. SYSIN DD *
CHECK DATA
TABLESPACE PRD.EMPRESA
TABLESPACE PRD.DEPTO
SCOPE
PENDING ou ALL
FOR EXCEPTION
IN PRD.EMPRESA USE prd.EmpresaX
IN PRD.DEPTO USE prd.DeptoX
DELETE
YES ou NÃO
EXCEPTIN n
SCANTAB
SYSUT1 SORTOUT
SORT
REPORTCK
SYSERR Relatório de Sumário
FASES DO CHECK DATA
1. SCANTAB
Esta fase extrai as chaves estrangeiras necessárias e grava no
SYSUT1
2. SORT
Sorteia a entradas contidas no SYSUT1 pelo nome da constraints e o
valor da chave estrangeira.
3. CHECKDAT
Esta fase produz um erro para cada chave estrangeira não encontrada.
4. REPORTCK
Se DELETE YES especificado, este fase deleta as ocorrências, e copia
para a tabela de Exceção. Produz também um Relatório de sumarização
para cada tabela.
5. UTILTERM
Esta fase termina o processo.
CHECK INDEX
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
Sysut1
Relatório
Sumário
CHECKINDEX
Tabelas
REORG
• Fase de RELOAD
carrega os dados de volta a tabela, respeitando os FREE PAGE,
PCTFREE, etc.
• FASE de SORT
Sorteia as chaves dos índices contidas no SYSUT1, gravando no
SORTOUT.
• Fase de BUILD
Reconstroí os Índices com a saída do SORT.
FASES DO REORG
Table
space UNLOAD
Sysut1
Sysut1 Sortout
SORT
Indexes
Sortout BUILD
REORG
UNLOAD CONTINUE
RESTART
UNLOAD PAUSE
STOP
Edit/Field Field/Edit
1. Unload Continue
Todas as fases serão concluídas em uma execução
2. Unload Pause
O Utilitário é parado após o Unload do Tablespace ou Índices.
O Utilitário deve ser reestartdo para completar
O Edit and Field são invocados duranto o Unload e Reload Fases.
3. Unload Only
Após a fase de Unload é terminado o Utilid
A saída pode ser usada como entrada do utilitário LOAD.
REORG
Exemplos de SYSIN:
//DSNUPROC.SYSIND DD *
REORG TABLESPACE PRD.EMPRESA UNLOAD CONTINUE LOG NO
REORG TABLESPACE PRD.EMPRESA UNLOAD PAUSE LOG NO
REORG TABLESPACE PRD.EMPRESA UNLOAD ONLY
REORG TABLESPACE PRD.EMPRESA PART 3
REORG INDEX PRD.ÍNDICE1
COPY
SPACE
MAP
PAGE
DATA
PAGE
MERGECOPY
SYSIN:
MERGECOPY TABLESPACE PRD.EMPRESA NEWCOPY NO
Incremental
MERGECOPY
SYSIN:
MERGECOPY TABLESPACE PRD.EMPRESA NEWCOPY YES
TABLESPACE
RECOVER TABLESPACE CURXDB01.EMPRESA
TABLESPACE CURXDB01.DEPTO
DATASET
RECOVER TABLESPACE CURXDB01.EMPRESA DSNUM 3
TABLESPACE CURXDB01.DEPTO DSNUM 2
1. Inicialização
2. Alocação Dinâmica se não existir apontamento no statements DD
3. Define os datasets do Tablespaces.
4. Image Copy Merge e Restaura
5. Aplica a log.
Índices e Tablespace DB2 podem ser copiados por este utilitário não DB2.
IMAGECOPY
22:00 EMPRESA FULL YES
RUN PROGRAM
22:20 XYZ
PONTOS DE RECOVERY
REPORT
Index1
UNLOAD
Sysut1
BUILD
Arquivo de Trabalho
SORT
Index2
Tablespace
Sysut1
Exemplos de SYSIN:
RECOVER INDEX(PRD.INDICE1, PRD.INDICE2)
RECOVER INDEX (ALL) TABLESPACE PRDXDB01.EMPRESA
RECOVER INDEX(PRD.INDICE1 PART 2)
RECOVERY PENDING
Exemplo:
DIAGNOSE
Ajuda no diagnóstico de problemas de utilitários.
Normalmente sua utilização é a pedido do SUPORTE 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.
RUNSTATS
REPAIR
Repara dado do usuário, índices, catálogo, Space Map, etc.
REPAIR deve ser usado com extrema cautela.
DSNTIAUL
Exemplo do JCL:
• -DIS UTIL(*)
Mostra todos os UTILID com seus respectivos STATUS
• -TERM UTIL(IMAGCCP)
Termina o UTILID IMAGCCP
• -DIS THREAD(*)
Mostra todas as threads conectado ao DB2.