Buscar

Aula 07 (1)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Livro Eletrônico
Aula 07
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com
Videoaulas - Pós-Edital
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
 
 
 
 
 
 1 
31 
 
IBM DB2 - Fundamentos .................................................................................................. 2 
Instalação de servidor e cliente .......................................................................................................... 2 
Administração e configuração .......................................................................................... 7 
Gerenciando a capacidade do servidor .............................................................................................. 8 
Aumentando o tamanho da página suportada (AIX) ........................................................................ 8 
Performance e detecção de problemas em ambiente AIX................................................................. 9 
Ferramentas de detecção de problemas .......................................................................................... 10 
Objetos do SGBD ........................................................................................................... 12 
Instâncias .......................................................................................................................................... 12 
Database ........................................................................................................................................... 13 
Partições............................................................................................................................................ 14 
Buffer pools ....................................................................................................................................... 16 
Tablespaces ....................................................................................................................................... 16 
Schemas ............................................................................................................................................ 18 
Tabelas .............................................................................................................................................. 19 
Restrições (Constraints) .................................................................................................................... 21 
Índices ............................................................................................................................................... 22 
Sequências ........................................................................................................................................ 24 
Views ................................................................................................................................................. 26 
Rotinas administrativas definidas pelo sistema DB2. ...................................................... 27 
Mensagens de sistema SQL e SQLSTATE. ........................................................................ 29 
Considerações finais ...................................................................................................... 31 
Referências ........................................................................................................................................ 31 
 
 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 2 
31 
IBM DB2 - FUNDAMENTOS 
Esta aula foi construída para o concurso do Banco de Brasília - BRB. Não são 
muitos os órgãos ou entidades públicas que utilizam o DB2, o BRB e o Banco 
Central são dois deles. No Banco Central, possuímos um conjunto consistente 
e robusto de máquinas e sistemas da IBM que dão suporte ao funcionamento 
adequado do sistema de gerenciamento de banco de dados. Nesta aula, 
vamos mostrar um pouco dos conceitos associados ao IBM DB2. 
Nosso objetivo inicial é prover informações sobre o planejamento, definição, 
implementação e gerenciamento de bancos de dados DB2. Para podermos usar os sistemas de banco 
de dados precisamos começar instalando o mesmo em um servidor ou em um mainframe, neste 
caso rodando o sistema operacional z/OS. 
z/OS é um sistema operacional de 64 bits para mainframes, criado pela IBM. É o sucessor do 
OS/390, o qual, por sua vez, combinou o MVS e o UNIX System Services - uma implementação 
UNIX POSIX-aderente para mainframes, anteriormente conhecida como MVS Open Edition ou 
(OpenMVS). 
INSTALAÇÃO DE SERVIDOR E CLIENTE 
Podemos ainda usar servidores com sistemas operacionais UNIX, LINUX ou Windows. No Banco 
Central utilizamos AIX, uma versão proprietária do UNIX desenvolvida pela IBM. 
 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 3 
31 
1. Na próxima tela, ou painel, você pode decidir entre executar a instalação agora, ou salvar as 
informações de instalação em um arquivo de resposta para executar em um outro momento. Ou 
ainda, ambos. Veja na figura abaixo. A ideia do response file é tornar possível o armazenamento 
das opções de instalação para uso futuro. 
 
2. Ao clicar em Next na tela anterior, você será direcionado para outro painel no qual você deve 
definir o diretório de instalação. Nesta tela é possível ainda verificar se existe espaço em disco 
suficiente para a execução da instalação. Definido o diretório, clique em Next. 
3. A próxima tela é utilizada para definição do usuário para administração do servidor de banco de 
dados. O usuário do DB2 Administration Server (DAS) é criado na tela abaixo: 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 4 
31 
 
4. A próxima etapa é a configuração de instâncias. Para ver e mudar a configuração, você deve clicar 
em Configure. A porta TCP/IP é usada pela instância do DB2 para receber conexões externas. O 
valor da porta deve ser definido no intervalo de 1024 a 65535 e deve estar disponível para todos 
os hosts. Vejam a figura abaixo. Após configurar a instância dique em Next. 
 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 5 
31 
5. A próxima tela serve para configurar as notificações do BD2. Você pode enviar para uma lista de 
contatos remota ou local. A ideia aqui é enviar mensagens para o DBA sempre que o banco de 
dados precise de alguma atenção especial. Você precisa de um servidor SMTP para enviar essas 
notificações. Se você não definir os contatos para envio da lista de notificações, o servidor vai 
armazenar os alertas no administration notification log. 
6. A próxima tela você vai informar o contato do administrador da instância. 
 
7. O painel em questão trata da opção de especificar a segurança do sistema operacional para 
objetos DB2. Para habilitar a segurança do sistema operacional, especifique os grupos de 
administração e usuário. Veja a figura abaixo. 
 
8. A próxima tela mostra um resumo do que será instalado e gravado no arquivo de resposta. Esse 
é o momento no qual você confere se a instalação está com a configuração adequada. Ao clicar 
em Finish, você é levado para uma tela que mostra que a configuração está completa. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) ComVideoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 6 
31 
 
9. O painel de configuração completa indica que os arquivos foram copiados para seu computador 
e que a configuração do sistema está completa. Veja a figura abaixo: 
 
10. A próxima tela permite que você instale produtos adicionais, é possível também reexecutar o 
db2setup para instalar os componentes do Data Studio para administração de banco de dados. 
São dois componentes principais, o primeiro deles é um cliente baseado em eclipse que permite 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 7 
31 
administração e desenvolvimento de banco de dados. O outro é um console baseado na Web 
para monitoramento da saúde do banco de dados e gerenciamento de Jobs. 
Um passo a passo longo, mas a instalação foi concluída com sucesso. Agora podemos checar se tudo 
está funcionando de acordo com os conformes. Para isso o banco de dados SAMPLE, selecionado 
como uma das features deve ter sido instalado. Com a permissão de SYSADM você deve logar no 
sistema e inicializar o mesmo por meio do comando db2start. 
Em seguida, você deve executar o comando db2sample para criar a base de dados. Esse comando é 
um pouco demorado e não existe mensagem de finalização, quando o prompt de comando retorna 
ou reaparece, o processo foi concluído. Agora você já pode se conectar com o banco de dados 
SAMPLE e executar comandos sobre ele. Veja um exemplo de teste, e seu respectivo retorno na 
figura abaixo. Com isso finalizamos nossa instalação! ☺ 
 
Obs.1: É recomendável que você remova o banco de dados SAMPLE para liberar espaço. Digite db2 
drop database sample e o problema estará resolvido. 
Obs.2: Existem dois tipos de arquivos de licença associados aos produtos de banco de dados DB2: as 
chaves de licença básica e as chaves de licença completa (full). Estas chaves de licença são 
armazenadas em arquivos de texto simples, que são geralmente referidos como arquivos de licença 
ou certificados de titularidade da licença. Use o comando db2licm para aplicar o certificado de 
autorização de licença e para verificar a compatibilidade entre as licenças e os produtos disponíveis 
no DB2. 
ADMINISTRAÇÃO E CONFIGURAÇÃO 
Nesta parte da aula vamos analisar aspectos relacionados à configuração e administração de 
servidores DB2. Servidores de dados fornecem serviços em forma de ferramentas para um 
gerenciamento seguro e eficiente das informações. O DB2 é considerado um servidor de dados 
híbrido relacional e XML. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 8 
31 
GERENCIANDO A CAPACIDADE DO SERVIDOR 
Se a capacidade do servidor de dados não atender as suas necessidades atuais ou futuras, você pode 
expandir sua capacidade, adicionando espaço em disco e criando containers adicionais, ou 
adicionando memória. Se estas estratégias simples não adicionarem a capacidade que você precisa, 
considere a adição de processadores ou partições físicas. 
Quando você redimensionar o sistema alterando o 
ambiente, esteja ciente do impacto que tal mudança 
pode ter sobre os seus procedimentos de banco de 
dados, como carregamento de dados, backup ou 
restauração de bancos de dados. 
A adição de processadores ou partições faz-se necessária 
quando a configuração de banco de dados está utilizando 
a capacidade máxima do sistema. Se você adicionar novos 
processadores, alguns parâmetros devem ser revistos. Os 
parâmetros a seguir determinam o número de 
processadores utilizados e você deve, portanto, atualizá-
los: valor padrão (dft_degree), valor máximo para o 
paralelismo (max_querydegree), permissão de 
paralelismos intrapartição (intra_parallel). 
Se você já possui um ambiente de banco de dados particionado, você pode aumentar a performance 
por meio da adição de novos computadores e dispositivos de armazenamento. Neste caso a 
memória e os processadores não são compartilhados entre os computadores. Essa opção permite o 
balanceamento de dados e usuários entre os dispositivos. Depois de adicionar novos computadores 
e storages, você deve fazer uso do comando START DATABASE MANAGER para incluir os servidores 
de partição de banco de dados nos novos computadores. 
AUMENTANDO O TAMANHO DA PÁGINA SUPORTADA (AIX) 
Para habilitar o suporte a páginas grandes nos sistemas de banco de dados DB2 em sistemas 
operacionais AIX, você deve configurar alguns parâmetros do sistema operacional e, em seguida, 
definir a variável de registro DB2_LARGE_PAGE_MEM. Definir a variável de registro 
DB2_LARGE_PAGE_MEM também implica que a memória será fixada (pinned). 
Para fixar a memória compartilhada do banco de dados DB2 em sistemas operacionais AIX, é 
necessário configurar alguns parâmetros do sistema operacional e, em seguida, definir a variável de 
registro DB2_PINNED_BP. A vantagem de ter partes da memória fixadas é que quando você acessa 
uma página que é fixa, você pode recuperar a página, sem passar pelo algoritmo de substituição. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 9 
31 
PERFORMANCE E DETECÇÃO DE PROBLEMAS EM AMBIENTE AIX 
Performance refere-se à maneira como que um sistema de computador se comporta em resposta a 
uma carga de trabalho em particular. O desempenho é medido em termos de tempo de resposta do 
sistema, throughput, e utilização de recursos. O desempenho também é afetado por: 
• Os recursos que estão disponíveis no sistema 
• Como esses recursos são usados e compartilhados 
Em geral, você vai desejar ajustar seus sistemas para melhorar o custo benefício médio. Alguns 
objetivos podem incluir: 
• Processar cargas de trabalho maiores sem aumentar o custo de processamento. 
• Obter melhores tempos de resposta ou um throughput maior sem aumentar os custos de 
processamento. 
• Reduzir os custos de processamento sem degradar o serviço para os usuários. 
Alguns benefícios do tuning de performance, como uma eficiência maior na utilização dos recursos 
e na habilidade de incluir novos usuários ao sistema são tangíveis. Outros benefícios, como 
melhorara a satisfação do usuário por receber respostas mãos rápidas as suas consultas são 
intangíveis. Apresentamos abaixo uma lista que deve ser usada como guia no desenvolvimento da 
tarefa de tuning. 
Lembre-se da lei dos rendimentos decrescentes: Os maiores benefícios de desempenho 
geralmente vêm dos seus esforços iniciais. 
Não faça ajuste apenas por uma questão de tuning: Ajuste seu SGBD para aliviar 
restrições ou gargalos identificados. Os recursos utilizados no ajuste podem não ser a 
principal causa de problemas de desempenho. Se você usar um recurso de tuning não 
necessário no momento, ele acaba por criar um problema para uso de outros recursos no 
instante futuro. 
Considere todo o sistema: Você não pode ajustar um parâmetro ou recurso 
isoladamente. Antes de fazer um ajuste, considere como a mudança vai afetar o sistema 
como um todo. Ajuste de desempenho requer um trade-off entre os vários recursos do 
sistema. Por exemplo, você pode aumentar o tamanho do conjunto de buffer para obter 
um melhor desempenho de E/S, contudo conjuntos maiores de buffer requerem mais 
memória, o que pode degradar outros aspectos do desempenho. 
Mudar um parâmetro de cada vez: Não altere mais do que um fator ou parâmetros de 
uma só vez. Mesmo se tiver certeza de que todas as mudanças serão benéficas, você não 
terá uma maneira de avaliar a contribuição de cada mudança. 
Medir e configurar por níveis: Ajuste cada nível de seu sistemapor vez. Os níveis do 
sistema incluem: hardware, sistema operacional, servidor de aplicação e requisição, 
gerenciador de banco de dados, instruções SQL e XQuery e programas. 
Verificar a existência de problemas de hardware, bem como de software: Alguns 
problemas de desempenho podem ser corrigidos através da aplicação de uma 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 10 
31 
manutenção sobre o seu hardware, sobre o software, ou ambos. Não gaste um tempo 
excessivo monitorando e ajustando o seu sistema antes de avaliar o funcionamento do 
hardware ou software. 
Entender o problema antes de atualizar o hardware: Mesmo que pareça que o 
armazenamento adicional ou o aumento da capacidade do processador possa melhorar 
imediatamente o desempenho, gaste um tempo para entender onde estão os seus 
gargalos. Você pode gastar dinheiro em armazenamento adicional, apenas para descobrir 
que você não tem poder de processamento ou os canais para explorá-lo. 
Estabeleça processos de segurança antes de começar a sintonizar: Se os esforços de 
ajuste resultarem em uma inesperada degradação do desempenho, as alterações feitas 
devem ser revertidas antes de tentar uma abordagem alternativa. Salve as configurações 
originais para que você possa facilmente desfazer mudanças que você não deseja manter. 
Vimos alguns conceitos gerais de performance em ambientes de banco de dados DB2. Passaremos 
agora as ferramentas que vão auxiliar no processo de melhoria de desempenho. 
FERRAMENTAS DE DETECÇÃO DE PROBLEMAS 
Apresentamos abaixo algumas ferramentas que ajudam na detecção de problemas e melhoria de 
desempenho do banco de dados. 
db2cklog - Verificar seus arquivos de log garante que a qualidade dos arquivos de log que 
estão disponíveis para o caso de uma recuperação ser necessária, sendo assim a operação 
de recuperação não falha devido a um problema com um arquivo de log. A ferramenta 
db2cklog lê tanto arquivos de log individuais quanto uma série de arquivos de log 
numerados e realiza verificações sobre a validade interna dos arquivos. Os arquivos de 
log que passam pela validação sem quaisquer mensagens de erro são conhecidos como 
bons arquivos e você pode usá-los durante uma operação de recuperação de avanço. 
db2dart - O comando db2dart pode ser usado para verificar a corretude da arquitetura 
dos bancos de dados e dos objetos dentro deles. Ele também pode ser usado para exibir 
o conteúdo de arquivos de controle do banco de dados, a fim de extrair dados de tabelas 
que poderiam ser inacessíveis. 
INSPECT - O comando INSPECT verifica a integridade da arquitetura, verificando as 
páginas do banco de dados quanto a sua consistência. O comando INSPECT verifica se as 
estruturas de objetos tabela e dos espaços de tabelas são válidas. O comando INSPECT é 
semelhante ao comando db2dart na medida em que permite verificar bancos de dados, 
espaços de tabelas e tabelas. Uma diferença significativa entre os dois comandos é que o 
banco de dados precisa ser desativado antes de executar db2dart, enquanto o INSPECT 
requer uma conexão de banco de dados e pode ser executado enquanto houver 
conexões ativas simultâneas com o banco de dados. 
db2diag - O arquivo de log primário destinado ao uso por administradores de banco de 
dados e do sistema é o log de notificação de administração. Os arquivos de log db2diag 
são destinados ao uso pelo IBM Software Support para solucionar problemas. As 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 11 
31 
mensagens de log de notificação de administração também são registradas nos arquivos 
de log db2diag usando um formato de mensagem padronizado. A ferramenta db2diag 
serve para filtrar e formatar as informações presentes nos arquivos de log db2diag. 
db2greg - Você pode ver o registro global usando o comando db2greg em plataformas 
UNIX e Linux. 
db2level - O comando db2level vai ajudar a determinar o nível de versão e serviço (Build 
level e número do fix pack) da sua instância do DB2. 
db2look - Você pode usar a ferramenta db2look para extrair as instruções DDL 
necessárias para reproduzir os objetos de banco de dados de um banco para outro. A 
ferramenta também pode gerar os comandos SQL necessários para replicar as estatísticas 
do banco de dados, bem como as declarações necessárias para replicar a configuração de 
banco de dados, configuração do gerenciador de banco de dados e variáveis de registro. 
db2ls - Em sistemas operacionais Linux e UNIX, o comando db2ls lista os produtos de 
banco de dados DB2 e recursos instalados em seu sistema, incluindo a documentação 
HTML do DB2 Versão 10.1. 
db2pd - O comando db2pd é usado para solução de problemas porque ele pode retornar 
informações de forma rápida e imediata dos conjuntos de memória do DB2. Ele pode ser 
usado para várias funções como diagnosticar espera pela liberação de um bloqueio, 
monitorar o uso de memória, determinar qual aplicação está usando um espaço de 
tabela. Você pode usar o utilitário db2cmd para exibir o resultado do comando db2pd de 
forma mais legível. 
O comando db2pd -dbptnmem mostra a quantidade de memória que o servidor DB2 está 
consumindo e, a um nível elevado, que áreas do servidor estão usando essa memória. O 
exemplo a seguir mostra a saída da execução do comando db2pd -dbptnmem em uma 
máquina AIX: 
 
db2support - Quando se trata de coleta de informações sobre um problema no DB2, o 
utilitário DB2 mais importante que você precisa executar é o db2support. O comando 
automaticamente coleta todas as informações de diagnóstico do DB2 e do sistema 
disponíveis. Ele também tem uma sessão de "Pergunta e Resposta" interativa, que coloca 
questões sobre as possíveis causas do problema. 
db2val - O comando db2val garante que a sua cópia do DB2 está funcionando 
corretamente. A ferramenta verifica as funções essenciais de uma cópia do DB2, 
validando os arquivos de instalação, instâncias, criação de banco de dados, conexões ao 
banco de dados, e o estado de ambientes de banco de dados particionados. 
Apresentamos acima alguns comandos e utilitários que podem ser usados para adquirir informações 
visando a resolução de problemas ou o conhecimento sobre o estado atual do seu banco de dados 
DB2. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 12 
31 
OBJETOS DO SGBD 
Passaremos agora a uma análise dos objetos do DB2. 
INSTÂNCIAS 
Bancos de dados DB2 são criados dentro de instâncias DB2 no servidor de banco de dados. A criação 
de várias instâncias no mesmo servidor físico fornece um ambiente único de servidor de banco de 
dados para cada instância. 
Por exemplo, você pode manter um ambiente de teste e um ambiente de produção no mesmo 
computador, ou, você pode criar uma instância para cada aplicativo e, em seguida, ajustar cada 
instância, especificamente, para a aplicação que vai servir. Você pode usar o conceito de instância 
para proteger dados sensíveis, por exemplo, seu banco de dados de folha de pagamento 
armazenado em uma instância própria para que os proprietários de outras instâncias (no mesmo 
servidor) não possam ver os dados da folha de pagamento. 
O processo de instalação cria uma instância do DB2 padrão, que é definido pela variável de ambiente 
DB2INSTANCE. Esta é a instância que é utilizado para a maioria operações. No entanto, instâncias 
podem ser criadas (ou dropadas) após a instalação. 
Ao projetar as instâncias para o seu 
ambiente, note que cada instância controla 
o acesso a uma ou mais bases de dados. 
Cada bancode dados dentro de uma 
instância possui um nome único, tem o seu 
próprio conjunto de tabelas de catálogo de 
sistema (que são usadas para manter o 
controle de objetos que são criados no 
banco de dados), e tem a seu arquivo de 
configuração própria. 
Cada banco de dados também tem seu 
próprio conjunto de autorizações que 
podem ser concedidos e os privilégios que 
determinam como os usuários interagem 
com os dados e objetos de banco de dados 
armazenados nele. A figura abaixo mostra a 
relação hierárquica entre sistemas, 
instâncias e bancos de dados. 
O diretório da instância armazena todas as informações que pertencem a uma instância de banco 
de dados. A localização do diretório da instância não pode ser alterada depois de criada. O diretório 
da instância contém: 
• O arquivo de configuração do gerenciador de banco de dados 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 13 
31 
• O diretório do banco de dados do sistema 
• O diretório de nós (nodes) 
• O arquivo de configuração do nós (db2nodes.cfg) 
• Outros arquivos que contêm informações de depuração, como a exceção ou registo de 
despejo (dump) ou a pilha de chamadas para os processos do DB2. 
Em sistemas operacionais Linux e UNIX, o diretório da instância está localizado na pasta 
INSTHOME/sqllib. INSTHOME é o diretório proprietário da instância. A instância padrão pode ser 
nomeada com qualquer texto desde que esteja coerente com as regras de nomenclatura. 
O arquivo db2nodes.cfg é usado para definir os servidores de partição de banco de dados que 
participam de uma instância do DB2. O arquivo db2nodes.cfg também é usado para especificar o 
endereço IP ou nome do host de uma interconexão de alta velocidade. A tabela a seguir mostra uma 
possível configuração de partições entre os nós. 
 
É possível ter mais de uma instância em um sistema operacional Linux ou UNIX se o produto DB2 foi 
instalado com privilégios de root. Embora as instâncias sejam executadas simultaneamente, cada 
uma delas é independente. Portanto, você só pode trabalhar dentro de uma instância do 
gerenciador de banco de dados de cada vez. 
Apesar de uma instância ser criada como parte da instalação do DB2, suas necessidades de negócios 
podem exigir que você crie outras instâncias. Para adicionar uma instância você deve usar o 
comando: db2icrt instance_name. Para atualizar a configuração de instâncias root no Linux ou UNIX, 
use o comando db2iupdt. Para atualizar instâncias non-root, execute o comando de atualização DB2 
db2nrupdt. 
Após criar a instância vamos agora analisar os próximos objetos dentro da hierarquia do DB2, os 
bancos de dados. 
DATABASE 
Um banco de dados DB2 é um banco de dados relacional. Os bancos de dados armazenam todos os 
dados em tabelas que estão relacionadas entre si. Relações são estabelecidas entre as tabelas de tal 
forma que os dados são compartilhados e duplicação é minimizada. 
Um banco de dados relacional é tratado como um conjunto de tabelas e manipulado de acordo com 
o modelo relacional de dados. Ele contém um conjunto de objetos usados para armazenar, gerenciar 
e acessar dados. São exemplos de tais objetos: tabelas, views, índices, funções, triggers e packages. 
Os objetos podem ser tanto definidos pelo sistema (built-in) ou definidas pelo usuário (user-defined). 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 14 
31 
Um banco de dados relacional distribuído consiste em um conjunto de tabelas e outros objetos que 
estão espalhados por diferentes, mas interligados, sistemas de computador. Cada sistema tem um 
gerenciador de banco de dados relacional para gerenciar as tabelas em seu ambiente. Os 
gerenciadores de banco de dados se comunicam e cooperam uns com os outros de forma a permitir 
que um determinado gerenciador de banco possa executar instruções SQL em qualquer sistema de 
computador que participe da distribuição. 
Um banco de dados relacional particionado é um banco de dados cujos dados são gerenciados em 
várias partições de banco de dados. Esta separação de dados em partições é transparente para a 
maioria das instruções SQL. No entanto, a linguagem de definição de dados (DDL) deve levar as 
informações de partição de banco de dados em consideração (por exemplo, CREATE DATABASE 
PARTITION GROUP). DDL é o subconjunto de instruções SQL usadas para descrever relações e 
objetos de dados em um banco de dados. 
Um banco de dados federado é um banco cujos dados são armazenados em múltiplas fontes de 
dados (tais como bancos de dados relacionais separados). Os dados aparecem como se fossem de 
um único banco de dados grande e podem ser acessados através de consultas SQL tradicionais. As 
alterações nos dados podem ser explicitamente dirigidas para a fonte de dados apropriada. 
PARTIÇÕES 
Uma partição de banco de dados pode ser física ou lógica. As partições lógicas residem no mesmo 
servidor físico e podem tirar proveito da arquitetura de múltiplos processadores simétricos (SMP). 
Ter um banco de dados particionado em uma única máquina com múltiplos nós lógicos é conhecido 
como uma arquitetura do tipo tudo compartilhado, porque as partições compartilham a memória, 
CPUs, controladores de disco e discos. 
As partições físicas consistem em dois ou mais servidores físicos, e um banco de dados dividido entre 
estes servidores. Isto é conhecido como uma arquitetura nada compartilhado, porque cada partição 
tem a sua própria memória, CPUs, controladores de disco e discos. 
Cada instância particionada é de um proprietário da instância que é distinto das outras instâncias. 
Uma instância do DB2 é criada em qualquer uma das máquinas da configuração, que se torna a 
"máquina primária." Este servidor primário é conhecido como o servidor proprietário da instância 
DB2, porque o seu disco armazena fisicamente o diretório home da instância. Este diretório inicial 
da instância é exportado para os outros servidores no ambiente DPF (Database Partitioning 
Feature). 
Nos outros servidores, uma instância do DB2 é criada separadamente: todas usando as mesmas 
características, o mesmo nome de instância, a mesma senha e um diretório inicial de instância 
compartilhado. Cada instância pode gerenciar múltiplos bancos de dados; no entanto, um único 
banco de dados só pode pertencer a uma instância. É possível ter várias instâncias do DB2 no mesmo 
grupo de servidores paralelos. 
A figura a seguir mostra um ambiente com quatro partições de banco de dados distribuído em quatro 
servidores. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
==10ef0==
 
 
 
 
 
 
 
 
 15 
31 
 
Um grupo de partição (partition group) do banco de dados é uma camada lógica que permite que o 
agrupamento de uma ou mais partições. Os grupos de partições de banco de dados permitem que 
você separe os espaços de tabela em todas as partições ou um subconjunto de partições. Uma 
partição de banco de dados pode pertencer a mais de um grupo de partição. Quando uma tabela é 
criada em um espaço de tabela presente em um grupo de partição, algumas das suas linhas são 
armazenadas em uma partição, e outras linhas são armazenadas em outras partições. 
Normalmente, uma única partição de banco de dados existe em cada nó físico, e os processadores 
em cada sistema são usados pelo gerenciador de banco de dados em cada partição para gerir a sua 
própria parte do total dos dados. A figura a seguir mostra quatro partições com dois grupos de 
partição. O grupo de partição A se estende por três partições e grupo de partiçãoB abrange uma 
única partição. 
 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 16 
31 
BUFFER POOLS 
O pool de buffer é uma área de memória projetada para melhorar o desempenho do sistema ao 
permitir ao DB2 acessar dados da memória em vez de disco. Ele é efetivamente um cache de dados 
que está contido no disco, o que significa que o DB2 não tem a sobrecarga de I/O na leitura do disco. 
O desempenho de leitura da memória é muito melhor que o do disco. 
Em um ambiente particionado, um pool de buffer é criado em um grupo de partição para que ele 
possa abranger todas as partições ou partição única, dependendo de como você tiver configurado 
os grupos de partição. 
Prefetching é o processo pelo qual páginas de índice e dados são obtidos a partir do disco e passados 
para os pools de buffer antes das páginas de índice e de dados serem necessárias para a aplicação. 
Isso pode melhorar o desempenho de I/O, no entanto, os atores mais importantes no desempenho 
do prefetching são o tamanho da extensão (extends size), o tamanho do prefetch, e a posição dos 
contêineres no disco. Falaremos sobre extends e contêineres mais adiante. 
O gerenciador de banco de dados usa o pool de buffer para aplicar adições, modificações e exclusões 
para grande parte dos dados do banco de dados. 
Novidade AIX: Chaves de armazenamento ou storage keys é um novo recurso dos 
processadores IBM POWER6 e do sistema operacional AIX que permite a proteção das 
faixas de memória usando chaves de hardware em um nível de thread do kernel. A 
proteção de chave de armazenamento reduz conjunto de buffer com problemas de 
corrupção de memória e erros de limites que podem travar o banco de dados. As 
tentativas de acessar ilegalmente o pool de buffer através de programação significa 
causar uma condição de erro que o gerenciador de banco de dados pode detectar e lidar. 
TABLESPACES 
Um espaço de tabela ou tablespace é a área de armazenamento para as suas tabelas no banco de 
dados. Quando você emite o comando CREATE TABLE, você especifica o espaço de tabela no qual a 
tabela será armazenada. O DB2 utiliza dois tipos de espaços de tabela: os espaços gerenciados pelo 
sistema (SMS) e os espaços gerenciados pelo banco de dados (DMS). Os espaços de tabelas SMS 
são geridos pelo sistema operacional, e espaços de tabela DMS são gerenciadas pelo DB2. 
Em geral, os espaços de tabela SMS são mais adequados para um banco de dados que contém muitas 
tabelas pequenas, porque o SMS é mais fácil de manter e gerenciar. Com um espaço de tabela SMS, 
dados, índices e objetos grandes são armazenados juntos no mesmo espaço de tabela. Os espaços 
de tabela DMS são mais adequadas para grandes bases de dados onde o desempenho é um fator 
chave. 
Containers são adicionados a espaços de tabela DMS na forma de um arquivo ou dispositivo raw. Os 
espaços de tabela DMS apoiam a separação de dados, índices e objetos grandes. Em um ambiente 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 17 
31 
de banco de dados particionado, espaços de tabela pertencem a um grupo de partição que permite 
especificar qual partição ou partições cada espaço de tabela faz parte. 
Um contêiner é o armazenamento físico utilizado pelo espaço de tabela. Quando você define um 
espaço de tabela, você deve selecionar o tipo de espaço de tabela que você está criando (SMS ou 
DMS) e o tipo de armazenamento que você está usando (o contêiner). O contêiner para um espaço 
de tabela SMS é definido como um diretório e não é pré-alocado, portanto, os dados podem ser 
adicionados, desde que haja espaço suficiente disponível no sistema de arquivos. 
Os espaços de tabela DMS usam um arquivo ou um dispositivo raw como um contêiner, e 
contêineres extras podem ser adicionados para suportar o crescimento. Além disso, contêineres de 
DMS podem ser redimensionados e estendidos quando necessário. 
Uma extensão (extends) é a unidade básica para alocação de dados, é um bloco de páginas que é 
escrito e lido de um contêiner DB2. Se você tiver especificado vários contêineres para o seu espaço 
de tabela, o tamanho da extensão pode determinar a quantidade de dados que são gravados para o 
contêiner antes do próximo contêiner ser usado, como efeito, ocorre striping de dados entre os 
vários contêineres. 
Uma página é uma unidade de armazenamento dentro de um espaço de tabela, de um espaço de 
índice, ou na memória virtual. As páginas podem ser de 4 KB, 8 KB, 16 KB ou 32 KB. Os espaços de 
tabela podem ter uma página com qualquer um destes tamanhos. O espaço de índice e memória 
virtual pode ter um tamanho de página de 4 KB. O tamanho da página pode determinar o tamanho 
máximo das tabelas que pode ser armazenado no espaço de tabela. Veja o código abaixo: 
 
No primeiro extrato podemos observar a criação de uma tablespace associada uma nodegroup com 
tamanho igual a 4KB, perceba que esse valor limita a largura das tabelas neste espaço de tabelas. 
No extrato seguinte apresentamos a criação de uma tabela nesta tablespace, em seguida usamos a 
opção de compressão de dados. Para finalizar apresentamos abaixo uma organização hierárquica 
desses objetos em um banco de dados DB2. 
Criação de uma tablespace com tamanho de página 4KB 
CREATE TABLESPACE TSSAR4 
IN NODEGROUP IBMDEFAULTGROUP PAGESIZE 4096; 
Uso da tablespace em uma tabela 
CREATE TABLE SSS.AAA_BBBB ( 
… ) IN TSSAR4 
COMPRESS YES 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 18 
31 
 
SCHEMAS 
Um esquema é uma coleção de objetos nomeados, ele fornece uma forma de agrupar logicamente 
esses objetos. Um esquema é também um qualificador de nome, ele fornece uma maneira natural 
para usarmos o mesmo nome de objetos, evitando referências ambíguas entre eles. 
Por exemplo, os nomes de esquema "CONCURSOS" e "VESTIBULARES" se torna mais fácil de 
distinguir duas tabelas PROVAS diferentes (CONCURSOS.PROVAS, VESTIBULRARES.PROVAS). Os 
esquemas também permitem múltiplas aplicações armazenarem dados em um único banco de 
dados sem conflitos de namespace. 
Um esquema é distinto, e não deve ser confundido com um esquema XML, que é um padrão que 
descrever a estrutura e validar o conteúdo de documentos XML. 
Um schema pode conter tabelas, views, nicknames, triggers, functions, packages e outros objetos. 
O próprio schema também é um objeto de banco de dados. Ele é explicitamente criado usando o 
comando CREATE SCHEMA. O proprietário do schema pode ser o usuário atual ou um ID de 
autorização específico. Também é possível que um schema seja criado implicitamente quando outro 
objeto é criado, se o usuário possuir a autorização IMPLICIT_SCHEMA. 
O nome do schema se torna a parte mais significativa do nome do objeto. Se o objeto for 
explicitamente qualificado no momento da sua criação, o objeto é atribuído aquele esquema. Se 
nenhum nome de esquema for especificado, o nome armazenado no registro CURRENT SCHEMA 
será utilizado. Para termos uma noção da utilização vejamos a criação de um esquema CONCURSO 
autorizado para o usuário THIAGO. Um usuário com permissão DBAADM deve digitar o seguinte 
comando: 
CREATE SCHEMA CONCURSO AUTHORIZATION THIAGO 
Agora o usuário THIAGO pode executar o comando para criação de um outro objeto, uma tabela, 
por exemplo. Vamos criar a tabela BACEN dentro do schema CONCURSO. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br19 
31 
CREATE TABLE CONCURSO.BACEN (COL1 INT) 
Alguns nomes de esquema são reservados. Por exemplo, as funções built-in pertencem ao esquema 
SYSIBM, e as funções pré-instaladas definidas pelo usuário fazem parte do esquema SYSFUN. 
Os esquemas também têm privilégios, permitindo que o proprietário do esquema possa controlar 
quais usuários têm o privilégio de criar, alterar e dropar objetos no esquema. Esta capacidade 
proporciona um modo de controlar a manipulação de um subconjunto dos objetos da base de dados. 
Um proprietário de esquema é inicialmente definido com todos os privilégios no esquema, com a 
capacidade de conceder os privilégios para os outros. 
O utilitário db2move e o procedimento ADMIN_COPY_SCHEMA permitem que você faça cópias de 
um esquema de banco de dados rapidamente. Uma vez que um esquema de modelo é estabelecido, 
você pode usá-lo como modelo para criar diversas versões novas deste esquema. 
TABELAS 
O design de um banco de dados físico consiste em definir objetos de banco de dados e seus 
relacionamentos. Você pode criar os seguintes objetos de banco de dados em um banco de dados 
DB2: Tabelas, Restrições, Índices, Gatilhos, Sequências e Views. Vamos passar agora para a análise 
de cada um deles. 
Você pode usar declarações de Data Definition Language (DDL) ou ferramentas como IBM Data 
Studio para criar esses objetos de banco de dados. As instruções DDL são geralmente precedidas 
pelas palavras-chave CREATE ou ALTER. 
As tabelas são estruturas lógicas mantidas pelo gerenciador de banco de dados e são constituídas 
por colunas e linhas. 
Na interseção de cada coluna com uma linha existe um item de dados específico chamado de valor. 
Uma coluna é um conjunto de valores do mesmo tipo ou de um dos seus subtipos. Uma linha é uma 
sequência de valores dispostos de modo que o valor de ordem n é um valor do mesmo tipo da coluna 
de ordem n da tabela. 
Um programa pode determinar a ordem em que as linhas são colocadas na tabela, mas a ordem real 
das linhas é determinada pelo gerenciador de banco de dados, e, tipicamente, não pode ser 
controlada. 
O DB2 armazena dados em tabelas. Além das tabelas usadas para armazenar os dados persistentes, 
também existem tabelas que são utilizadas para a apresentação de resultados, tabelas de resumo e 
tabelas temporárias; tabelas de cluster multidimensionais oferecem vantagens específicas em um 
ambiente de DW. Podemos dividir as tabelas em tabelas base (base tables), tabelas temporárias 
(temporary tables) e MQT (materialized query table). Vamos falar sobre cada uma delas. 
Base tables – Esse tipo de tabela armazena dados persistentes. Existem alguns tipos de tabelas base: 
tabelas regurales (regular tables), multidimensional clustering (MDC) tables, insert time clustering 
(ITC) tables, range-clustered tables (RCT), partitioned tables e temporal tables. 
Regular tables – são tabelas com índices de propósito geral. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 20 
31 
Multidimensional clustering (MDC) tables – São implementadas como tabelas que são 
fisicamente agrupados por mais do que uma chave, ou dimensão, ao mesmo tempo. Tabelas 
MDC são usadas em DW e grandes bancos de dados grandes. As tabelas MDC podem 
coexistir com tabelas particionadas, e podendo inclusive serem particionadas. As tabelas 
cluster multidimensional não são suportados em um ambiente DB2 pureScale. 
Insert time clustering (ITC) tables - São conceitualmente, e fisicamente semelhantes as 
tabelas MDC, mas em vez de serem agrupadas por um ou mais dimensões especificadas pelo 
usuário, as linhas são agrupadas pelo momento em que elas são inseridas na tabela. Tabelas 
ITC podem ser particionadas. 
Range-clustered tables (RCT) - São implementadas como clusters sequenciais de dados que 
fornecem acesso rápido e direto. Cada registro na tabela tem um ID de registro 
predeterminado (RID), que é um identificador interno usado para localizar um registro em 
uma tabela. Tabelas RCT são utilizadas em modelos onde os dados são bem agrupados em 
uma ou mais colunas na tabela. Os valores maiores e menores das colunas definem os 
intervalos de valores possíveis. Você usa essas colunas para acessar os registros na tabela. 
Partitioned tables - Usam um esquema de organização de dados no qual os dados da tabela 
são divididos em vários objetos de armazenamento, chamados de partições de dados ou 
intervalos, de acordo com os valores de uma ou mais colunas da chave de particionamento 
de tabela. As partições de dados podem ser adicionadas a uma tabela particionada, e você 
pode armazenar vários intervalos de partição de dados de uma tabela em um espaço de 
tabela. As tabelas particionadas podem conter grandes quantidades de dados e simplificar 
as operações sobre os mesmos. 
Temporal tables - São usadas para associar informações de estado baseado em tempo para 
seus dados. São as conhecidas tabelas de histórico. Dados em tabelas que não utilizam o 
suporte temporal, representam o presente, enquanto os dados em tabelas temporais são 
válidos por um período definido pelo sistema de banco de dados, aplicações de clientes, ou 
ambos. Por exemplo, um banco de dados pode armazenar o histórico de uma tabela (linhas 
excluídas ou os valores originais de linhas que foram atualizados) para que possa consultar 
o estado passado de seus dados. Você também pode atribuir um intervalo de tempo para 
uma linha de dados indicando quando ela for considerada inválida por seu aplicativo ou 
regras de negócios. 
Temporary tables - São usadas como tabelas de trabalho temporário para várias operações de banco 
de dados. As tabelas temporárias declaradas (DGTTs) não aparecem no catálogo do sistema, o que 
as torna não-persistente, não sendo possível de ser compartilhada com outros aplicativos. Quando 
o aplicativo usando esta tabela termina ou desconecta do banco de dados, todos os dados da tabela 
são apagados e a tabela é dropada. Por outro lado, tabelas temporárias criadas (CGTTs) aparecem 
no catálogo do sistema e não são obrigadas a serem definidas em cada sessão onde elas são usadas. 
Como resultado, elas são persistentes e capazes de serem compartilhadas com outros aplicativos 
através de conexões diferentes. 
Materialized query tables (MQT) - Estes tipos de tabelas são definidos por uma consulta que 
também é utilizada para determinar os dados da tabela. As tabelas de consulta materializada podem 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 21 
31 
ser usadas para melhorar o desempenho das consultas. Se o gerenciador de banco de dados 
determina que uma parte de uma consulta pode ser resolvida através de uma tabela de resumo, o 
gerenciador de banco de dados pode reescrever a consulta para usar a tabela de resumo. Esta 
decisão baseia-se em parâmetros de configuração de banco de dados, como os registros especiais 
CURRENT REFRESH AGE e a CURRENT QUERY OPTIMIZATION. A tabela de resumo é um tipo 
especializado de tabela de consulta materializada. 
Após analisarmos tabelas vamos conhecer as restrições que podem ser feitas sobre os itens de 
dados. 
RESTRIÇÕES (CONSTRAINTS) 
Em qualquer negócio ou organização, os dados devem estar de acordo com um conjunto de 
restrições ou regras. Por exemplo, o número de registro de um funcionário deve ser único. O SGBD 
deve oferecer recursos, conhecidos como constraints, para garantir que essas regras sejam seguidas. 
Os tipos de restrições disponíveis no DB2 são as seguintes: NOT NULL constraints, Unique 
constraints, Primary key constraints, Foreign key constraints, check constraints e informational 
constraints. Antes de detalhar cada uma dessas restrições vamos fazermais alguns comentários 
genéricos sobre o assunto. 
Restrições associam-se unicamente com tabelas e são definidas como parte do processo de criação 
da tabela (utilizando a instrução CREATE TABLE) ou são adicionadas à definição de uma tabela após 
a tabela ser criada (usando a instrução ALTER TABLE). Você também pode usar a instrução ALTER 
TABLE para modificar as restrições. Na maioria dos casos, as restrições existentes podem ser 
descartadas a qualquer momento. Esta ação não gera efeitos na estrutura da tabela, ou os dados 
armazenados na mesma. 
Vamos agora tratar os tipos de restrições. 
• Uma restrição do tipo NOT NULL é uma regra que previne que valores nulos sejam 
inseridos em uma ou mais colunas de uma tabela. 
• Uma restrição do tipo unique (também conhecida como unique key constraint) é 
uma regra que proíbe valores duplicados em uma ou mais colunas de uma tabela. 
Unique e primary key são dois tipos de restrições unique suportadas. 
• Uma restrição do tipo primary key é definida sobre uma coluna ou uma combinação 
de colunas e tem a mesma propriedade de uma restrição unique. Você pode usar as 
restrições de primary key e foreign key para definir relacionamento entre as tabelas. 
• Uma foreing key, também conhecida como restrição de integridade referencial, é 
uma regra lógica sobre os valores de uma ou mais colunas pertencentes a uma ou 
mais tabelas. Basicamente, você pode restringir os valores de um fornecedor em um 
pedido a lista de fornecedores disponíveis no seu cadastro. Sendo assim o pedido 
manterá a integridade referencial com a tabela de fornecedor. 
• Uma restrição do tipo check estabelece restrições sobre os valores dos dados 
presentes em uma determinada coluna. Você pode definir que o atributo salário não 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 22 
31 
pode ser maior que 30 mil reais. Atualizações no campo salário devem sempre 
verificar as restrições definidas. 
• Uma restrição informacional é uma restrição sobre os atributos que podem ser 
usadas pelo compilador SQL para agilizar o acesso aos dados. São usados para 
melhorar a performance das consultas. Contudo não são forçadas pelo gerenciador 
de banco de dados, ou seja, não existe nenhuma verificação adicional sobre os 
dados. 
ÍNDICES 
Um índice é um conjunto de indicadores que são logicamente ordenados pelos valores de uma ou 
mais chaves. Os ponteiros podem se referir a linhas em uma tabela, os blocos de uma tabela MDC 
ou ITC, dados XML em um objeto de armazenamento XML, e assim por diante. Os índices são 
utilizados para: 
• Melhorar o desempenho. Na maioria dos casos, o acesso aos dados é mais rápido 
com um índice. Embora um índice não possa ser criado sobre uma view, um índice 
criado para a tabela na qual a visão é baseada, por vezes, pode melhorar o 
desempenho das operações sobre essa view. 
• Garantir a exclusividade. Uma tabela com um índice exclusivo (unique) não pode ter 
linhas com chaves idênticas. 
Normalmente, quando você procurar dados em uma tabela, você está em busca de linhas com 
valores específicos em determinadas colunas. Um valor de coluna em uma linha de dados pode ser 
utilizado para identificar a linha inteira. Por exemplo, um número de funcionário, provavelmente, 
define exclusivamente um funcionário específico. 
Em outros casos, mais de uma coluna podem ser necessárias para identificar a linha. Por exemplo, 
uma combinação de nome e número de telefone do cliente. Colunas em um índice que são usadas 
para identificar linhas de dados são conhecidas como chaves. A coluna pode ser utilizada em mais 
do que uma tecla. 
Um índice é ordenado pelos valores da chave. As chaves podem ser exclusivas ou não exclusivas 
(non-unique). Cada tabela deve ter pelo menos uma chave única, mas também pode ter outras 
chaves não-exclusivas. Cada índice tem exatamente uma chave. Por exemplo, você pode usar o 
número de identificação do funcionário (unique) como a chave para um índice e o número do 
departamento (non-unique) como a chave para um índice diferente. 
Vejamos um exemplo, a figura abaixo mostra um índice único criado sobre o id do funcionário. A 
chave prover um ponteiro para a linha da tabela que contém o dado solicitado. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 23 
31 
 
Outra informação relevante é que no banco de dados possui espaços de tabela para dados em 
tabelas, índices e objetos grandes de dados (long data). 
 
Existem alguns tipos de classificações para índices. Já falamos da existência de índices únicos e não 
únicos. Vamos agora tratar dos índices de cluster e dos índices bidirecionais. 
A arquiteturas de índice pode ser classificada como clustered ou non-clustered. Os índices de cluster 
são índices cuja ordem das linhas nas páginas de dados correspondem à ordem das linhas no índice. 
É por isso que apenas um índice de cluster pode existir em uma determinada tabela, enquanto, 
muitos índices non-clustered podem existir na mesma tabela. 
Obs.: Em alguns sistemas de gerenciamento de banco de dados relacionais, o nó de folha do índice 
de cluster corresponde aos dados reais, e não um ponteiro para os dados que residem em outros 
lugares. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 24 
31 
Vamos falar agora dos índices bidirecionais! ☺ Por padrão, os índices bidirecionais permitem 
pesquisas, tanto na ordem definida para o índice quando no fluxo inverso ou reverso. A cláusula 
ALLOW REVERSE SCANS usada na instrução CREATE INDEX permite varreduras tanto forward quanto 
reverse do índice, ou seja, na ordem definida no momento da criação do índice e na ordem inversa. 
Esta opção permite-lhe: 
• Facilitar as funções MIN e MAX 
• Buscar chaves anteriores 
• Eliminar a necessidade do SGBD criar uma tabela temporária para a varredura 
reversa 
• Eliminar índices redundantes. 
O importante aqui é que você conheça essa definição e as palavras chaves usadas no momento da 
criação de um índice. Para finalizar nosso estudo sobre índices, vamos passar agora aos índices em 
tabelas particionadas. 
Dados particionado podem ter índices que são não-particionados, existente em um único espaço de 
tabela dentro de uma partição de banco de dados. Podem também ter índices que são particionados 
em uma ou mais tablespaces dentro de uma partição de banco de dados. Ou, ainda, é possível que 
exista uma combinação dos dois. 
Os índices particionados oferecem benefícios ao executar operações de roll-in com tabelas 
particionadas (roll-in: anexar uma partição de dados em outra tabela usando a cláusula ATTACH 
PARTITION na instrução ALTER TABLE). Usando um índice particionado, você pode evitar a 
manutenção do índice que você teria de fazer se usasse índices não particionados. 
Quando uma tabela de partição utiliza um índice não particionado, você deve usar a instrução SET 
INTEGRITY para manter o índice não particionado, incorporando as chaves de índice de partições 
recém anexadas. A execução dessa instrução não só é demorada, mas também pode necessitar de 
uma grande quantidade de espaço de log, dependendo do número de linhas incorporadas à tabela. 
Obs.: Existem alguns tipos de índices que não pode ser particionado: índices sobre dados não-
particionado, índices sobre dados espaciais e índices de caminho coluna XML (gerado pelo sistema). 
SEQUÊNCIAS 
Uma sequência é um objeto do banco de dados que permite a geração automática de valores, tais 
como números de cheques. Sequências são ideais paragerar valores de chaves únicas. Os aplicativos 
podem usar sequências para evitar possíveis problemas de concorrência e de desempenho 
resultantes de valores de coluna usados para rastrear números. 
A vantagem sobre sequências de números criados fora do banco de dados é que o servidor de banco 
de dados mantém o controle dos números gerados. Uma falhar com possível reinício não causará a 
geração de números duplicados. O valor do contador é recuperável, será reconstruído, a partir de 
logs, quando a recuperação for necessária. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 25 
31 
Os números de sequência gerados têm algumas propriedades. Além de ser simples de configurar e 
criar, a sequência tem uma variedade de opções adicionais que permite uma maior flexibilidade na 
geração de valores: 
Tipo de dados: Os valores podem ser qualquer tipo de dados numérico exato ou inteiro. 
Esses tipos de dados incluem: SMALLINT, BIGINT, INTEGER e DECIMAL. 
Definir valores iniciais (START WITH): É possível definir o primeiro valor válido para a 
sequência. 
Alterar o incremento sequência (INCREMENT BY): Valores consecutivos podem diferir 
por qualquer incremento inteiro especificado. O valor de incremento padrão é 1. A 
especificação permite aumentar ou diminuir os valores. 
Definir valores mínimos e máximos (MINVALUE/MAXVALUE): Estabelece onde a 
numeração começa e termina. 
Permitir a existência de ciclos (CYCLE/NO CYCLE): Quebra os valores de modo a que as 
sequências possam reutilizar a numeração definida. 
Permitir o uso de cache (CACHE/NO CACHE): Os valores podem ser armazenados em 
cache para melhorar o desempenho. A alocação prévia e o armazenamento de valores 
em cache reduz a necessidade de I/O síncrona para o log quando são gerados novos 
valores para a sequência. No caso de uma falha de sistema, todos os valores em cache 
que não tenham sido utilizados são considerados perdidos. O valor especificado para 
CACHE é o número máximo de valores de sequência que podem ser perdidos. 
Existem duas expressões que podem usados com sequências: 
NEXT VALUE: retorna o próximo valor para a sequência especificada. Um novo número 
de sequência é gerado quando uma expressão NEXT VALUE especifica o nome da 
sequência. No entanto, se houver várias instâncias de uma expressão NEXT VALUE 
especificando o mesmo nome de sequência dentro de uma consulta, o contador da 
sequência é incrementado apenas uma vez para cada linha do resultado, e todas as 
instâncias do NEXT VALUE devolvem o mesmo valor para cada linha do resultado. 
PREVIOUS VALUE: retorna o último valor gerado para a sequência especificada por um 
comando anterior no processo de aplicação atual. Ou seja, para uma determinada 
conexão, o valor anterior permanece constante mesmo se outra conexão invoca o NEXT 
VALUE. 
Podemos, por exemplo, para criar uma sequência de chamada id_concursos que começa com um 
valor mínimo de 100, tem um valor máximo de 1000, tem incrementos de 2 a cada chamada da 
expressão NEXT VALUE, e retorna ao seu valor mínimo quando o valor máximo é alcançado, emita a 
seguinte declaração: 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 26 
31 
 
VIEWS 
A visão é uma forma eficiente de representar dados sem a necessidade de mantê-lo armazenando. 
A view não é uma tabela real e não requer nenhum armazenamento permanente. Uma tabela virtual 
é criada e usada. 
Uma visão fornece uma maneira diferente de visualizar os dados de uma ou mais tabelas. É 
basicamente uma tabela de resultados com um nome especificado. Essa especificação é feita por 
uma instrução SELECT que é executada sempre que a visão for referenciada em uma instrução SQL. 
Uma view tem colunas e linhas, assim como uma tabela. Todas as visões podem ser usadas 
semelhantemente as tabelas para recuperação de dados. Contudo, para uma visão ser manipulada 
por operações de inserção, atualização ou exclusão, precisamos analisar sua definição. 
Uma view pode incluir todos ou algumas das colunas ou linhas contidas nas tabelas nas quais se 
baseiam. Por exemplo, você pode executar uma junção de uma tabela de departamento e uma 
tabela de funcionários em uma visão, de modo a listar todos os funcionários em um departamento 
específico. A figura a seguir mostra a relação entre tabelas e visões. 
 
CREATE SEQUENCE id_concursos 
START WITH 100 
INCREMENT BY 2 
MAXVALUE 1000 
CYCLE 
 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 27 
31 
Você pode usar visões para controlar o acesso a dados sensíveis, porque elas permitem que vários 
usuários tenham diferentes apresentações dos mesmos dados. Por exemplo, vários usuários podem 
estar acessando uma tabela de dados sobre os funcionários. Um gerente vê dados sobre seus 
empregados, mas não dos empregados de outro departamento. 
Um analista de recrutamento vê as datas de contração de todos os empregados, mas não seus 
salários; um diretor financeiro vê os salários, mas não as datas de contração. Cada um destes 
usuários trabalha com uma visão diferente da mesma tabela. Cada visão parece ser uma tabela e 
tem seu próprio nome. 
Uma visão que é definida com a cláusula WITH CHECK OPTION impõe que quaisquer linhas 
modificadas ou inseridas observem as restrições definidas no comando de SELECT que criou a visão. 
A opção de verificação também é conhecida como visão simétrica. 
Por exemplo, uma visão simétrica que só retorna apenas funcionários do departamento 10 não vai 
permitir a inserção de funcionários de outros departamentos. Esta opção, por conseguinte, garante 
a integridade dos dados, retornando um erro se a condição for violada durante uma operação 
INSERT ou UPDATE. Vejam abaixo um exemplo da criação de uma visão com a cláusula WITH CHECK 
OPTION. 
 
ROTINAS ADMINISTRATIVAS DEFINIDAS PELO SISTEMA DB2. 
Já falamos de algumas rotinas administrativas quando tratamos da detecção de problemas. 
Mostramos alguns utilitários e comandos usados para administração de sistemas DB2. Antes, porém, 
falaremos de recursos que facilitam a execução de rotinas administrativas. 
O gerenciador de banco de dados fornece outros recursos de manutenção automática para efetuar 
backups do banco de dados, manter as estatísticas atuais e reorganizar tabelas e índices, conforme 
necessário. Executar atividades de manutenção em seus bancos de dados é essencial para garantir 
que eles são otimizados do ponto de vista de desempenho e tenham a capacidade de recuperação. 
A manutenção da base de dados inclui algumas ou todas das seguintes atividades: 
Backups. Ao fazer backup de um banco de dados, o SGBD faz uma cópia dos dados e 
armazena em uma mídia diferente, para ser usada em caso de falha ou dano ao banco de 
dados original. Os backups de banco de dados automáticos ajudam a garantir que o 
backup do seu banco de dados é feito de forma adequada e regularmente, de modo que 
CREATE VIEW EMP_VIEW2 
 (EMPNO, EMPNAME, DEPTNO, JOBTITLE, HIREDATE) 
 AS SELECT ID, NAME, DEPT, JOB, HIREDATE FROM EMPLOYEE 
 WHERE DEPT=10 
 WITH CHECK OPTION; 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 28 
31 
você não precisa se preocupar em quando para fazer backup ou conhecer a sintaxe do 
comando BACKUP. 
Desfragmentação de dados (reorganização de índice ou tabela). Esta atividade demanutenção pode aumentar a eficiência com que o SGBD acessa suas tabelas. A 
reorganização automática gerencia uma reorganização da tabela e do índice off-line para 
que você não precise se preocupar com quando e como reorganizar seus dados. 
Otimização de acesso a dados (coleta de estatísticas). O SGBD atualiza as estatísticas do 
catálogo do sistema sobre os dados em uma tabela, os dados de índices, ou ambos. O 
otimizador usa essas estatísticas para determinar qual o caminho a ser usado para acessar 
os dados. A coleta de estatísticas automática tenta melhorar o desempenho do banco de 
dados através da manutenção de up-to-date das estatísticas da tabela. O objetivo é 
permitir que o otimizador escolha um plano de acesso com base em estatísticas mais 
precisas. 
Mas nem todas as rotinas são automáticas, algumas precisam ser executas possivelmente pela linha 
de comando, passaremos a uma análise de alguns comandos e utilitários relevantes. 
db2start – inicia o db2. 
db2stop – desativa o DB2 se não existir nenhuma conexão ativa. 
db2stop force – o DB2 está ativo com conexões, mas, mesmo assim, você quer parar a 
instância. 
db2 "LIST DATABASE DIRECTORY" – lista os bancos de dados que estão disponíveis. 
db2 "LIST ACTIVE DATABASES" – lista os bancos de dados que estão ativos. 
db2 "ACTIVATE DATABASE dbname" – ativa um banco de dados. 
db2 "LIST TABLESPACES SHOW DETAIL" – lista os espaços de tabela e seus estados. 
Você já deve ter percebido que podemos usar a sintaxe db2 “comando” e executar diversas ações 
sobre a base de dados. Outra opção é executar o comando db2admin com os parâmetros START, 
STOP [/FORCE], CREATE, entre outros. Veja a sintaxe do comando utilizado para administração do 
servidor DB2. 
 
Com isso passamos por alguns dos principais aspectos e rotinas relacionadas a administração do 
banco de dados DB2. Vamos agora conhecer as mensagens de sistema. 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 29 
31 
MENSAGENS DE SISTEMA SQL E SQLSTATE. 
O DB2 atribui um valor de SQLSTATE após a execução de um comando SQL. DB2 retorna os valores 
de acordo com os erros especificados no padrão SQL. Assim, as aplicações ou programas podem 
verificar a execução do comando testando o SQLSTATE. 
O SQLSTATE divide as mensagens do sistema em classes de código. A classe 00 representa uma 
execução com sucesso, 01 representa warning, 02 define que um erro por falta de dados aconteceu. 
Abaixo apresentamos uma tabela com os principais códigos de classe e seus significados. A lista não 
é exaustiva, para encontra todas as classes de código você pode acessa esse link. 
Cada classe de código possui um ou um grupo de SQLSTATES que possuem os dois primeiros 
caracteres iguais ao código de classe. Vejamos o exemplo do código 00. Ele possui o SQLSTATE 00000 
que significa que a execução da operação foi concluída com sucesso e não resultou em nenhum tipo 
de erro ou warning. 
Outro exemplo seria a classe de código 23 que trata das violações restrições as restrições de 
integridade. Apresentamos a seguir outra tabela com parte dos SQLSTATEs associados a esse código. 
Percebam que a lista completa de todos os SQLSTATEs é enorme, possui centenas, talvez alguns 
milhares de estados possíveis para um comando que foi concluído com erro. 
A minha sugestão é que você entenda o contexto e armazene apenas os principais códigos de classe, 
eles guardam uma ligação direta com um SQLSTATE. 
 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 30 
31 
 
Vamos ilustrar nosso conteúdo com um exemplo. Durante a criação do banco de dados, algumas 
tabelas são criadas. A ordem da criação e da inclusão de permissões podem gerar problemas durante 
a execução de um script SQL. Para resolver esse problema o DB2 ignora algumas exceções. Os 
principais erros que ocorrem durante a criação de objetos e são tolerados são os seguintes tipos: 
• Erros de resolução de nomes, tais como: a tabela referenciada não existe (SQLSTATE 
42704, SQL0204N), uma coluna referenciada não existe (SQLSTATE 42703, SQL0206N), ou 
uma função de referência não pode ser encontrado (SQLSTATE 42884, SQL0440N) 
• Erro de autorização (SQLSTATE 42501, SQL0551N) 
 
 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br
 
 
 
 
 
 
 
 
 
 31 
31 
 
CONSIDERAÇÕES FINAIS 
Prezados alunos, 
Chegamos ao final da nossa aula de BD2. Espero que tenham gostado! 
Gostaria de fazer outro comentário que considero importante. A elaboração desta aula exige um 
esforço homérico de extrair o conteúdo mais relevante de algumas dezenas de livros da 
documentação do DB2. Peço que, caso algum ponto não tenha ficado devidamente claro, me envie 
sua dúvida por algum dos canais de interação professor-aluno. 
Todas as questões de DB2 relacionadas aos diversos assuntos, serão apresentadas na última aula 
deste bloco. 
Forte abraço e bons estudos! 
Thiago Cavalcanti 
REFERÊNCIAS 
1. DB2 Essentials: Understanding DB2 in a Big Data World, Third Edition - by 
Clara Liu, Raul F. Chong - Publisher: IBM Press - Published: October 2013 
2. Installing DB2 Servers, IBM DB2 10.1 for Linux, UNIX, and Windows, 
Updated January 2013 – disponível em http://goo.gl/llkGZ1. 
3. Getting Started with DB2 Installation and Administration on Linux and 
Windows, IBM DB2 10.1 for Linux, UNIX, and Windows – disponível em 
http://goo.gl/YpybVQ 
4. Database Partitioning, Table Partitioning, and MDC for DB2 9, Whei-Jen 
Chen, Alain Fisher, Aman Lalla, Andrew D McLauchlan, Doug Agnew – 
disponível em http://goo.gl/BKlgpV 
5. Database Administration Concepts and Configuration Reference, IBM DB2 
10.1, for Linux, UNIX, and Windows - disponível em http://goo.gl/cCnGwc 
 
 
Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos
Aula 07
69360
Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital
www.estrategiaconcursos.com.br

Outros materiais