Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
19/11/98
DBMS RELACIONAL............................................................................................................................. 3 DB2 um DBMS Relacional ................................................................................................................... 5 OBJETOS DO DB2.................................................................................................................................. 7 ENTIDADE RELACIONAMENTO ...................................................................................................... 10 RELACIONAMENTO ........................................................................................................................... 11 LINGUAGEM SQL................................................................................................................................ 17 INSTRUO SELECT ...................................................................................................................... 18 QUERY .......................................................................................................................................... 21 SELECT DE TODAS AS COLUNAS ........................................................................................... 23 CONTROLE DE LINHAS ............................................................................................................. 24 NULIDADE.................................................................................................................................... 26 MTIPLAS CONDIES ............................................................................................................ 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 AVANADO .................................................................................................................. 40 JOIN DE TABELAS ...................................................................................................................... 57 INNER JOIN .................................................................................................................................. 62 OUTER JOIN ................................................................................................................................. 63 EXPRESSES CASE .................................................................................................................... 64 UNION ........................................................................................................................................... 65 SUBQUERY................................................................................................................................... 67 MANUTENO DE DADOS - INSERT ...................................................................................... 72 MANUTENO DE DADOS - UPDATE .................................................................................... 73 MANUTENO 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 ESTTICO vs. SQL DINMICO ................................................................................................. 86 COMMIT / ROLLBACK ....................................................................................................................... 91 BIND ..................................................................................................................................................... 92 SEGURANA INTERNA DO DB2 ...................................................................................................... 97 UTLITRIOS 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
#59585
19/11/98
REPORT ........................................................................................................................................... 120 INDEX RECOVERY ....................................................................................................................... 121 RECOVERY PENDING .................................................................................................................. 122 MODIFY .......................................................................................................................................... 123 DIAGNOSE ...................................................................................................................................... 123 STOSPACE ...................................................................................................................................... 123 RUNSTATS ..................................................................................................................................... 124 REPAIR ............................................................................................................................................ 124 DSNTIAUL ...................................................................................................................................... 125 COMANDOS DB2 ........................................................................................................................... 126
#59585
19/11/98
QUANDO UM DBMS PODE SER CONSIDERADO RELACIONAL ?? 1. 2. 3. 4. Notas: DBMS - Significa DATA BASE MANAGEMENT SYSTEM, OU SISTEMA GERENCIADOR DE BANCO DE DADOS (SGBD). Um DBMS Relacional exige: Estrutura de Dados Tabular Os dados devem ser colocados em tabelas Operadores de Tabelas Deve ter operadores que conseguem manipular dados em tabelas Uniformidade e Integridade dos Dados Possui Mecanismos que mantm a integridade dos dados que so adicionados ou modificados. O DBMS deve tambm ter mecanismo capazes de forar uma uniformizao dos dados que so nela armazenados. Por exemplo, podemos forar o armazenamento dos dados sempre o formato numrico. Independncia dos Dados. Lgica das aplicaes no devem se preocupar com a estrutura de armazenamento e a teoria de acesso aos dados. Independncia dos Dados Estrutura Tabular Operadores de Tabelas Uniformidade e Integridade dos Dados.
#59585
19/11/98
Salrio
Linhas
Colunas Notas : Todos os dados e relacionamentos entre dados so representados por valores de campo. Pointers fsicos no so utilizados. Cada ocorrncia da tabela chamada de linha. Os atributos so chamados de colunas. As Tabelas DB2 so definidas e manipuladas usando-se a linguagem SQL. Todas as Tabelas so referenciadas pelo seu nome.
#59585
19/11/98
Integridade e Segurana de Dados Recuperao e Reinicio Integrados Definio Dinmica Operao Contnua
Modelo de Dados Relacional - Os dados vistos como Tabelas - Projeto mais fcil
Linguagem SQL
#59585
19/11/98
IMS TM
CICS
Qmf/Spffi
BATCH
Notas: DB2 pode ser acessado atravs do IMS, CICS, TSO e jobs BATCH simultaneamente. Dados que estiverem em IMS/DM (Antigo IMS/DB) podem ser transferidos para o DB2 atravs do DPROP (Data Propagador) ou o DXT (Data Extract).
#59585
19/11/98
Storage Group A
Storage Group B
#59585
19/11/98
DATABASE Conjunto de tabelas, ndices e tablespaces agrupados sob um critrio 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 trs tipos de tablespaces: SIMPLES As pginas de seus data sets podem conter dados de uma ou mais tabelas. SEGMENTADO dividido em segmentos que so constitudo de 4 a 64 pginas e sempre mltiplos de 4. Cada segmento s pode conter dados de uma tabela. PARTICIONADO Recomendado para tabelas gigantes. Pode ser dividido em at 64 parties. Cada partio pode ter no mximo 4Gbytes. Requer um ndice CLUSTER que serve de filtro para determinar a distribuio das linhas entre as parties. NDICE Utilizado para agilizar a leitura de dados ou para garantir a unicidade dos dados. Existem trs tipos de ndices: UNIQUE Fora a unicidade dos dados atravs dos valores de uma coluna escolhida como chave primaria.
#59585
19/11/98
CLUSTER A seqncia fsica das linhas procura obedecer a seqncia das entradas do ndice. Existem utilitrios que reorganizam um tablespace atravs do ndice CLUSTER de suas tabelas. NORMAL
VIEW uma tabela lgica que um subconjunto de uma ou mais tabelas. Sua utilizao 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 estaro os tablespaces e ndices. Os discos devem ser do mesmo device type. A utilizao do Storage Group nos poupa ca codificao do AMS de VSAM para definir os data sets de um tablespace. Os discos de um Storage Group no precisam ser dedicados ao DB2. SYNONYM (Sinnimo) um nome alternativo (Apelido) para uma tabela ou uma VIEW. Uma vez criado, a sua utilizao restrita a um AUTH-ID e vlido a nvel 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 vlido a nvel de um subsistema DB2.
#59585
19/11/98
Modelo E R
DB2
Notas: Uma vez construdo o modelo entidade relacionamento, passamos fase de implementao em DB2. Basicamente temos uma tabela para cada entidade do modelo. Existem casos (relacionamento m:m) em que precisaremos trabalhar com tabelas adicionais. Para cada atributo de uma entidade temos uma coluna na tabela correspondente. Uma coluna tem algumas caractersticas tais como tipo de dado, para definir se o contedo numrico ou alfanumrico. A distribuio de tabelas entre os tablespace tambm deve seguir alguns critrios tais como tamanho das tabelas, afinidade entre as tabelas, etc.
10 #59585
19/11/98
DEPT
Notas: Para mapearmos um relacionamento entre duas entidades de um modelo relacional precisamos conhecer o conceito de chaves. Chave primria: Identifica uma ocorrncia de uma entidade (Tabela) Chave estrangeira: Identifica uma associao entre as ocorrncias de duas tabelas. Como o valor representado chave primria na outra entidade, a chamamos de chave Estrangeira. Conceito de chave primria e chave estrangeira esto implementados no DB2, mas a suas utilizao no obrigatria. A chave estrangeira deve pertencer ao mesmo domnio da chave primria a qual esta associada. Ex.: No poderamos associar a coluna NOME de EMPR com a coluna DeptoCod da DEPT. A associao lgica entre as ocorrncias das entidades feita atravs das chaves primrias e estrangeiras que sero argumento de um operador relacional.
#59585
11
19/11/98
1 PARA MUITOS
Colocar a chave estrangeira aqui
M:1
Chave Primria
DeptoCod
DeptoNome
EMPREGADO Matr 419 003 087 : Nome Maria Carlos Paulo : Dept A00 Z13 Z13 : Chave Estrangeira
12 #59585
19/11/98
Em um relacionamento do tipo um para muitos, qualquer ocorrncia de uma entidade pode estar associada vrias ocorrncias da outra entidade, enquanto qualquer ocorrncia desta outra deve estar associada apenas uma ocorrncia da outra. Neste caso devemos colocar a chave estrangeira na tabela em que cada ocorrncia s enxerga uma ocorrncia da tabela oposta. Caso contrrio deveramos colocar vrias chaves estrangeiras na tabela oposta. No nosso exemplo, se um determinado departamento tiver 30 empregados, a tabela DEPT deveria ter no mnimo 30 chaves estrangeiras! Podemos tambm imaginar uma situao onde um departamento da companhia resolve triplicar o nmero de empregados.
#59585
13
19/11/98
EMP-PROJ Cod A2 A2 : A2 : QD
Chave Primria
TABELA DE ASSOCIAO Notas: Em um relacionamento do tipo muitos para muitos, qualquer ocorrncia de ambas as entidades pode estar associada vrias ocorrncias da entidade oposta. Neste caso, ao invs de se criar vrias chaves estrangeiras, criamos uma tabela de associao que contm pelo menos duas chaves estrangeiras apontando para as chaves primrias das tabelas associadas. Nada impede que uma tabela de associao tenha colunas que no sejam chaves estrangeiras.
14 #59585
19/11/98
EMPR
(Dependet)
DEPT
(Parent)
Integridade Referencial
Notas: A Integridade de referncia garante que qualquer valor apontado pela chave estrangeira tenha um valor correspondente na chave primria qual est associada. A Integridade de Referncia implementado no DB2 via DDL (Instrues de definio de objetos da linguagem SQL). No DB2 a Integridade de Referncia obedece s seguintes regras: Uma chave primria tem valor nico e no nulo Uma chave estrangeira nula ou tem valor correspondente na chave primria. Tanto na insero como na atualizao de linhas, o DB2 fora a observao destas regras.
#59585
15
19/11/98
Todas as tabelas associadas entre si via regra de Integridade de Referncia formam um conjunto chamado de ESTRUTURA REFERENCIAL ou REFERENTIAL STRUCTURE. Uma tabela com chave primria definida chamada de Parent Table ou tabela Me. Uma table com chave estrangeira definida chamada de Dependent Table ou tabela Dependente. Uma linha de uma Parent Table chamada Parent Row ou linha Me se existir pelo menos uma linha na tabela dependente com chave estrangeira correspondente sua chave primria. Uma linha de uma Dependent Table chamada de Dependent Row ou linha Dependente se existir uma linha Me com valor de chave primria correspondente da sua chave estrangeira. Em outras palavras a chave estrangeira no deve ter valor nulo para ser uma linha dependente. Na eliminao de uma linha da tabela me, pode ocorrer situaes conforme a regra de deleo estabelecida pela chave estrangeira. CASCADE : Regra onde todas as linhas dependentes so eliminadas juntamente com a me. SET NULL : Regra onde todas as chaves estrangeiras das linhas dependentes so atualizadas com valor nulo aps a eliminao da me. RESTRICT : Regra onde a eliminao da linha me impedida. Neste caso somente as linhas que no so mes podem ser eliminadas.
16 #59585
19/11/98
LINGUAGEM SQL
DML
DDL
CONTROL
Notas: A Linguagem SQL pode ser separada em trs grupos: DML Data Manipulation Language, utilizado para fazer pesquisas e atualizaes nas tabelas DB2. DDL Data Definition Language, utilizado para definir, alterar e eliminar objetos DB2. CONTROL Utilizado para administrar a segurana dos recursos DB2.
#59585
17
19/11/98
A instruo SELECT no procedural. Em outras palavras no precisamos fornecer todos os procedimentos necessrios para fazer uma pesquisa tais como: 1. 2. 3. 4. 5. 6. Zere o contador Abra o arquivo Leia um registro Verifique se satisfaz o critrio de pesquisa Incremente o contador etc.
Com a instruo SELECT basta dizer: 1. QUERO OS DADOS QUE SATISFAZEM A CONDIO X. SELECT trabalha com conjuntos e permite a execuo de operadores elementares que nos so familiares. Quem j no ouviu falar dos operadores unio e interseco? Com uma instruo SQL podemos implementar os seguintes operadores: A B UNIO AUB A INTERSECO A DIFERENA B A-B B AB
PRODUTO CARTESIANO
A X B
= { (x, y) : x A e y B}
18 #59585
19/11/98
ID NOME DEPT CARGO ANOS SALARIO COMIS 10 SANTANA 20 GER 7 18357.50 20 ORSINI 20 VENDAS 8 18171.25 612.45 30 DANTAS 38 GER 5 17506.75 40 OBRIEN 38 VENDAS 6 18006.00 846.55 50 SOUZA 15 GER 10 20659.80 60 SUZUKI 38 VENDAS 16808.30 650.25 70 ALMEIDA 15 VENDAS 7 16502.83 1152.00 80 JAMES 20 ATEND 13504.60 128.20 90 KOONITZ 42 VENDAS 6 18001.75 1386.70 100 PLOTZ 42 GER 7 18352.80 110 NGAN 15 ATEND 5 12508.20 206.60 120 NAUGHTON 38 ATEND 12954.75 180.00 130 YAMAGUCHI 42 ATEND 6 10505.90 75.60 140 FRAYE 51 GER 6 21150.00 150 OLIVEIRA 51 VENDAS 6 19456.50 637.50 160 MOLINARI 10 GER 7 22959,20 170 KERMISCH 15 ATEND 4 12258.50 110.10 180 ABRAHAMS 38 ATEND 3 12009.75 236.50 190 SNEIDER 20 ATEND 8 14252.75 126.50 200 SCOUTTEN 42 ATEND 11508.60 84.20 210 LU 10 GER 10 20010.00 220 SMITH 51 VENDAS 7 17654.50 922.80 230 LUNDQUIST 51 ATEND 3 13369.80 189.65 240 DANIELS 10 GER 5 19260.25 250 WHEELER 51 ATEND 6 14460.00 513.30 260 JONES 10 GER 12 21234.00 270 LEA 66 GER 9 18555.50 280 WILSON 66 VENDAS 9 18674.50 811.50 290 PINHO 84 GER 10 19818.00 300 DAVIS 84 VENDAS 5 15454.50 806.10 310 GRAHAM 66 VENDAS 13 21000.00 200.30 320 GONZALES 66 VENDAS 4 16858.20 844.00 330 BURKE 66 ATEND 1 10988.00 55.50 340 VIEIRA 84 VENDAS 7 17844.00 1285.00 350 GAFNEY 84 ATEND 5 13030.50 188.00 TABELAS USADAS NOS EXEMPLOS (Continuao)
#59585
19
19/11/98
x.org DEPTCOD 10 15 20 38 42 51 66 84 DEPTNOME MATRIZ CAMPINAS RIO MINAS BAHIA RECIFE RIO GRANDE PARAN GERENTE 160 50 10 30 100 140 270 290 DIVISO CENTRO SUDESTE SUDESTE SUDESTE NORDESTE NORDESTE SUL SUL LOCAL SO PAULO CAMPINAS RIO DE JANEIRO B. HORIZONTE SALVADOR RECIFE PORTO ALEGRE CURITIBA
20 #59585
19/11/98
- Diz quais as colunas mostrar - Diz de quais tabelas - Diz quais linhas selecionar - Diz como ordenar o resultado
Notas: As clusulas de uma instruo SELECT devem ser especificadas obedecendo uma sequncia. As clusulas esto grifadas na figura e no podem ser abreviadas. No nosso exemplo estamos fazendo uma pesquisa na tabela chamada x.staff para gerar um relatrio com o nome, tempo de casa e o salrio de todos que trabalham no departamento de cdigo 38. O Resultado deve ser classificado pelo nome os funcionrios. Uma instruo SELECT pode ser escrita em formato livre desde que as clusulas estejam obedecendo sequncia obrigatria, como descrito abaixo: SELECT NOME, ANOS, SALARIO FROM x.staff WHERE DEPT = 38 ORDER BY NOME
#59585
21
19/11/98
SELECT algumas das colunas da tabela Lista as colunas desejadas na sequncia de esquerda para a direita Vrgulas separam as colunas FROM lista de tabelas Simples: EMP Qualificado: AUTHID.EMP
EXEMPLO SELECT DEPTNOME, DEPTCOD FROM x.org Resultado: DEPTNOME MATRIZ CAMPINAS RIO MINAS : DEPTCOD 10 15 20 38 :
22 #59585
19/11/98
Para selecionar todas as colunas de uma tabela na mesma sequncia em que foram definidas: SELECT * FROM x.org Resultado: DEPTCOD 10 15 20 38 : DEPTNOME MATRIZ CAMPINAS RIO MINAS : GERENTE 160 50 10 30 : DIVISO CENTRO SUDESTE SUDESTE SUDESTE : LOCAL SO PAULO CAMPINAS RIO DE JANEIRO B. HORIZONTE :
#59585
23
19/11/98
ANOS SALARIO COMIS 7 18357.50 8 18171.25 612.45 13504.60 128.20 8 14252.75 126.50
Selecionar linhas atravs de dado numrico SELECT DEPT, NOME, CARGO FROM x.staff WHERE DEPT = 20 Selecionar linhas atravs de dado alfanumrico SELECT NOME, CARGO, COMIS FROM x.staff WHERE NOME = SANTANA
24 #59585
19/11/98
SELECT MATR, COMIS FROM x.staff WHERE COMIS >= 1000 SELECT NOME, DEPT, ANOS FROM x.staff WHERE CARGO <> GER
#59585
25
19/11/98
NOT NULL WITH DEFAULT Uma coluna pode ser Not Null With Default. Aps a Verso 4 podemos atribuir um valor Default para a coluna quando mesma omitida na incluso e se no atribuirmos este valor o sistema atribui como: Zero se coluna numrica Branco se coluna definida como caracter Comprimento zero se coluna definida como caracter de tamanho varivel.
26 #59585
19/11/98
Valor no nulo como critrio de SELECT SELECT NOME, CARGO, COMIS FROM x.staff WHERE COMIS IS NOT NULL Resultado: NOME ORSINI OBRIEN SUZUKI ALMEIDA JAMES KOONITZ NGAN NAUGHTON YAMAGUCHI OLIVEIRA KERMISCH : CARGO VENDAS VENDAS VENDAS VENDAS ATEND VENDAS ATEND ATEND ATEND VENDAS ATEND : COMIS 612.45 846.55 650.25 1152.00 128.20 1386.70 206.60 180.00 75.60 637.50 110.10 :
#59585
27
19/11/98
Para ter qualquer uma satisfeitas: OR WHERE CARGO VENDAS OR SALARIO < 17000 Resultado: NOME ORSINI OBRIEN SUZUKI ALMEIDA JAMES : CARGO VENDAS VENDAS VENDAS VENDAS ATEND : SALARIO 18171.25 18006.00 16808.30 16502.83 13504.60 :
28 #59585
19/11/98
No equivale a: WHERE CARGO = VENDAS AND (COMIS > 1200 OR ANOS > 10)
Resultados: NOME KOONITZ GRAHAM VIEIRA CARGO VENDAS VENDAS VENDAS ANOS COMIS 6 1386.70 13 200.30 7 1285.00
#59585
29
19/11/98
Para selecionar um intervalo diferente de valores SELECT NOME, CARGO. ANOS FROM x.staff WHERE ANOS NOT BETWEEN 9 AND 11
30 #59585
19/11/98
Inclui:
WHERE NOME LIKE %M%N% Inclui: WHERE NOME LIKE _ _ WHERE NOME LIKE _R% Inclui: Inclui:
O operadores ESCAPE permite que seja utilizado outro caracter no lugar do %. Exemplo: ... WHERE coluna LIKE 100+%% ESCAPE + Notas: No exemplo estamos procurando strings que comeam por 100%. Primeiro % interpretado como um caracter comum pois precedido pelo caracter + que foi definido atravs do operador ESCAPE. Segundo % interpretado como um conjunto de caracteres quaisquer pois no precedido por nenhum caracter de ESCAPE. Neste exemplo, quaisquer ocorrncia do + que no sejam ++, +% ou +_ provoca erro.
#59585
31
19/11/98
USER Registro Especial Authorization ID do tempo de execuo Comprimento fixo de 8 bytes til para query dependente de executor SELECT * FROM SYSIBM.SYSTABLES WHERE OWNER = USER
32 #59585
19/11/98
ORDER BY
Para classificar numa sequncia especifica: Lista classificada do pessoal do depto 84 SELECT NOME, CARGO, ANOS FROM x.staff WHERE DEPT = 84 ORDER BY NOME Resultado: NOME DAVIS GAFNEY PINHO VIEIRA CARGO VENDAS ATEND GER VENDAS ANOS 5 5 10 7
Notas: Colunas classificadas devem ser referenciadas pelo SELECT Nulos so considerados como valor mais alto. Podemos especificar colunas para o ORDER BY fornecendo um nmero que indica a posio da mesma coluna na clusula SELECT. O ORDER BY o nico que permite isto. A clusulas ORDER BY classifica uma tabela resultante. Logo deve ser SEMPRE a nica e a ltima a aparecer numa instruo SELECT.
#59585
33
19/11/98
Para classificar pelas coluna(s) em ordem ASCendente (default) ou DESCendente. SELECT NOME, CARGO, ANOS FROM x.staff WHERE DEPT = 84 ORDER BY CARGO, ANOS DESC Resultado: NOME GAFNEY PINHO VIEIRA DAVIS CARGO ATEND GER VENDAS VENDAS ANOS 5 10 7 5
ORDER BY ANOS DESC, CARGO Resultado: NOME PINHO VIEIRA GAFNEY DAVIS CARGO GER VENDAS ATEND VENDAS ANOS 10 7 5 5
34 #59585
19/11/98
Para eliminar linhas duplicadas: SELECT DISTINCT DEPT FROM x.staff DEPT 20 15 20 38 .
Mltiplas colunas SELECT DISTINCT DEPT, CARGO FROM x.staff DEPT CARGO 10 GER 15 ATEND 15 GER 15 VENDAS 20 ATEND 20 GER 20 VENDAS 38 ATEND : :
#59585
35
19/11/98
A Palavra chave DISTINCT deve aparecer logo depois do SELECT. Classificao ocorre pelas colunas da esquerda para a direita. ORDER BY pode ser usada para controlar a classificao.
EXEMPLO: SELECT DISTINCT DEPT, CARGO FROM x.staff ORDER BY CARGO DEPT 15 20 38 . . 10 15 20 . . . 15 20 . . . CARGO ATEND ATEND ATEND . . GER GER GER . . . VENDAS VENDAS . . .
36 #59585
19/11/98
Ganho total de cada pessoa do DEPT 20 SELECT ID, SALARIO, COMIS, SALARIO + COMIS AS TOTAL FROM x.staff WHERE DEPT = 20 Resultado: ID 10 20 80 190 SALARIO 18357.50 18171.25 13504.60 14252.75 COMIS 612.45 128.20 126.50 TOTAL 18783.70 13632.80 14379.25
Pessoas cujo salrio mais comisso excede R$ 20.000 SELECT NOME, SALARIO + COMIS AS TOTAL FROM x.staff WHERE SALARIO + COMIS > 20000 Resultado: NOME OLIVEIRA GRAHAM TOTAL 20094.15 21200.30
#59585
37
19/11/98
38 #59585
19/11/98
TABELAX ( colunas varchar : SNOM e NOME ) SNOM JONES MARQUES . NOME JOHN FRANCO . MID P X .
#59585
39
19/11/98
Notas: Informaes detalhadas no podem ser mostradas. Por exemplo, se for pedida a mdia salarial por departamento, os valores da coluna NOME no podem ser mostrados. Nulos so ignorados nos clculos.
40 #59585
19/11/98
Exemplo: SELECT SUM(SALARIO), AVG(SALARIO), MIN(COMIS), MAX(COMIS) FROM x.staff WHERE DEPT = 66 Resultado: 86076.20 17215.24 55.50 844.00
Notas: Geram um nico valor a partir de um conjunto de valores de uma nica coluna. O resultado no contm detalhes de linhas individuais. Podem ser pedidas mais de um funo para a mesma coluna, conforme o exemplo. Nulos so excludos. Preciso (parte inteira, casa decimal) deriva da coluna. Para a funo AVG de uma coluna DECIMAL(p,s) o resultado ter preciso. Expresses do seguinte tipo tambm podem ser argumento de uma funo de coluna. Exemplo: AVG(SALARIO + COMIS)
#59585
41
19/11/98
Nmero de linhas que satisfazem a condio WHERE Nmero de valores diferentes na coluna Nulos no so contados.
COUNT(DISTINCT coluna)
Contar as pessoas cujo salrio exceda $ 18.000 e contar os seus respectivos departamentos. Mostre a mdia salarial. SELECT COUNT(DISTINCT DEPT), COUNT(*), AVG(SALARIO) FROM x.staff WHERE SALARIO > 18000 Resultado: 8 16 19604.190625
LITERAIS SELECT MED: AVG(COMIS), SOMA: SUM(COMIS) FROM x.staff Resultado: MED: Notas: Literais podem ser mostradas no resultado de um SELECT So Particularmente teis quando usadas com funes de coluna que no exibem cabealhos. 513.31 SOMA: 12319.45
42 #59585
19/11/98
Com o GROUP BY, a funo de coluna calcula um valor para cada AGRUPAMENTO. SELECT DEPT, SUM(SALARIO) as TOTSAL, SUM(COMIS) as TOTCOM FROM x.staff WHERE CARGO <> GER GROUP BY DEPT Resultado: DEPT 15 20 38 : TOTSAL 41269.53 45928.60 59778.80 : TOTCOM 1468,70 867.15 1913.30 :
Notas: A Funo desta clusula mostrar informaes calculadas por grupo de dados. Note que o resultado classificado. Isto porque o GROUP BY classifica a tabela numa fase intermediria para facilitar o clculo para os grupos. A classificao se d em ordem ascendente a menos que exista um ndice definido para a coluna. Neste caso a classificao no feita. A sequncia obedecer a sequncia do ndice que pode estar definida como sendo de ordem descendente.
#59585
43
19/11/98
Resultado: DEPT 20 . 15 . 38 TOTSAL 45928.60 . 41269.53 . 59778.80 TOTCOM 867.15 . 1468.70 . 1913.30
Notas: Podemos fazer GROUP BY sobre mltiplas colunas. Isto faz com que sejam formados subgrupos dentro de grupos. GROUP BY DEPT, CARGO Colunas GROUP BY no precisam ser referenciadas pelo SELECT. Mas colunas referenciadas pelo SELECT que no sejam funo precisam ser agrupadas pelo GROUP BY. Isto um erro muito frequente. Resultado contm uma linha sumrio para cada grupo. Todos os valores nulos so considerados como um grupo.
44 #59585
19/11/98
FILTROS
WHERE HAVING
SELECT DEPT, SUM(SALARIO) AS TOTSAL FROM x.staff GROUP BY DEPT DEPT 10 15 20 38 42 : TOTSAL 83463.45 61929.33 64286.10 77285.55 58369.05 :
SELECT DEPT, SUM(SALARIO) AS TOTSAL FROM x.staff GROUP BY DEPT HAVING SUM(SALARIO) > 65000 DEPT 10 38 : TOTSAL 83463.45 77285.55 :
#59585
45
19/11/98
Mdia salarial por departamento. Considerar apenas os no-gerentes dos departamentos com mais de 3 pessoas sem cargo gerencial. SELECT DEPT, AVG(SALARIO) AS MEDIASAL FROM x.staff WHERE CARGO <> GER HAVING COUNT(*) > 3 Mdia salarial por departamento em ordem decrescente de mdia. Considerar apenas os no-gerentes dos departamentos compostos por pessoas com experincia mnima de 5 anos.
SELECT DEPT, AVG(SALARIO) AS MEDIASAL FROM x.staff WHERE CARGO <> GER GROUP BY DEPT HAVING MIN(ANOS) >= 5 ORDER BY 2 DESC
Notas: Primeiro exemplo mostra que o SELECT e o HAVING podem usar funes diferentes. O Segundo exemplo ilustra que a tabela resultante pode ser classificada.
46 #59585
19/11/98
HAVING pode especificar: Funo de colunas sobre qualquer coluna contida numa tabela especificada na FROM.
FUNES ESCALARES
Transforma um nico valor em outro valor. Funes STRING Funes de converso Funes DATE/TIME
Notas: Ao contrrio das Funes de colunas que transformam um conjunto de valores de uma coluna num nico valor, as funes Escalares operam somente sobre um nico valor. Funes escalares podem ser embutidas uma dentro da outra. Exemplo: SUBSTR(SUBSTR(...)...) Funes de colunas podem ser argumento de uma funo escalar. Exemplo: MAX(SUBSTR(...))
#59585
47
19/11/98
SELECT DEPTNOME, SUBSTR(DEPTNOME,1,4) as NOMEPARC FROM x.org Resultado: DEPTNOME MATRIZ CAMPINAS RIO MINAS BAHIA . NOMEPARC MATR CAMP RIO MINA BAHI .
Notas: Se o Comprimento no for especificado, a funo pega todo o resto. Se a posio do incio ultrapassar o final do string teremos erro. Se o incio + comprimento ultrapassar o final do string teremos erro. Substring de nulo nulo.
48 #59585
19/11/98
Resultado: NOME SANTANA ORSINI GONZALES . TAMNOME CARGO 7 GER 6 VENDAS 8 VENDAS . . TAMCAR 6 6 6 .
Notas: Fornece o tamanho de uma coluna do tipo caracter. Se o argumento nulo, o resultado tambm ser nulo.
#59585
49
19/11/98
Notas: Dada uma lista de argumentos, esta funo faz a varredura da esquerda para a direita at encontrar o primeiro valor no nulo. Todos os argumentos devem ter data types comparveis (todos numricos ou todos caracteres). Se todos argumentos forem nulos, o resultado ser nulo.
50 #59585
19/11/98
Converte um tipo de representao em outro. DECIMAL, FLOAT, INTEGER DIGITS HEX Nmero - Nmero Nmero - Alfa Hexadecimal - Alfa
SELECT DECIMAL(SAL,9,1), INTEGER(SAL) FROM EMP WHERE ID = 55 Se coluna SAL (DEC (7,2)): 17506.75
17506.7
17506
Notas: DECIMAL, FLOAT, INTEGER: Converte dados numricos DIGITS: Representao alfanumrica de um valor numrico HEX: Representao hexadecimal de um argumento. Cada digito hexadecimal representada por 2 caracteres do string resultante.
#59585
51
19/11/98
DATE, TIME, TIMESTAMP armazenados como decimal compactado sem sinal Data Types DATE TIME TIMESTAMP Formato Interno aaaammdd hhmmss aaaammddhhmmssnnnnnn
Programas lidam s com FORMATO EXTERNO: string de caracteres Formato ISO USA EUR JIS Formato TIME hh.mm.ss hh.mm AM/PM hh.mm.ss hh:mm:ss Tamanho 8 bytes 8 bytes 8 bytes 8 bytes Formato Date aaaa-mm-dd mm/dd/aaaa dd.mm.aaaa aaaa.mm.dd Tamanho 10 bytes 10 bytes 10 bytes 10 bytes
52 #59585
19/11/98
Durao Rotulada Nmero n seguida da palavra chave: YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, MICROSECONDS Somando/Subtraindo durao DATACOL1 + 3 MONTHS Resulta em Data TEMPCOL1 - 30 MINUTES - 20 SECONDS Resulta em tempo TSTCOL + 2 DAYS - 3 HOURS TMSTCOL + 50000 MICROSECONDS Subtraindo datas e tempos DATACOL1 - DATACOL2 DATACOL1 - 25.12.1998 TEMPCOL1 - TEMPCOL2 TEMPCOL1 - 11.30.00
#59585
53
19/11/98
Tabela DT PROJCOD AX001 AX002 AX003 DATAINI DATAFIM HRINI HRFIM 31.01.1990 31.03.2005 00:00:00 15:30:00 29.02.1988 31.08.1988 00:00:00 00:00:00 01.02.1987 01.02.1987 16:00:00 23:41:59
Resultado: PROJCOD AX001 AX002 AX003 DATAINI DATAFIM 31.01.1991 31.01.2005 28.02.1989 30.06.1988 01.02.1988 01.12.1986
Resultado: PROJCOD AX001 AX002 AX003 aaaammdd 00150200 00000602 00000000 hhmmss 153000 000000 074159
54 #59585
19/11/98
DAY, MONTH, YEAR HOURS, MINUTE, SECOND MICROSECOND Extrai parte de uma data, horrio ou timestamp Resulta num inteiro binrio. SELECT DAY(DATAINI) AS DIA, MONTH(DATAINI) AS MS, YEAR(DATAINI) AS ANO FROM DT WHERE YEAR(DATAINI) > 1988
#59585
55
19/11/98
SELECT DATAFIM - DATAIN AS DATAS, DAYS(DATAFIM) DAYS(DATAIN) AS NU_DIAS FROM DT WHERE PROJCOD = AX001 Resultado: DATAS 00150228 aaaammdd NU_DIAS 5538 (n. dias)
CURRENT DATE Data de hoje CURRENT TIME Horrio do momento. CURRENT TIMESTAMP Data e horrio do momento convertido para Timestamp.
56 #59585
19/11/98
ID 10 20 30 40 50 60 70 80 90 100 .
NOME SANTANA ORSINI DANTAS OBRIEN SOUZA SUZUKI ALMEIDA JAMES KOONITZ PLOTZ .
DEPT 20 20 38 38 15 38 15 20 42 42 .
DEPTCOD 10 15 20 38 42 51
Esta tcnica serve para obtermos informaes que esto espalhadas em uma ou mais tabelas. Tabelas so relacionadas via dados comuns Join implementado pelas clusulas FROM Resultado um subconjunto do produto cartesiano das tabelas.
#59585
57
19/11/98
Listar o nome dos departamentos e seus respectivos gerentes. SELECT DEPTNOME, NOME FROM x.staff, x.org WHERE GERENTE = ID
Listar o nome dos departamentos da diviso Sudeste e seus respectivos gerentes. SELECT DEPTNOME, NOME FROM x.staff, x.org WHERE DIVISAO = SUDESTE AND GERENTE = ID
ATENO:- Procure no fazer JOIN de tabelas sem a clusula WHERE. SELECT A1, B1 FROM TBLA, TBLB Produto Cartesiano.
A1 A B C
A2
A3
R1 A A B B C C
R2 X Y X Y X Y
B1 X Y
B2
B3
58 #59585
19/11/98
QUALIFICADORES COD 10 20 . NOME SANTANA ORSINI . DEPT 20 20 . CARGO GER VENDA . COD 10 . 10 DEPTNOME MATRIZ . RIO GERENTE 160 . 10
Listar o nome dos gerentes, e respectivos nome e cdigo de departamentos. SOLUO: Qualificar com o nome da tabela SELECT NOME, x.org.CODIGO, DEPTNOME FROM x.staff, x.org WHERE CARGO = GER AND DEPT = x.org.CODIGO Qualificador correlacionado
SELECT NOME, Z.CODIGO, DEPTNOME FROM x.staff, x.org Z WHERE CARGO = GER AND DEPT = Z.CODIGO
#59585
59
19/11/98
Aqui neste exemplo temos um caso onde duas colunas de tabelas distintas tem o mesmo nome. A soluo para distingui-las qualificar o nome da coluna com o nome da tabela. Outra tcnica a utilizao do qualificador correlacionado onde atribumos um rtulo tabela. No nosso caso exemplo a tabela x.org foi rotulada como Z. Assim a coluna Z.CODIGO uma referncia coluna x.org.CODIGO. Esta rotulao no permanente e vale somente durante a execuo da instruo SELECT que faz uso da mesma.
60 #59585
19/11/98
...
GER 140
...
GER 050
4. Se a condio satisfeita, colocar a linha na tabela resultante e partir para o prximo empregado.
Soluo: SELECT E.NOME, E.SALARIO, G.NOME, G.SALARIO FROM VEMPR E, VEMPR G WHERE E.GER = G.MATR AND E.SALARIO > G.SALARIO
SALARIO 18357.50 . .
#59585
61
19/11/98
Uma outra maneira de codificar o JOIN entre duas tabelas SELECT DEPTNOME, NOME FROM x.staff INNER JOIN x.org ON GERENTE = ID Resultado: DEPTNOME RIO MINAS CAMPINAS . NOME SANTANA DANTAS SOUZA .
Nota: Quando utilizamos a clusulas JOIN deve mudar o predicado WHERE por ON.
TABELAS EXEMPLOS: EMPL EMPNO NOME 10 HAAS 150 ADAMSON 20 THOMPSON 250 SMITH 100 SPENSER 70 PILASKI 140 NATZ
62 #59585
19/11/98
Seleciona todas as linhas de um INNER JOIN mais as linhas no selecionadas de ambas as tabelas. RIGHT OUTER JOIN Seleciona as linhas da tabela direita. LEFT OUTER JOIN Seleciona as linhas da tabela esquerda. FULL OUTER JOIN Seleciona as linhas de ambas as tabelas. SELECT NOME, DEPTNOME FROM EMPL RIGHT OUTER JOIN DEPTO ON EMPNO = CODEMP SELECT NOME, DEPTNOME FROM EMPL LEFT OUTER JOIN DEPTO ON EMPNO = CODEMP Resultados: RIGHT OUTER JOIN NOME DEPTNOME
HAAS SPENSER PULASKI SPIFFY COMPUTER DEVELOPMENT SOFTWARE ADMINISTRATION BRANCH OFFICE
#59585
63
19/11/98
Em tempo de retorno do resultado da Query podemos atribuir valores a serem mostrados/exibidos a determinados retornos, o exemplo abaixo nos dar uma boa noo desta facilidade. SELECT PARTNO, DESCRIPT, COLOR, CASE WHEN SIZE = S THEN Small WHEN SIZE = M THEN Medium WHEN SIZE = L THEN Large WHEN SIZE = X THEN Xlarge ELSE DESCONHECIDO END AS SIZE, QTY FROM QTY <= REORDER_PT
QTY 18 22 9
Mais Expresses CASE Usando na clusulas WHERE ... WHERE (CASE WHEN SALARY = 0 THEN NULL ELSE COMM/SALARY END) > .25 Usando em Funes de colunas ... MIN (CASE WHEN QTY > 0 THEN QTY ELSE NULL END)
64 #59585
19/11/98
Notas: Esta tcnica faz a unio de uma ou mais tabelas resultado. Query complexas podem ser feitas usando o UNION. A Quantidade de colunas deve ser a mesma em todos os SELECTs. Os data types das colunas correspondentes devem ser iguais. O tamanho das colunas correspondentes podem ser diferentes. O operador UNION une as tabelas resultantes e elimina as linhas duplicadas, que implica num sort. operador UNION ALL tambm une tabelas mas no elimina linha duplicadas. No chama o SORT portanto. Para os nomes das colunas no cabealho so adotadas as do primeiro bloco de SELECT.
#59585
65
19/11/98
A faixa de salrio dos atendentes atingiria a faixa de salrios do pessoal de vendas se fosse dado um aumento de 17% e 2% respectivamente ? SELECT CARGO, SALARIO * 1.17 AS SALARIO FROM x.staff WHERE CARGO = ATEND UNION SELECT CARGO, SALARIO * 1.02 FROM x.staff WHERE CARGO = VENDAS ORDER BY 2 DESC Resultado: CARGO VENDAS . . VENDAS ATEND VENDAS SALARIO 21420.0000 . . 17144.4660 16918.2000 16832.8866
SELECT NOME FROM X.CANDIDATOS WHERE ENDERECO LIKE %SP UNION ALL UNION SELECT SOBRENOME FROM X.ENTREVISTADOS WHERE SIT = REP Cabealho do
primeiro SELECT
Resultado: NOME JACOBS MARQUES ARANTES SILVA MARQUES JACOBS NOME ARANTES JACOBS MARQUES SILVA
66 #59585
19/11/98
um SELECT embutido dentro de um SELECT O resultado de uma subquery usado pelo SELECT EXTERNO Exemplo de SUBQUERY. Listar empregados cujo departamento esteja subordinado ao departamento A00
SNOME
DEPARTAMENTO
DCOD
DSUPER
SELECT SNOME, DEPARTAMENTO FROM EMP WHERE DEPARTAMENTO IN (SELECT DCOD FROM DEPT WHERE DSUPER = A00)
Consideraes 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 condio de seleo. 5. Deve ser colocado entre parnteses. 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 condio de procurar. 8. No pode conter UNION, UNIN ALL ou ORDER BY.
#59585
67
19/11/98
Listar os funcionrios com salrio superior mdia da companhia SELECT NOME, SALARIO FROM x.staff WHERE SALARIO > (SELECT AVG(SALARIO) FROM x.staff)
SELECT NOME, SALARIO FROM x.staff WHERE SALARIO = (SELECT MAX(SALARIO) FROM x.staff)
68 #59585
19/11/98
Lista classificada dos funcionrios com salrio superior a toda e qualquer mdia salarial departamental. Encontrar mdia salarial para cada departamento. (SELECT AVG(SALARIO) FROM x.staff GROUP BY DEPT) Compare o salrio de cada funcionrio com a lista devolvida pela SUBQUERY. SELECT NOME, SALARIO FROM x.staff WHERE SALARIO > ALL (SELECT AVG(SALARIO) FROM x.staff GROUP BY DEPT) ORDER BY NOME Resultado: NOME FRAYE GRAHAM JONES MOLINARE SALARIO 21150.00 21000.00 21234.00 22959.20
Lista classificada dos funcionrios com salrio maior que a mdia salarial de qualquer departamento. Encontrar a mdia salarial para cada departamento. Compare o salrio e cada funcionrio com a lista devolvida pela SUBQUERY. SELECT NOME, SALARIO FROM x.staff WHERE SALARIO > ANY(SELECT AVG(SALARIO) FROM x.staff GROUP BY DEPT) ORDER BY NOME Resultado: NOME DANIELS DAVIS EDWARDS SALARIO 19260.25 15454.50 17844.00
#59585
69
19/11/98
SELECT DEPT, NOME FROM x.staff WHERE ID = ANY (SELECT GERENTE FROM x.org WHERE DIVISAO = SUL) SUBQUERY Resulta numa lista de Gerentes da diviso SUL IN equivale a um srie de OR ... = sobre uma coluna =ANY pode substituir IN SELECT DEPT, NOME FROM x.staff WHERE ID IN (SELECT GERENTE FROM x.org WHERE DIVISAO = SUL)
HAVING COM SUBQUERY Liste os departamentos cuja mdia salarial seja inferior mdia da companhia. Ignore os gerentes. Mostre as mdias e ordene pelas mesmas. SELECT DEPT, AVG(SALARIO) FROM x.staff WHERE CARGO <> GER GROUP BY DEPT HAVING AVG(SALARIO) < (SELECT AVG(SALARIO) FROM x.staff WHERE CARGO <> GER) ORDER BY 2 DESC Resultado: DEPT 66 51 84 20 16880.175000000 16235.200000000 15443.000000000 15309.530000000
70 #59585
19/11/98
Listar os empregados com salrio superior mdia de seus respectivos departamento. SELECT NOME, SALARIO FROM x.staff CV WHERE SALARIO > (SELECT AVG(SALARIO) FROM x.staff WHERE DEPT = CV.DEPT) Uma SUBQUERY correlacionada executada a cada linha devolvida ao SELECT externo!
Listar os gerentes ganhando menos que $18.000 se existir pelo menos um gerentes com salrio superior $22.000.
SELECT ID, NOME, SALARIO, DEPT FROM x.staff WHERE CARGO = GER AND SALARIO < 18000 AND EXISTS(SELECT * FROM x.staff WHERE CARGO = GER AND SALARIO > 22000) ID 30 NOME MARENGHI SALARIO 17506.75 DEPT 38
Verdadeiro/Falso no SELECT interno Determina se o SELECT externo ser executado. Notas: Este um operador que tem como argumento um SELECT. Esta SUBQUERY no devolve nenhuma tabela resultante. EXISTS devolve V ou F e como faz parte de uma condio de procura, determina uma eventual execuo ou no do SELECT externo. EXISTS pode ser negado por um NOT.
#59585
71
19/11/98
INSERT INTO PROJ VALUES(MA2114, , B01, , NULL, CURRENT DATE, NULL) OU INSERT INTO PROJ (DEPT, PCODIGO, PNOME, RESP, DATAINI) VALUES(B01, MA2114, , , CURRENT DATE) Resultado:
PCODIGO ........... OP2011 OP2012 OP2013 MA2114
PROJNOME
DEPT
RESP
EQUIPE
DATAINI
DATAFIM
INSERT INTO TESTPROJ SELECT * FROM PROJ WHERE DEPT LIKE B% OR DEPT IN (E11. E21, E31) Resultado
PCOD PL2100 OP1010 OP2010 OP2011 OP2012 OP2013
72 #59585
19/11/98
UPDATE
UPDATE TESTPROJ SET EQUIPE = EQUIPE*2, DATAFIM=NULL, DATAINI=02.01.1999 WHERE DEPT = B01 Depois:
PCOD PL2100 OP1010 OP2010 OP2011 OP2012 OP2013
Um subconjunto de linhas UPDATE PESSOAL SET SALARIO = SALARIO + 300 WHERE CARGO = ATEND Todas as linhas: UPDATE PESSOAL SET ANOS = ANOS + 1
#59585
73
19/11/98
DELETE
Depois:
PCOD OP1010 OP2010 OP2011 OP2012 OP2013
PROJNOME
DEPT
RESP
EQUIPE
DATAINI
DATAFIM
74 #59585
19/11/98
DDL
#59585
75
19/11/98
A Data Definition Language(DDL) faz parte das instrues SQL e dividese em trs grupos. 1. CREATE 2. ALTER 3. DROP Definio de objetos Alterao da definio dos objetos Eliminao de objetos
A execuo de DDL permitido somente auth-ids devidamente autorizados. O Criador (auth-id) do objeto normalmente o proprietrio (OWNER) do mesmo. Mas o DB2 permite que sejam criados objetos para outros authid, isto , posso criar objetos das quais no serei o proprietrio. O proprietrio de um objeto tem todos os privilgios sobre o mesmo. A equipe de suporte (SYSADM, SYSCTRL, DBADM) ou proprietrio do objeto o responsvel pela concesso de autorizao para acesso e/ou uso dos objetos. A execuo das instrues ALTER ou DROP esto reservadas equipe de suporte ou o proprietrio dos objetos.
76 #59585
19/11/98
O nome de um STORAGE GROUP no deve ultrapassar 8 caracteres Podem ser especificados at 133 volumes do mesmo device type no parmetro VOLUMES. VCAT aponta para o catlogo ICF que qualificar os Datasets dos Tablespaces e dos Indexspaces. Exemplos: Para criao de um Storage Group CREATE STOGROUP CURXSG01 VOLUMES(PRD510) VCAT DES; COMMIT; Alterao de um Storage Group: ALTER STOGROUP CURXSG01 ADD VOLUMES(PRD512, PRD513) REMOVE VOLUMES(PRD510); COMMIT; ALTER STOGROUP CURXSG01 VCAT CUR; COMMIT;
#59585
77
19/11/98
O Database uma definio lgica, onde podemos agrupar todos os Tablespaces, Tabelas, ndices com o mesmo critrio de administrao. Autorizao necessria para Criao de um DATABASE Privilgio de CREATEDBA Privilgio de CREATEDBC Autoridade de SYSADM ou SYSCTRL
Parmetros do Create DATABASE 1. BUFFERPOOL Indica o Buffer pool default para os Tablespaces e ndices deste Database. 2. STOGROUP Indica o Stogroup default para todos os Objetos deste Database.
78 #59585
19/11/98
uma VSAM LDS, onde sero definidas as tabelas. Existem 3 tipos de Tablespaces: 1. SIMPLES As pginas de seus datasets contm dados de uma ou mais tabelas. Aqui na CEF no utilizamos este tipo de Tablespace. 2. Segmentado dividido em segmentos que variam de 4 a 64 pginas e sempre em mltiplos de 4. E cada segmento s pode conter ocorrncias de uma nica tabela, tamanho mximo deste tipo de tablespace 2Gbytes. 3. Particionado Utilizada para tabelas com grande quantidade de dados, podendo chegar at 64Gbytes, assim distribudos: At 16 Parties Cada partio com 4Gbytes de 17 a 32 Parties Cada partio com 2Gbytes de 33 a 64 Parties Cada partio com 1Gbytes
Exemplo de Criao de Tablespace SEGMENTADO. CREATE TABLESPACE CURXTS01 IN CURXDB01 USING STOGROUP CURXSG01 PRIQTY 144 SECQTY 48 ERASE NO LOCKSIZE ANY BUFFERPOOL BP0 CLOSE NO FREEPAGE 4 PCTFREE 25 SEGSIZE 8; COMMIT;
#59585
79
19/11/98
PRIQTY, SECQTY - rea de alocao em Kbytes. LOCKSIZE - Tipo de Locking, as opes so: Any - o valor default , com este valor a deciso pelo Locking fica por conta do DB2. Tablespace - Locking pelo tablespace Table - Locking pela Tabela PAGE - Locking por pgina ROW - Locking por Linha ERASE - Especifica se o espao ocupado pelo datasets devem ser preenchidos com zero quando forem eliminados (DROP). CLOSE - Especifica se o Dataset do tablespace deve ser fechado quando no esta sendo utilizado. FREEPAGE - Especifica o intervalo de pginas que devem existir entre as pginas livres quando um tablespace carregado ou reorganizado. O intervalo pode variar de 0 255. Se o tablespace segmentado, o nmero deve ser menor que o tamanho do segmento. PCTFREE - Especifica qual a frao percentual das pginas que devem ser mantidas livres quando o tablespace carregado ou reorganizado. SEGSIZE - Se especificado, determina que o tablespace ser segmentado. O tamanho de um segmento dado em quantidade de pginas, deve ser inteiro mltiplos de 4, variando de 4 64. NUMPARTS - Parmetro mutuamente exclusivo como o SEGSIZE, quando especificado indica que o Tablespace ser Particionado, acompanhado de um nmero que indica a quantidade de parties. Este nmero pode variar de 1 64. Se nem SEGSIZE e nem NUMPARTS forem especificados, o Tablespace ser Simples.
80 #59585
19/11/98
um conjunto de linhas coma as mesmas colunas. Os atributos das colunas dever ser do tipo: NOT NULL NOT NULL WITH DEFAULT valor default NULL Preenchimento obrigatrio Quando no preenchido, assume o Preenchimento opcional
Definies para colunas numricas: SMALLINT Inteiros, valor entre -32768 a 32767 INTEGER Inteiros, valor entre -2147483648 a 2147483648 DECIMAL (x,y) x=Dgitos e y=Decimais, at 31 Dgitos FLOAT Ponto Flutuante 5.4E-79 TO 7.2E+75 Smallint uma halfword (2bytes) Integer uma fullword(4bytes) Decimal armazena nmeros em decimal compactado. A faixa de valores depende da quantidade de casas decimais. Definies para colunas alfanumricas: CHAR(x) String de tamanho fixo, mximo 254 caracteres VARCHAR(x) String de tamanho varivel, onde x pode variar de 0 a 4096 caracter. Uma pgina DB2 no totalmente utilizada para os dados pois existe um espao ocupado para informao de controle. Definies para colunas DBCS: GRAPHIC(x) String de tamanho fixo, mximo 127 caracteres. VARGRAPHIC(x) String de tamanho varivel, onde x pode variar de 0 a 2048 caracteres. Double Byte Caracter so caracteres especiais como ideogramas asiticos que requerem 2 bytes para serem identificados.
#59585
81
19/11/98
CREATE TABLE SICUR.CURXTB02CONCEITOS ( MATR CHAR(9) NOT NULL, ALUNO CHAR(30) NOT NULL. FUNCAO SMALLINT NOT NULL, NOTA SMALLINT , CLASSIFICACAO SMALLINT , PRIMARY KEY( MATR , ALUNO ), FOREIGN KEY (FUNCAO) REFERENCES SICUR.CURXTB01FUNCAO ON DELETE CASCADE) IN CURXDB01.CURXTS01; ALTER TABLE SICUR.CURXTB02CONCEITO ADD DT_PROVA DATE ; COMMIT; PRIMARY KEY Especifica a chave primria da tabela, sendo que a chave pode ser composta de at 64 colunas. O comprimento de uma chave primria no pode exceder 254 bytes. Apenas uma chave primria permitida por tabela. FOREIGN KEY Especifica a chave estrangeira da tabela. A definio de uma chave estrangeira deve ser igual tamanho e tipo de dados. A palavra chave REFERENCES identifica a tabela me (Parent table). A Palavra chave ON DELETE especifica a regra de deleo.
82 #59585
19/11/98
CREATE [ UNIQUE ] INDEX SICUR.CURXPX02 ON SICUR.CURXTB02CONCEITO (MATR ASC, ALUNO ASC) USING STOGROUP CURXSG02 PRIQTY 48 SECQTY 48 ERASE NO BUFFERPOOL BP1 CLOSE YES FREEPAGE 4 PCTFREE 15 CLUSTER; COMMIT; ALTER INDEX CURXPX02 USING STOGROUP CURXPX02 PRIQTY 192 CLOSE YES ; COMMIT;
Parmetros: UNIQUE Palavra chave que indica que o ndice no permite duplicidade nas colunas compostas neste ndice. Indica que o dados devem estar clusterizado pelo ndice
CLUSTER
#59585
83
19/11/98
A View pode poder um subconjuto de uma ou mais tabelas. Uma view um objeto lgico e assim, seus dados no ocupam espao fsico.
CREATE VIEW SIXXX.CURXVW01JUNCAO (CODIGO, FUNCAO, ALUNO) AS SELECT CODIGO, DESC_FUNCAO, ALUNO FROM SICUR.CURXTB02CONCEITO INNER JOIN SICUR.CURXTB01FUNCAO ON CODIGO = FUNCAO; COMMIT;
SYNONYM E ALIAS CREATE SYNONYM FUNCAO FOR SICUR.CURXTB01FUNCAO; COMMIT; CREATE ALIAS CONCEITO FROM SICUR.CURXTB02CONCEITO; COMMIT; Diferena entre e o SYNONYM e ALIAS: SYNONYM restrita a um AUTH-ID. ALIAS de uso compartilhado a todos.
84 #59585
19/11/98
Usado para eliminar qualquer objeto criado a partir de um comando CREATE no DB2.
DROP DATABASE CURXDB01 Quando se elimina um Database, todos os objetos vinculados ele tambm so eliminados, tais como TABLESPACE, TABLE, INDEX, VIEW, ALIAS e SYNONYM. DROP TABLESPACE CURXDB01.CURXTS01 A sua eliminao acarreta a eliminao de Table, Index, View, Alias, Synonym e Relacionamentos vinculadas a qualquer objeto deste Tablespace, deleta fisicamente do Disco. DROP TABLE SICUR.CURXTB01FUNCAO A eliminao vem acompanhada da eliminao de Index, View, Alias, Synonym e Relacionamento. DROP INDEX SICUR.CURXPX01 Elimina o ndice, inclusive o INDEXSPACE. DROP VIEW SICUR.CURXVW01 Elimina logicamente do DB2 o apontamento dos dados para a VIEW. DROP SYNONYM/ALIAS CONCEITO Elimina Sinnimo/Alias DROP STOGROUP CURXSG01 S podemos eliminar este objeto se o mesmo no estiver mais sendo referenciado por um outro objeto.
#59585
85
19/11/98
DINMICO ..................................................... Var . ..................................................... Exec SQL Execute Immediate : Var End-Exec ..................................................... Instruo SQL fornecida durante a execuo. Estratgia de acesso pr-estabelecida.
Notas: A diferena entre o SQL esttico e o dinmico est no instante em que o plano montado. No esttico o plano montado antes da primeira execuo da instruo. No SQL dinmico a instruo parcial ou totalmente desconhecida e o DB2 no tem como determinar previamente a estratgia de acesso, validar autorizao, etc. Uma instruo onde o desconhecido apenas o valor que est sendo comparado com uma coluna na clusulas WHERE candidata a esttico. Exemplo: WHERE SALARIO = :SAL AND NOME LIKE :STR
86 #59585
19/11/98
Para podermos trabalhar com o SQL dentro de programas em linguagens tradicionais, devemos codific-lo usando delimitadores especiais. Esta tcnica conhecida como SQL embutido e assemelha-se ao COMMAND LEVEL do CICS. O SQL trabalha com tabelas e linhas. uma linguagem desenvolvida para manipular conjuntos. J as linguagens tradicionais trabalham com arquivos e registros e no conseguem reconhecer tabelas e linhas. Para simularmos um arquivo com seus registros existe o CURSOR do DB2. Assim o programa pode acessar a manipular linhas de uma tabela como se estivesse trabalhando com um arquivo comum. As colunas no so manipuladas diretamente pelas linguagens tradicionais. Para contornar isto so utilizadas as chamadas variveis HOST que Hospedam o contedo.
Instruo SQL entre delimitadores. EXEC SQL DELETE FROM DEPT END-EXEC Os compilador das linguagens tradicionais no entende instrues SQL. As instrues SQL devem ser embutidas dentro de um programa separados por delimitadores para que possam ser tratados antes de serem submetidas ao compilador. Cada linguagem tem seu delimitador prprio para isolar as instrues SQL. O delimitador que indica o incio de uma instruo SQL comum todas as linguagens.
#59585
87
19/11/98
As variveis HOST so utilizadas para permuta de valores entre a linguagem SQL e a linguagem de programao. Uma das possveis utilizaes da varivel HOST a de fornecer um valor a uma instruo AQL, tornando-a assim uma instruo genrica. A referencia varivel HOST deve ser precedida pelo caracter :. Seu uso facultativo mas recomenda-se sua utilizao para evitar possibilidade de confuso. O uso da varivel HOST opcional. Seu uso obrigatrio somente para as instrues SELECT. A varivel HOST deve ser compatvel com a coluna quanto ao seu data type e ao seu tamanho. As variveis HOST no devem ser utilizadas para referenciar nomes de tabelas ou de colunas. Exemplo de Variveis 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 EXEC SQL SELECT MATR, SOBRENOME INTO :MATR, :SNOME FROM EMPR WHERE CARGO = :CARGO END-EXEC
88 #59585
19/11/98
Se o resultado de um Select pode ter mltiplas linhas, o programa deve trabalhar com um CURSOR, pois no tem como prever o tamanho da tabela resultante. Quando o programa executa um OPEN de um CURSOR, o DB2 executa o SELECT e a tabela resultante fica presa, esperando pelo processamento. O programa deve prover variveis HOST para cada coluna do CURSOR. O programa executa a instruo SQL FETCH, para movimentar o CURSOR para o prximo registro. As variveis HOST contero os valores do registro (linha) apontado.
OPEN
FETCH
MATR SOBRENOME
30 SILVA
290 SANTOS 300 ALMEIDA
FETCH
MATR SOBRENOME 30 SILVA
290 SANTOS
300 ALMEIDA
#59585
89
19/11/98
OPEN posiciona o CURSOR antes da primeira linha da tabela resultante. FETCH avana o CURSOR uma linha para frente. No possvel fazer o FETCH voltar o CURSOR. CLOSE no CURSOR no implica em COMMIT.
90 #59585
19/11/98
COMMIT Indica trmino bem sucedido de uma unidade de trabalho Alterao dos dados sero gravadas. Todas os PAGE LOCKS sero liberados CURSOR fechado, exceto para CURSOR WITH HOLD ROLLBACK Unidade de trabalho corrente abandonado Atualizao dos dados desde o ltimo COMMIT so desfeitas Todos os PAGE LOCKS so liberados CURSOR fechado
#59585
91
19/11/98
Biblioteca de Include
PRECOMPILAO
92 #59585
19/11/98
Notas: A preparao de programa o nome que damos ao processo que torna um programa fonte em um mdulo de carga executvel. A preparao de um programa constitudo das seguintes fases: Precompilao Compilao e Linkedio BIND O precompilador pode ser executado com o DB2 fora. Mas sua funo gerar a partir de fonte dois data sets selados com um Timestamp. Os data sets gerados so: DBRM (Database Request Module) Contm todas as instrues SQL embutidas no fonte. Fonte Modificada fonte copiado para este data set com modificaes. As instrues SQL so transformadas em comentrios e os CALLs para o DB2 so inseridos logo a seguir. Eventualmente cdigos de definio de variveis HOST so copiados a partir de uma biblioteca de INCLUDE (DCLGEN book das tabelas)
O precompilador faz a checagem da sintaxe das instrues SQL e da validade das variveis HOST utilizadas. Um relatrio de execuo com eventuais mensagens de erro tambm gerado. O compilador gera o mdulo objeto a partir do fonte modificado pelo precompilador. O Timestamp copiado do fonte.
#59585
93
19/11/98
O linkage editor gera o mdulo de carga partir do mdulo da linguagem de interface do DB2. O Timestamp original copiado do mdulo Objeto. O processador de BIND gera o Plano ou Package partir do DBRM. O Timestamp copiado do DBRM. Um Plano ou Package contm a estratgia de acesso aos dados DB2 com informaes do tipo: ndices utilizados Estratgia de Locking Estratgia de execuo do SQL E outros
A fase de compilao/Linkedio e a fase de BIND so executadas separadamente e podem ser executadas em qualquer ordem.
94 #59585
19/11/98
O propsito de BIND a gerao do Plano ou de um Package. partir do DBRM e do catlogo so executados os seguintes procedimentos: Checagem das consistncias das instrues SQL com os Objetos manipulados. So checados nomes, data type das colunas, etc. Checagem da autorizao necessria para a execuo das instrues SQL. Determinao da estratgia de acesso aos Objetos da manipulao, pelo otimizador do DB2. Plano/Package armazenado no diretrio e uma cpia do DBRM carregado no Catlogo.
BIND REPLACE Utilizado quando a prpria instruo SQL foi alterada e queremos refazer o Plano/Package existente. REBIND Utilizado quando o SQL permanece inalterado mas queremos refletir uma modificao ocorrida no ambiente tais como criao/eliminao de ndices ou atualizaes das estatstica do Catlogo.
#59585
95
19/11/98
OTIMIZADOR
DBRM
PLANO PACKAGE
DBRM
CATLOGO
DIRETRIO
96 #59585
19/11/98
A segurana interna do DB2 pode ser ativada ou no durante a gerao. Quando existe uma solicitao de atividade, o DB2 verifica trs fatores: Auth-id Privilgios Recurso - Quem fez a solicitao? - O que se deseja fazer com o recurso? - Qual o Objeto de manipulao?
Estas informaes ficam armazenadas no catlogo. Auth-id representa um usurio ou um grupo de usurio e informado ao DB2 atravs do monitor de transaes. TABELAS VIEW SELECT UPDATE [Lista de colunas] INSERT
PLANOS PACKAGES
BIND EXECUTE
USE
DB2
DATABASE
#59585
97
19/11/98
GRANT
TO
AUTH-ID
REVOKE
FROM
AUTH-ID
Exemplo: GRANT SELECT ON EMPR TO PUBLIC REVOKE SELECT FROM EMPR FROM PUBLIC
98 #59585
19/11/98
Divididos em 3 grandes grupos: ONLINE 1. LOAD Carga de arquivo sequencial para uma tabela. 2. CHECK INDEX Checa a consistncia entre o ndex e os Dados. 3. CHECK DATA Checa a integridade entre a Chave Primria e a Chave estrangeira. 4. REORG Reorganiza um Tablespace, Partio de um Tablespace ou ndex. 5. RUNSTATS Atualiza informaes do catlogo sobre os Tablespaces e Indexes. 6. STOSPACE Atualiza informaes sobre a utilizao 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 Recuperao de um Tablespace, Partio ou Recuperao de ndex. 10. QUIESCE Estabelece um ponto de sincronismo de uma lista de tablespaces. 11. MODIFY Manuteno no catlogo DB2. 12. REPORT Listas informaes de Recovery para Tablespaces. 13. REPAIR Funo de reparo fsico em Disco. OFFLINE 1. CHANGE LOG INVENTORY 2. PRINT LOG MAP Atualiza log datasets no BSDS. Listas dados de Log BSDS.
#59585
99
19/11/98
Trata user data por data set Listas e formatas data set pages Estimativas de espaos a ser arquivados(DB2) L o contedo da Log e formata para display. Verifica a Integridade dos diretrios e Unload de tabelas para uma arquivo sequencial. Para emisso de SQL dinmico. Para emisso de SQL dinmico exceto SELECT.
UTILID
JOB NOME
UTILITY NOME
CHECKPOINT INFORMAO....
Identificador nico
Coluna inserida no Incio do Utility. Coluna atualizada em Pontos de Checkpoints e Parada de Utility. Coluna eliminada quando do termino do Utility.
100 #59585
19/11/98
Pode se carregar mltiplas tabelas em um mesmo Tablespace Converso de dados sero feitas. Construir ndices definidos ndice nico no permite chaves duplicadas Checagem Integridade Cada chave estrangeira deve conter uma chave primria correspondente. Pode ser inibida esta checagem.
Notas: Os dados podem ser carregado de 2 maneiras: 1. Atravs do INSERT (SQL). 2. Atravs do Utilitrio LOAD. S no sero carregadas as tabelas: Se a converso dos dados forem diferentes do formato do Tablespace Se os ndices nicos detectar violaes. Caso haja relacionamento no existir a chave primria.
#59585
101
19/11/98
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)
102 #59585
19/11/98
O default LOG YES, a vantagem de no ser necessrio fazer ImageCopy aps a carga. Mas deve ser usar com critrios: Carregar uma tabela em um Tablespace compartilhado Carga e em tabelas pequenas Carga com RESUME YES 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 possvel RECOVERY. LOG YES Cada pgina ser registrada na LOG. LOG NO Carga mais rpida Requer ImageCopy Modificao por SQL no permitida enquanto no fizer o ImageCopy SQL error code 904
#59585
103
19/11/98
LOAD RESUME NO Usada somente quando a tabela estiver vazia, caso haja algum registro na tabela ocorrer abend com Return-Code 8. LOAD RESUME YES Opo para adicionar novas ocorrncias na tabela. LOAD RESUME NO REPLACE Opo para carregar novas ocorrncias na tabela eliminando todas as ocorrncias existentes dentro da tabelas. A Variao do LOAD permite trabalhar a nvel de Partio. LOAD INTO TABLE tabelax PART x RESUME NO Carrega ocorrncias em uma partio vazia LOAD INTO TABLE tabelax PART x RESUME YES Adiciona novas ocorrncias partio. LOAD INTO TABLE tabelax PART x RESUME YES REPLACE Carrega ocorrncias em uma nica partio, eliminando as ocorrncias existente na partio.
Violao de ndice nico Quando do LOAD, se inserido duas ou mais ocorrncias com a mesma chave o DB2 descartas todas as ocorrncias deste LOAD. CHAVE ENTRADA A B C D B CARGA NA TABELA A C D B DESCARTES B
104 #59585
19/11/98
ENFORCES CONSTRAINTS o default. Verifica se existe uma chave primria para a chave estrangeira. Pode se inibido com ENFORCE NO Se encontrado Violao, a ocorrncia eliminada.
FASES DO LOAD
Dados de Entrada (SYSREC)
Sada Tabela
Sysut1
RELOAD
Syserr
Sysmap
Sysut1
SORT
Sortout
Sortout Sysut1
BUILD
Sysut1 Syserr
Indexes
Sysut1 Syserr
IDEXVAL
Sada
Tabelas
#59585
105
19/11/98
Sortout
ENFORCES
Sada
Tabelas
Parent Tables
Sortout Syserr
Sortout Syserr
DISCARD
Sysdisc
Sysmap
Sortout Syserr
REPORT
Relatrio Sumrio
106 #59585
19/11/98
RELOAD Esta fase faz a carga do sequencial para a Tabela, Armazena as chaves dos ndices e chave estrangeira no indexados (Se ENFORCE CONSTRAINTS) na SYSUT1. O DD SYSDISC conter as ocorrncias descartadas Caso ocorra algum este requer: SYSERR - Qualquer erro ser armazenado. Se SYSERR no informado, o RELOAD abend antes de qualquer carga de dados. Se descartes no requerido. Reload termina no primeiro error. Se SYSMAP necessrio (Violao de chave nica ou Violao RI), informaes da posio da ocorrncia no SYSREC.
SORT Sorteia o registros da SYSUT1 pelo Chave do ndices, e Chaves estrangeiras seguem a chave indexadas. O SORT pode ser inibido em uma das condies: No existe mais que um chave por tabela O dados carregados j esto em sequncia. Todas as chaves devem ser do mesmo tipo. BUILD Constri os ndice do SORTOUT e adiciona informaes de erros na SYSERR, e informaes na SYSUT1 caso no ocorra erros. INDEXVAL Das informaes recolhidas dos SYSERR/SYSUT1 so removidas as ocorrncias da tabelas.
#59585
107
19/11/98
ENFORCE De acordo com o SORTOUT, e o relacionamento definido para a tabela, esta fase faz a checagem para a violao da RI. A Checagem envolves a tabela me onde se verifica a chave estrangeira carregada. Todas as ocorrncias sem um PAI sero removidos da tabela, e includa na SYSDISC. REPORT Listas um relatrio de sumrio contendo os erros.
Recomendaes: Pr processamento para remover os erros. Sorteia os dados de entradas na sequncia da clusterizao. Criar todos os ndices antes de carregar os dados. Use LOG NO para evitar excessivo I/O na LOG Carregar primeiros as PARENT TABLES (Tabelas mes). Preferir sempre ENFORCE CONSTRAINTS. Usar BLKSIZE otimizado para SYSUT1, SORTOUT e SORTWWKxx
108 #59585
19/11/98
Checa todas as chaves estrangeiras de uma lista de tablespaces com os valores de chaves primrias correspondentes. Checa todas as ocorrncias dependentes, ou somente as adicionadas pelo LOAD. Opcionalmente copia ocorrncias rf para uma tabela de exceo, e elimina a ocorrncia da tabela ou no. Tirar do Status de CHECK PENDING Nenhuma violao foi detectado, ou Erros so eliminados com a opo DELETE YES.
//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 NO EXCEPTIN n
Se SCOPE ALL checa todas as chaves estrangeiras de um tablespaces. Se SCOPE PENDING checa apenas as chaves estrangeiras adicionada pelo LOAD. DELETE YES deleta todas as ocorrncias RF de um Tablespace EXCEPTIONS especifica os limite de exceo, quando excede este limite o CHECK termina.
#59585
109
19/11/98
SYSUT1
SYSUT1
SORT
SORTOUT
Dependent/Descendent Tables
Tabela Exceo
SYSERR
REPORTCK
Relatrio de Sumrio
110 #59585
19/11/98
1. SCANTAB Esta fase extrai as chaves estrangeiras necessrias 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 no encontrada. 4. REPORTCK Se DELETE YES especificado, este fase deleta as ocorrncias, e copia para a tabela de Exceo. Produz tambm um Relatrio de sumarizao para cada tabela. 5. UTILTERM Esta fase termina o processo.
#59585
111
19/11/98
O CHECK INDEX testa a consistncia entre o dados e o ndices. O Check procura a inconsistncia 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
ndices
UNLOAD
Sysut1
Sysut1
SORT
Sysut1
CHECKINDEX
Tabelas
112 #59585
19/11/98
A fase de UNLOAD dos registros de uma tabela. Descarrega as ocorrncias na sequncia do ndice de clusterizao 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 sada do SORT.
FASES DO REORG
Table space
UNLOAD
Sysut1
Sysut1
SORT
Sortout
Sortout
BUILD
Indexes
#59585
113
19/11/98
UNLOAD CONTINUE
RESTART
TERMINATE
Existem 3 opo de UNLOAD para o utilitrio REORG. 1. Unload Continue Todas as fases sero concludas em uma execuo 2. Unload Pause O Utilitrio parado aps o Unload do Tablespace ou ndices. O Utilitrio deve ser reestartdo para completar O Edit and Field so invocados duranto o Unload e Reload Fases. 3. Unload Only Aps a fase de Unload terminado o Utilid A sada pode ser usada como entrada do utilitrio LOAD.
114 #59585
19/11/98
#59585
115
19/11/98
Cria um Backup do Tablespace COPY TABLESPACE CURXDB01.CURXTS01 FULL YES SHRLEVEL REFERENCE Permite Atualizao Leitura compartilhada Se no quiser compartilhar acesso a base, emita o comando no DB2: -START DB(CURXDB01) SPACE(CURXTS01) ACCESS(UT) Assim somente utilitrios podem agir sobre os Objetos.
O Copy Full e Incremental desliga o bit. Fazer sempre Image Copy FULL aps REORG LOG NO ou LOAD LOG NO. Se mais que 15% das pginas foram alteradas, opte por COPY FULL. Especifique DISP=(MOD,CATLG) para permitir restart do utilitrio.
116 #59585
19/11/98
MERGECOPY
Incremental
MERGECOPY
Full
NEWCOPY YES insere um apontamentos no catalogo DB2 como FULL Image Copy. NEWCOPY NO atualiza os registros com Image Copy Incremental.
#59585
117
19/11/98
DATASET RECOVER
Funes do Utilitrio RECOVER 1. 2. 3. 4. 5. Inicializao Alocao Dinmica se no existir apontamento no statements DD Define os datasets do Tablespaces. Image Copy Merge e Restaura Aplica a log.
ndices e Tablespace DB2 podem ser copiados por este utilitrio no DB2. DB2 RECOVER aceita somente as seguintes entradas: Image Copy + Log Image Copy somente Logs DB2 somente
118 #59585
19/11/98
22:00
22:20
08:45
09:00
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 X005E00123456
#59585
119
19/11/98
Verifica restries para os tablespaces especificados e cria um ponto de consistncia para eles. Para cada tabespace, o Quiesce cria uma entrada na SYSCOPY com RBA vlido para a recuperao. QUIESCE TABLESPACE CURXDB01.CURXTS01 TABLESPACE CURXDB01.CURXTS02
REPORT Listas dados sobre Tablespaces. O relatrio pode Ter 2 tipos de sadas: TABLESPACESET Tablespace e tabelas que participam de Relacionamento de Integridade Relacional (RI). RECOVERY - Informaes de recuperao a partir do catlogo, diretrio e BSDS.
120 #59585
19/11/98
Arquivo de Trabalho
SORT Tablespace Sysut1
Index2
Exemplos de SYSIN: RECOVER INDEX(PRD.INDICE1, PRD.INDICE2) RECOVER INDEX (ALL) TABLESPACE PRDXDB01.EMPRESA RECOVER INDEX(PRD.INDICE1 PART 2)
#59585
121
19/11/98
Tablespace ou Index deve ser recuperado 1. RECP significa que a partio de um Index ou Tablespace esta pendente 2. PSRCP significa que a entrada de um Index no particionado esta com RECOVERY Pendente. Acesso proibido exceto para: 1. RECOVER 2. LOAD REPLACE 3. REPAIR 4. MERGE COPY -DISPLAY DB revela os status RECP/PSRCP RECP/PSRCP resetado por: 1. RECOVER tablespace ou Index 2. LOAD REPLACE 3. REPAIR com SET NORCVRPEND 4. START DB .... ACCESS(FORCE)
RECOVERY PENDING segue as seguintes condies: Condio Term Util Term Util UTILITRIO FASE Recover TS -------Recover Index BUILD RELOAD Term Util Reorg/Load SORT BUILD Point in Time Recover -------TS Recovery Tablespace OBJETOS colocado em RECP TABLESPACE ndice ainda no construdos Tablespace, Parties e ndices Todos os ndices ndice ainda no construdos Todos os ndices
122 #59585
19/11/98
Elimina Image Copy desnecessrios e log ranges do catlogo DB2, As entradas so da SYSCOPY e SYSLGRNG. Possvel acesso concorrente durante o MODIFY com exceo 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 ocorrncias da data informada para trs DELETE AGE todos ocorrncias com a quantidades de dias maior que a informadas sero eliminadas.
DIAGNOSE Ajuda no diagnstico de problemas de utilitrios. Normalmente sua utilizao a pedido do SUPORTE IBM STOSPACE Colhe informao de espao alocado para cada Storage Groups, Tablespaces e ndices relacionados. A informao registrada no catlogo DB2.
#59585
123
19/11/98
Varre um Tablespace ou ndice para atualizao no catlogo de utilizao de espao e eficincia do ndices. Esses dados so utilizados pelo otimizador do DB2. O Runstats atualizadas as tabelas: Estatstica usada pelo OTIMIZADOR 1. SYSTABLES 2. SYSTABLESPACE 3. SYSINDEXES 4. SYSCOLUMNS 5. SYSCOLDIST Outras para informaes do DBA 1. SYSTABLEPART 2. SYSINDEXPART 3. SYSCOLDISTSTAS 4. SYSCOLSTATS 5. SYSINDEXSTATS 6. SYSTABSTATS
REPAIR Repara dado do usurio, ndices, catlogo, Space Map, etc. REPAIR deve ser usado com extrema cautela.
124 #59585
19/11/98
Permite gerar um arquivo sequencial dos dados da tabelas, e um outro com as informaes de onde inicia e termina os registros, alem das informaes necessria 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 ; /*
#59585
125
19/11/98
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 Restrio -START DB2 / -STOP DB2 Inicializa e encerra o DB2 (Comandos na console OS/390) -DIS UTIL(*) Mostra todos os UTILID com seus respectivos STATUS -TERM UTIL(IMAGCCP) Termina o UTILID IMAGCCP -START DB(ABEXDB01) SPACE(*) ACCESS(RW) Libera todos Indexspace e Tablespaces para acesso de READ/WRITE -START DB(ABEXDB01) SPACE(ABEXTS12,ABEXPX12) ACCESS(UT) Starta os Tablespace ABEXTS12 e o Indexspace ABEXPX12 somente para acesso de utilitrios DB2. -DIS DB(ABEXDB01) SPACE(*) LIMIT(*) LOCKS Mostra todos os Tablespaces e Indexspaces do Database ABEXDB01 e as respectivas alocao. -DIS THREAD(*) Mostra todas as threads conectado ao DB2.
126 #59585