Você está na página 1de 83

Traduzido do Inglês para o Português - www.onlinedoctranslator.

com

DB2 – Introduçã o
Este capítulo descreve a história do DB2, suas versões, edições e seus respectivos recursos.

Visão geral
DB2 é um produto de banco de dados da IBM. É um Sistema de Gerenciamento de Banco de Dados
Relacional (RDBMS). O DB2 foi projetado para armazenar, analisar e recuperar os dados com eficiência. O
produto DB2 é estendido com o suporte de recursos orientados a objetos e estruturas não relacionais com
XML.

História
Inicialmente, a IBM desenvolveu o produto DB2 para sua plataforma específica. Desde o ano de 1990,
decidiu desenvolver um servidor DB2 de banco de dados universal (UDB), que pode ser executado em
qualquer sistema operacional autorizado, como Linux, UNIX e Windows.

Versões
Para IBM DB2, a versão atual do UDB é 10.5 com os recursos do BLU Acceleration e seu nome de código
como 'Kepler'. Todas as versões do DB2 até hoje estão listadas abaixo:

Versão Nome de código


3.4 teia de aranha
8.1, 8.2 ferrão
9.1 Víbora
9.5 Víbora 2
9.7 cobra
Ele adicionou recursos com Only
9.8
PureScale
10.1 Galileu
10.5 Kepler

Edições e recursos do servidor de dados


Dependendo do requisito dos recursos necessários do DB2, as organizações selecionam a versão apropriada
do DB2. A tabela a seguir mostra as edições do servidor DB2 e seus recursos:

Edições Características
Ele é projetado para empresas de médio a grande porte. Plataforma – Linux,
Advanced Enterprise
UNIX e Windows. Particionamento de tabela Alta disponibilidade Disaster
Server Edition e
Recovery (HARD) Materialized Query Table (MQTs) Multidimensional
Enterprise Server Edition
Clustering (MDC) Concentrador de conexão XML puro Compactação de backup
(AESE / ESE)
Federações homogêneas
Edição do Servidor de Ele foi projetado para grupos de trabalho ou organizações empresariais de médio
Grupo de Trabalho (WSE) porte. Usando este WSE, você pode trabalhar com – High Availability Disaster
Recovery (HARD) Reorganização online Pure XML Web Service Federation
support DB2 Homogeneous Federations Replicação SQL homogênea
Compactação de backup
Ele fornece todos os recursos do DB2 com custo zero. Ele pode ser executado em
Expresso -C
qualquer sistema físico ou virtual com qualquer tamanho de configuração.
Ele foi projetado para organizações empresariais de nível básico e de médio porte.
É um servidor de dados DB2 completo. Ele oferece apenas serviços limitados.
Edição Expressa
Esta edição vem com – Federações de serviços da Web Federações homogêneas
DB2 Replicações SQL homogêneas Compactação de backup
Oferece apenas um único desenvolvedor de aplicativos. É útil projetar, construir e
Enterprise Developer
prototipar os aplicativos para implementação em qualquer servidor IBM. O
Edition
software não pode ser usado para desenvolver aplicativos.
DB2 – Instalaçã o do servidor
Este capítulo descreve as etapas de instalação do servidor DB2.

Introdução
Você pode fazer download da versão de avaliação do DB2 Server ou adquirir a licença do produto
emwww.ibm.com. Existem dois servidores DB2 separados disponíveis para download, dependendo do
tamanho do sistema operacional no qual ele deve ser executado. Por exemplo, se desejar fazer download de
um servidor DB2 para sistema operacional Linux ou UNIX de 32 bits, será necessário fazer download de um
servidor DB2 de 32 bits. O mesmo se aplica ao servidor DB2 de 64 bits.

Requisitos de hardware
Processador: Mínimo Core 2Duo

Ram: mínimo de 1 GB

Disco rígido: mínimo de 30 GB

Requisitos de software
Antes de instalar o servidor DB2, seu sistema precisa se preparar com o software necessário. Para Linux,
você precisa instalar “libstdc++6.0”.

Verificando a compatibilidade do sistema


Antes de instalar o DB2 Server, você precisa verificar se seu sistema é compatível com o servidor DB2. Para
confirmar a compatibilidade, você precisa chamar o comando 'db2prereqcheck' no console de comando.

Instalando o DB2 no sistema operacional Linux


Abra o Terminal e defina o caminho da pasta da imagem de instalação do db2 no console usando o comando
“CD <pasta de instalação do DB2>”. Em seguida, digite o comando “./db2prereqcheck”, que confirma a
compatibilidade do seu sistema com o servidor DB2.

./db2prereqcheck

A Figura 1 mostra os requisitos de compatibilidade do sistema operacional Linux e do sistema de hardware.

Siga as etapas fornecidas para instalar o DB2 em seu sistema Linux:

 Abra o terminal.
 Faça login como usuário root.
 Abra a pasta de instalação do DB2.
 Digite “./db2setup” e pressione Enter.

Este processo iniciará a execução da configuração do servidor DB2.


Digite “./db2setup” e pressione Enter no terminal raiz para iniciar o processo de configuração do DB2
Server.

Ao fazer isso, a tela “Set up Launch Pad” aparece. [Figura 2]

Na página Setup Launch pad, selecione a opção “Install a Product” no menu do lado esquerdo. Selecione a
opção “DB2 Advanced Enterprise Server Edition”. Selecione o botão "Instalar novo".

Um novo quadro aparece com o nome “DB2 setup wizard”. Clique em “Avançar”. [Figura 3]
A próxima tela aparece com o contrato de licença do DB2. Selecione “Aceito os termos...” Clique em
“Avançar”. [Figura-4]

A próxima tela apresenta a oferta do tipo de instalação, que é definida como “Típica” por padrão.

Mantenha a mesma seleção. Clique em “Avançar”. [Figura-5]


A próxima tela aparece com a ação de instalação.

Selecione “Instalar DB2 Advanced Enterprise Server Edition…”

Clique em “Avançar”. [Figura-6]

Na próxima tela, o programa de instalação solicita a seleção do diretório de instalação.

Mantenha o padrão e clique em “Avançar”.


A próxima tela vem com a autenticação do usuário. Digite sua senha para o usuário “dasusr1”.

(Sua senha pode ser idêntica ao nome de usuário para que seja conveniente lembrar.)

Na tela seguinte, a configuração solicita a criação da instância do servidor DB2.

Aqui, está criando uma instância do DB2 com o nome “db2inst1”.


A próxima tela pergunta o número de partições necessárias para sua instância padrão.

Você tem a opção de partições “únicas ou múltiplas”.

Selecione “instância de partição única”. Clique em “próximo”.

Na próxima tela, a configuração solicita a autenticação da instância do DB2 que está sendo criada.

Aqui, por padrão, o nome de usuário é criado como “db2inst1”. Você pode inserir a mesma senha do nome
de usuário.

Clique em “Avançar”.
Na próxima tela, a configuração pede para inserir informações de autenticação para o usuário “db2fenc”.

Aqui, você pode inserir a mesma senha do nome de usuário.

Clique em “Avançar”.

Na próxima tela, você pode selecionar a opção “Não configure seu servidor db2 para enviar notificações
neste momento”.

Clique em "Avançar".
A próxima tela mostra as informações sobre a configuração do db2.

Clique em “Concluir”.

O procedimento de instalação do DB2 está completo neste estágio.

Verificando a instalação do DB2


Você precisa verificar a instalação do servidor DB2 quanto à sua utilidade. Ao concluir a instalação do DB2
Server, efetue logout do modo de usuário atual e efetue login no usuário “db2inst1”. No ambiente de usuário
“db2inst1”, você pode abrir o terminal e executar os seguintes comandos para verificar se seu produto db2
está instalado corretamente ou não.

db2level

Este comando mostra a versão atual e o nível de serviço do produto DB2 instalado para a instância atual.

Sintaxe:

db2level

Exemplo:

db2level

Resultado:

Instância DB21085I"db2inst2" usa "64" bits


E liberação de código DB2 "SQL10010"com nível
identificador "0201010E".tokens informativos
são "DB2 v10.1.0.0","s120403",
"LINUXAMD64101",e Fix Pack "0".
produtosestá instalado em "/home/db2inst2/sqllib".
db2licm

Este comando mostra todas as informações relacionadas à licença de nosso produto DB2.

Sintaxe:

db2licm <parâmetro>

Exemplo:

db2licm -l

Resultado:

Nome do Produto:"DB2 Advanced Enterprise Server Edition"


Tipo de licença:"Tentativas"
Data de validade:"10/02/2014"
Identificador de produto:"db2aese"
Versão informação:"10.1"
Nome do Produto:"Servidor DB2 Connect"
Tipo de licença:"Tentativas"
Data de validade:"10/02/2014"
Identificador de produto:"db2consv"
Versão informação:"10.1"

Processador de linha de comando (CLP)


O CLP pode ser iniciado em um dos três modos:

 modo de comando: Neste modo, cada comando e instrução SQL deve ser prefixado por “db2”. Por exemplo,
consulte “amostra de banco de dados de ativação do db2”.
 Modo de entrada interativo: você pode iniciar este modo usando o comando “db2”. Aqui, você pode passar
instruções SQL sem prefixo. Por exemplo, “ativar amostra de banco de dados”.
 modo de lote: Aqui, você precisa criar um arquivo de script, que contém todas as consultas SQL de requisitos
e salvar o arquivo com a extensão “.db2”. Você pode chamá-lo na linha de comando usando a sintaxe “db2 –
tf <filename.db2>”.
DB2 – Instâ ncia
Introdução
Uma Instância é um ambiente lógico para o DB2 Database Manager. Usando a instância, você pode
gerenciar bancos de dados. Dependendo de nossos requisitos, você pode criar várias instâncias em uma
máquina física. O conteúdo do diretório da instância é:

 Arquivo de configuração do gerenciador de banco de dados


 Diretório de banco de dados do sistema
 Diretório de nós
 Arquivo de configuração do nó [db2nodes.cfg]
 Arquivos de depuração, arquivos de despejo

Para DB2 Database Server, a instância padrão é “DB2”. Não é possível alterar a localização do diretório da
instância após sua criação. Uma instância pode gerenciar vários bancos de dados. Em uma instância, cada
banco de dados tem um nome exclusivo, seu próprio conjunto de tabelas de catálogo, arquivos de
configuração, autoridades e privilégios.

Arquitetura da instância no produto DB2

Múltiplas instâncias
Você pode criar várias instâncias em um DB2Server no Linux, UNIX e Windows. É possível instalar vários
DB2Servers em uma máquina física.

Criando instância no Linux


Você pode criar várias instâncias no Linux e UNIX se o DB2 Server estiver instalado como usuário root.
Uma instância pode ser executada simultaneamente no Linux e no UNIX de forma independente. Você pode
trabalhar em uma única instância do gerenciador de banco de dados por vez.

Uma pasta de instância contém arquivos e pastas de configuração de banco de dados. O diretório Instance é
armazenado em locais diferentes no Windows, dependendo das versões do sistema operacional.

Listando instâncias
O seguinte comando é usado para listar as instâncias:

db2ilist

Este comando lista todas as instâncias disponíveis em um sistema.

Sintaxe:

db2ilist

Exemplo:[Para ver quantas instâncias são criadas na cópia do DB2]

db2ilist

Resultado:

db2inst1
db2inst2
db2inst3

Comandos de ambiente de instância


Esses comandos são úteis para trabalhar com arranjo de instância no DB2 CLI.

Obter instância

Este comando mostra detalhes da instância atualmente em execução.

Sintaxe:

db2 obter instância

Exemplo:[Para ver a instância atual que ativou o usuário atual]

db2 obter instância

Resultado:

A instância atual do gerenciador de banco de dados é: db2inst1

Definir instância

Para iniciar ou parar o gerenciador de banco de dados de uma instância no DB2 UDB, o seguinte comando é
executado para a instância atual.
Sintaxe:

definir db2instance=<instance_name>

Exemplo:[ Para organizar o ambiente “db2inst1” para o usuário atual]

definir db2instance=db2inst1

db2start

Usando este comando, você pode iniciar uma instância. Antes disso, você precisa executar “set instance”.

Sintaxe:

db2start

Exemplo:[Para iniciar uma instância]

db2start

Resultado:

SQL1063N O processamento do DB2START foi bem-sucedido

db2stop

Usando este comando, você pode parar uma instância em execução.

Sintaxe:

db2stop

Resultado:

SQL1064N O processamento de DB2STOP foi bem-sucedido.

Criando uma instância


Vamos ver como criar uma nova instância.

db2icrt

Se você deseja criar uma nova instância, precisa fazer login com root. O id da instância não é um id de raiz
ou um nome de raiz.

Aqui estão as etapas para criar uma nova instância:

Passo 1: Crie um usuário do sistema operacional, por exemplo.

Sintaxe:

useradd -u <ID> -g <nome do grupo> -m -d <localização do usuário> <nome do usuário>


-p <senha>

Exemplo: [Para criar um usuário, por exemplo, com nome 'db2inst2' no grupo 'db2iadm1' e senha 'db2inst2']
useradd -u 1000 -g db2iadm1 -m -d /home/db2inst2 db2inst2 -p db2inst2

Passo 2: Vá para o diretório da instância do DB2 no usuário raiz para criar uma nova instância.

Localização:

cd /opt/ibm/db2/v10.1/instance

Etapa 3: Crie uma instância usando a sintaxe abaixo:

Sintaxe:

./db2icrt -s ese -u <inst id> <nome da instância>

Exemplo: [Para criar uma nova instância 'db2inst2' no usuário 'db2inst2' com os recursos de 'ESE'
(Enterprise Server Edition)]

./db2icrt -s ese -u db2inst2 db2inst2

Resultado:

DBI1446I O comando db2icrt está em execução, aguarde.


….
…..
DBI1070I O programa db2icrt foi concluído com êxito.

Organizando porta de comunicação e host para uma instância


Edite o arquivo /etc/services e adicione o número da porta. Na sintaxe fornecida abaixo, 'inst_name' indica o
nome da instância e 'inst_port' indica o número da porta da instância.

Sintaxe:

db2c_<inst name> <inst_port>/tcp

Exemplo: [Adicionando o número da porta '50001/tcp' para a instância 'db2inst2' com a variável
'db2c_db2inst2' no arquivo 'services']

db2c_db2inst2 50001/tcp

Sintaxe 1: [Atualizar configuração do gerenciador de banco de dados com o nome do serviço. A seguinte
sintaxe 'svcename' indica o nome do serviço da instância e 'inst_name' indica o nome da instância]

configuração do gerenciador de banco de dados de atualização do db2 usando svcename


db2c_&<inst_name>

Exemplo 1: [Atualizando a configuração do DBM com a variável svcename com o valor 'db2c_db2inst2'
para a instância 'db2inst2'

configuração do gerenciador de banco de dados de atualização do db2 usando svcename


db2c_db2inst2

Resultado

DB20000I O comando UPDATE DATABASE MANAGER CONFIGURATION foi concluído com êxito.

Sintaxe 2: defina o protocolo de comunicação “tcpip” para a instância atual


db2set DB2COMM=tcpip

Sintaxe 3: [Parando e iniciando a instância atual para obter valores atualizados da configuração do
gerenciador de banco de dados]

db2stop
db2start

Atualizando uma instância


Você pode atualizar uma instância usando o seguinte comando:

db2iupdt

Este comando é usado para atualizar a instância dentro do mesmo lançamento de versão. Antes de executar
este comando, você precisa parar o gerenciador de banco de dados da instância usando o comando
“db2stop”. A sintaxe abaixo de “inst_name” indica o nome da instância do servidor db2 lançado ou
instalado anteriormente, que você deseja atualizar para um release mais recente ou versão instalada do
servidor db2.

Sintaxe 1: Para atualizar uma instância no modo normal

db2iupdt <inst_name>

Exemplo 1:

./db2iupdt db2inst2

Sintaxe 2: Para atualizar uma instância no modo de depuração

db2iupdt -D <inst_name>

Exemplo

db2iupdt -D db2inst2

Atualizando uma instância


Você pode atualizar uma instância da versão anterior da cópia do DB2 para a versão atual recém-instalada
da cópia do DB2.

db2iupgrade

No sistema Linux ou UNIX, esse comando está localizado no diretório DB2DIR/instance. Nas sintaxes a
seguir, “inst_name” indica a versão anterior da instância do DB2 e “inst_username” indica o usuário da
instância de cópia do DB2 da versão atual instalada.

Sintaxe 2:

db2iupgrade -d -k -u <inst_username> <inst_name>

Exemplo:

db2iupgrade -d -k -u db2inst2 db2inst2


Parâmetros de comando:

-d: Ativa o modo de depuração.

-k: Mantém o tipo de instância pré-atualização se for suportado na cópia do DB2, de onde você está
executando este comando.

Se você estiver usando o comando Superusuário (su) no Linux para db2iupgrade, deverá emitir o comando
“su” com a opção “-”.

Descartando uma instância


Você pode descartar ou excluir a instância, que foi criada pelo comando “db2icrt”.

db2idrop

No sistema operacional Linux e UNIX, esse comando está localizado no diretório


DB2_installation_folder/instance.

Sintaxe: [na seguinte sintaxe, 'inst_username' indica o nome de usuário da instância e 'inst_name' indica o
nome da instância]

db2idrop -u <inst_username> <inst_name>

Exemplo: [Para descartar db2inst2]

./db2idrop -u db2inst2 db2inst2

Usando outros comandos com instância


Comando para descobrir em qual instância do DB2 estamos trabalhando agora.

Sintaxe 1: [para verificar a instância atual ativada pelo gerenciador de banco de dados]

db2 obter instância

Resultado:

A instância atual do gerenciador de banco de dados é: db2inst1

Sintaxe 2: [Para ver a instância atual com bits operacionais e versão de lançamento]

db2pd -inst | cabeça -2

Exemplo:

db2pd -inst | cabeça -2

Resultado:

Instância db2inst1 usa 64 bits e versão de código DB2 SQL10010

Sintaxe 3: [Para verificar o nome da instância atualmente em funcionamento]

db2 selecione inst_name de sysibmadm.env_inst_info


Exemplo:

db2 selecione inst_name de sysibmadm.env_inst_info

Resultado:

INST_NAME --------------------------------------
db2inst1
1 registro(s) selecionado(s).

Sintaxe: [Para definir uma nova instância como padrão]

db2set db2instdef=<inst_name> -g

Exemplo: [Para a instância recém-criada da matriz como uma instância padrão]

db2set db2instdef=db2inst2 -g
DB2 – Bancos de Dados
Este capítulo descreve a criação, ativação e desativação dos bancos de dados com a sintaxe associada.

Arquitetura do banco de dados

Um banco de dados é uma coleção de tabelas, esquemas, bufferpools, logs, grupos de armazenamento e
espaços de tabela trabalhando juntos para lidar com operações de banco de dados com eficiência.

Diretório do banco de dados


O diretório de banco de dados é um repositório organizado de bancos de dados. Quando você cria um banco
de dados, todos os detalhes sobre o banco de dados são armazenados em um diretório de banco de dados,
como detalhes de dispositivos de armazenamento padrão, arquivos de configuração e lista de tabelas
temporárias, etc.

O diretório global da partição é criado na pasta da instância. Este diretório contém todas as informações
globais relacionadas ao banco de dados. Esse diretório global de partição é nomeado como
NODExxxx/SQLyyy, em que xxxx é o número da partição de dados e yyy é o token do banco de dados.

No diretório global da partição, um diretório específico do membro é criado. Este diretório contém
informações do banco de dados local. O diretório específico do membro é nomeado como MEMBERxxxx
onde xxxx é um número de membro. O ambiente do DB2 Enterprise Server Edition é executado em um
único membro e possui apenas um diretório específico do membro. Este diretório específico do membro é
nomeado exclusivamente como MEMBER0000.

Diretório global particionado


Localização do diretório: <instância>/NODExxx/SQLxxx

O diretório global da partição contém arquivos relacionados ao banco de dados, conforme listado abaixo.

 Arquivos de monitoramento de eventos de gravação em arquivo de impasse global


 Arquivos de informações de espaço de tabela [SQLSPCS.1, SQLSPCS.2]
 Arquivos de controle do grupo de armazenamento [SQLSGF.1, SQLSGF.2]
 Arquivos de contêiner de espaço de tabela temporário. [/caminho de
armazenamento//T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]
 Arquivo de configuração global [SQLDBCONF]
 Arquivos de histórico [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
 Arquivos relacionados ao log [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
 Bloqueando arquivos [SQLINSLK, SQLTMPLK]
 Recipientes de armazenamento automático

Diretório específico do membro


Localização do diretório: /NODExxxx/SQLxxxx/MEMBER0000

Este diretório contém:

 Objetos associados a bancos de dados


 Arquivos de informações do buffer pool [SQLBP.1, SQLBP.2]
 Arquivos de monitoramento de eventos locais
 Arquivos relacionados ao log [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH].
 Arquivos de configuração locais
 Arquivo do monitor de eventos de deadlocks. Os arquivos detalhados do monitor de eventos de
conflito são armazenados no diretório do banco de dados do nó do catálogo no caso de ESE e
ambiente de banco de dados particionado.

Criando banco de dados


Você pode criar um banco de dados na instância usando o comando “CREATE DATABASE”. Todos os
bancos de dados são criados com o grupo de armazenamento padrão “IBMSTOGROUP”, que é criado no
momento da criação de uma instância. No DB2, todas as tabelas do banco de dados são armazenadas em
“tablespace”, que utilizam seus respectivos grupos de armazenamento.

Os privilégios para o banco de dados são definidos automaticamente como PUBLIC [CREATETAB,
BINDADD, CONNECT, IMPLICIT_SCHEMA e SELECT], porém, se a opção RESTRICTIVE estiver
presente, os privilégios não são concedidos como PUBLIC.

Criação de banco de dados não restritivo


Este comando é usado para criar um banco de dados não restritivo.

Sintaxe: [Para criar um novo banco de dados. 'database_name' indica um novo nome de banco de dados, que
você deseja criar.]

db2 cria banco de dados <nome do banco de dados>

Exemplo: [Para criar um novo banco de dados não restritivo com o nome 'um']

db2 criar banco de dados um

Resultado:

DB20000I O comando CREATE DATABASE foi concluído com êxito.

Criando banco de dados restritivo


O banco de dados restritivo é criado ao chamar este comando.

Sintaxe: [Na sintaxe abaixo, “db_name” indica o nome do banco de dados.]

db2 cria banco de dados <db_name> restritivo

Exemplo: [Para criar um novo banco de dados restritivo com o nome 'dois']

db2 cria banco de dados dois restritivo

Criando banco de dados com diferentes locais definidos pelo


usuário
Crie um banco de dados com o grupo de armazenamento padrão “IBMSTOGROUP” em um caminho
diferente. Anteriormente, você invocou o comando “criar banco de dados” sem nenhum local definido pelo
usuário para armazenar ou criar banco de dados em um local específico. Para criar o banco de dados usando
o local do banco de dados definido pelo usuário, o seguinte procedimento é seguido:

Sintaxe: [Na sintaxe abaixo, 'db_name' indica o 'nome do banco de dados' e 'data_location' indica onde
armazenar os dados nas pastas e 'db_path_location' indica a localização do driver de 'data_location'.]

db2 cria banco de dados '<db_name>' em '<data location>' dbpath em '<db_path_location>'

Exemplo: [Para criar um banco de dados chamado 'four', onde os dados são armazenados em 'data1' e esta
pasta é armazenada em 'dbpath1']

db2 cria banco de dados quatro em '/data1' dbpath em '/dbpath1'

Visualizando arquivos de diretório de banco de dados local ou do


sistema
Você executa este comando para ver a lista de diretórios disponíveis na instância atual.

Sintaxe:

diretório do banco de dados da lista db2

Exemplo:

diretório do banco de dados da lista db2

Resultado:

Diretório de banco de dados do sistema


Número de entradas no diretório = 6
Entrada do banco de dados 1:
Alias do banco de dados = QUATRO
Nome do banco de dados = QUATRO
Diretório do banco de dados local =
/home/db2inst4/Desktop/dbpath
Nível de liberação do banco de dados = f.00
Comentário =
Tipo de entrada do diretório = Indireto
Número da partição do banco de dados do catálogo = 0
Nome de host do servidor alternativo =
Número da porta do servidor alternativo =
Entrada do banco de dados 2:
Alias do banco de dados = SIX
Nome do banco de dados = SIX
Diretório do banco de dados local = /home/db2inst4
Nível de liberação do banco de dados = f.00
Comentário =
Tipo de entrada do diretório = Indireto
Número da partição do banco de dados do catálogo = 0
Nome de host do servidor alternativo =
Número da porta do servidor alternativo =

Ativando banco de dados


Este comando inicia todos os serviços necessários para um determinado banco de dados para que o banco de
dados esteja disponível para aplicação.

Sintaxe:['db_name' indica o nome do banco de dados]

db2 ativar db <db_name>

Exemplo: [Ativando o banco de dados 'um']

db2 ativar db um

Desativando banco de dados


Usando este comando, você pode parar os serviços de banco de dados.

Sintaxe:

db2 desativar db <db_name>

Exemplo: [Para desativar o banco de dados 'um']

db2 desativar db um

Conectando ao banco de dados


Depois de criar um banco de dados, para colocá-lo em uso, você precisa conectar ou iniciar o banco de
dados.

Sintaxe:

db2 conectar a <nome do banco de dados>

Exemplo: [Para conectar o banco de dados um ao CLI atual]

db2 conectar a um

Resultado:

Informações de conexão do banco de dados


Servidor de banco de dados = DB2/LINUXX8664 10.1.0
ID de autorização SQL = DB2INST4
Alias do banco de dados local = ONE

Verificando se o banco de dados é restritivo


Para verificar se este banco de dados é restritivo ou não, aqui está a sintaxe:

Sintaxe: [Na seguinte sintaxe, 'db' indica banco de dados, 'cfg' indica configuração, 'db_name' indica nome
do banco de dados]

db2 obtém db cfg para <db_name> | grep -i restrinjo

Exemplo: [Para verificar se 'um' banco de dados é restrito ou não]

db2 obtém db cfg para um | grep -i restrinjo

Resultado:

Acesso restrito = NÃO

Configurando o gerenciador de banco de dados e o banco de dados


A configuração da instância (configuração do gerenciador de banco de dados) é armazenada em um arquivo
chamado 'db2system' e a configuração relacionada ao banco de dados é armazenada em um arquivo
chamado 'SQLDBCON'. Esses arquivos não podem ser editados diretamente. Você pode editar esses
arquivos usando ferramentas que chamam API. Usando o processador de linha de comando, você pode usar
esses comandos.

Parâmetros de configuração do gerenciador de banco de dados

Sintaxe: [Para obter as informações do gerenciador de banco de dados de instância]

db2 obter configuração do gerenciador de banco de dados

OU

db2 obter dbm cfg

Sintaxe: [Para atualizar o gerenciador de banco de dados da instância]

configuração do gerenciador de banco de dados de atualização do db2

OU

db2 atualização dbm cfg

Sintaxe: [Para redefinir as configurações anteriores]

db2 redefinir configuração do gerenciador de banco de dados

OU

db2 redefinir dbm cfg

Parâmetros de configuração do banco de dados

Sintaxe: [Para obter as informações do banco de dados]

db2 obter configuração do banco de dados

OU
db2 obter db cfg

Sintaxe: [Para atualizar a configuração do banco de dados]

configuração do banco de dados de atualização do db2

OU

db2 atualização db cfg

Sintaxe: [Para redefinir os valores configurados anteriormente na configuração do banco de dados

db2 redefinir configuração do banco de dados

OU

db2 redefinir db cfg

Sintaxe: [Para verificar o tamanho do banco de dados ativo atual]

db2 "chamar get_dbsize_info(?,?,?,-1)"

Exemplo: [Para verificar o tamanho do banco de dados atualmente ativado]

db2 "chamar get_dbsize_info(?,?,?,-1)"

Resultado:

Valor dos parâmetros de saída


--------------------------
Nome do parâmetro: SNAPSHOTTIMESTAMP
Valor do parâmetro: 2014-07-02-10.27.15.556775
Nome do parâmetro: DATABASESIZE
Valor do parâmetro: 105795584
Nome do parâmetro: DATABASECAPACITY
Valor do parâmetro: 396784705536
Status de retorno = 0

Estimando o espaço necessário para o banco de dados


Para estimar o tamanho de um banco de dados, a contribuição dos seguintes fatores deve ser considerada:

 Tabelas do Catálogo do Sistema


 Dados da tabela do usuário
 Dados de Campo Longo
 Dados de objetos grandes (LOB)
 Espaço de índice
 Espaço de Trabalho Temporário
 dados XML
 Espaço de arquivo de log
 Diretório de banco de dados local
 Arquivos do sistema

Verificando as autoridades do banco de dados


Você pode usar a sintaxe a seguir para verificar quais autoridades de banco de dados são concedidas a
PUBLIC no banco de dados não restritivo.
Passo 1: conecte-se ao banco de dados com id de usuário de autenticação e senha da instância.

Sintaxe: [Para se conectar ao banco de dados com nome de usuário e senha]

db2 conecta-se ao usuário <db_name> <userid> usando <password>

Exemplo: [Para conectar “um” banco de dados com o ID de usuário 'db2inst4' e a senha 'db2inst4']

db2 conecta a um usuário db2inst4 usando db2inst4

Resultado:

Informações de conexão do banco de dados


Servidor de banco de dados = DB2/LINUXX8664 10.1.0
ID de autorização SQL = DB2INST4
Alias do banco de dados local = ONE

Passo 2: Para verificar as autoridades do banco de dados.

Sintaxe: [A sintaxe abaixo mostra o resultado dos serviços de autoridade para o banco de dados atual]

db2 "selecione substr(autoridade,1,25) como autoridade, d_user, d_group,


d_public, role_user, role_group, role_public,d_role da tabela (
sysproc.auth_list_authorities_for_authid ('public','g'))as t
ordem por autoridade"

Exemplo:

db2 "selecione substr(autoridade,1,25) como autoridade, d_user, d_group,


d_public, role_user, role_group, role_public,d_role da tabela (
sysproc.auth_list_authorities_for_authid ('PUBLIC','G'))as t
ordem por autoridade"

Resultado:

AUTORIDADE D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE


------------------------- ------ ------- -------- ---- ----- ---------- ----------- ------
ACCESSCTRL * * N * * N *
BINDADD* *S* *N*
CONECTAR * * S * * N *
CREATETAB * * S * * N *
CREATE_EXTERNAL_ROUTINE * * N * * N *
CREATE_NOT_FENCED_ROUTINE * * N * * N *
CREATE_SECURE_OBJECT * * N * * N *
ACESSO A DADOS * * N * * N *
DBADM * * N * * N *
EXPLIQUE * * N * * N *
IMPLICIT_SCHEMA * * S * * N *
CARREGAR * * N * * N *
QUIESCE_CONNECT * * N * * N *
SECADM * * N * * N *
SQLADM * * N * * N *
SYSADM * * * * * * *
SYSCTRL * * * * * * *
SYSMAINT * * * * * * *
SYSMON * * * * * * *
WLMADM * * N * * N *
20 registros selecionados.

Eliminando banco de dados


Usando o comando Drop, você pode remover nosso banco de dados do diretório do banco de dados da
instância. Este comando pode excluir todos os seus objetos, tabelas, espaços, contêineres e arquivos
associados.

Sintaxe: [Para descartar qualquer banco de dados de uma instância]

banco de dados db2 drop <db_name>

Exemplo: [Para remover o banco de dados 'seis' da instância]

db2 descarta banco de dados seis

Resultado:

DB20000I O comando DROP DATABASE foi concluído com sucesso


DB2 – Bufferpools
Este capítulo apresenta os Bufferpools no banco de dados.

Introdução
O bufferpool é parte de um espaço de memória principal que é alocado pelo gerenciador de banco de dados.
A finalidade dos bufferpools é armazenar em cache a tabela e indexar dados do disco. Todos os bancos de
dados têm seus próprios bufferpools. Um bufferpool padrão é criado no momento da criação do novo banco
de dados. É chamado de “IBMDEFAULTBP”. Dependendo dos requisitos do usuário, é possível criar vários
bufferpools. No bufferpool, o gerenciador de banco de dados coloca os dados da linha da tabela como uma
página. Esta página permanece no bufferpool até que o banco de dados seja encerrado ou até que o espaço
seja gravado com novos dados. As páginas no bufferpool, que são atualizadas com dados, mas não são
gravadas no disco, são chamadas de páginas “sujas”. Após as páginas de dados atualizadas no bufferpool
serem gravadas no disco, o bufferpool está pronto para receber outros dados.

Relação entre tablespaces e bufferpools


Cada espaço de tabela está associado a um buffer pool específico em um banco de dados. Um tablespace
está associado a um bufferpool. O tamanho do bufferpool e do tablespace deve ser o mesmo. Vários
bufferpools permitem que você configure a memória usada pelo banco de dados para aumentar seu
desempenho geral.

Tamanhos do pool de buffers


O tamanho da página do bufferpool é definido quando você usa o comando “CREATE DATABASE”. Se
você não especificar o tamanho da página, será usado o tamanho de página padrão, que é 4 KB. Depois que
o bufferpool é criado, não é possível modificar o tamanho da página posteriormente

Listando os bufferpools disponíveis no diretório atual do banco de


dados
Sintaxe: [A sintaxe abaixo mostra todos os bufferpools disponíveis no banco de dados]

db2 selecionar* de syscat.bufferpools

Exemplo: [Para ver bufferpools disponíveis no banco de dados atual]

db2 selecionar* de syscat.bufferpools

Resultado:

BPNAME BUFFERPOOLID DBPGNAME NPAGES PAGESIZE ESTORE


NUMBLOCKPAGES BLOCKSIZE NGNAME
-------------------------------------------------- ----------
IBMDEFAULTBP
1-
-2 4096 N 0 0 -

1 registro(s) selecionado(s).

Criando o pool de buffers


Para criar um novo bufferpool para o servidor de banco de dados, você precisa de dois parâmetros, a saber,
“nome do bufferpool” e “tamanho da página”. A consulta a seguir é executada para criar um novo
bufferpool.

Sintaxe: [Na sintaxe abaixo, 'bp_name' indica o nome do bufferpool e 'size' indica o tamanho da página que
você precisa declarar para bufferpools (4K,8K,16K,32K)]

db2 cria bufferpool <bp_name> tamanho da página <tamanho>

Exemplo: [Para criar um novo bufferpool com nome “bpnew” e tamanho “8192”(8Kb).]

db2 criar bufferpool bpnew tamanho de página 8192

Resultado

DB20000I O comando SQL foi concluído com êxito.

Eliminando o pool de buffers


Antes de descartar o bufferpool, é necessário verificar se algum tablespace está atribuído a ele.

Sintaxe: [Para descartar o bufferpool]

drop bufferpool <bp_name>

Exemplo: [Para descartar 'bpnew' chamado bufferpool]

db2 drop bufferpool bpnew

Resultado

DB20000I O comando SQL foi concluído com êxito.


DB2 – Espaços de tabela
Este capítulo descreve os tablespaces em detalhes

Introdução
Um espaço de tabela é uma estrutura de armazenamento, contém tabelas, índices, objetos grandes e dados
longos. Ele pode ser usado para organizar dados em um banco de dados em um grupo de armazenamento
lógico que está relacionado com o local onde os dados são armazenados em um sistema. Esses tablespaces
são armazenados em grupos de partição de banco de dados

Benefícios dos tablespaces no banco de dados


Os espaços de tabela são benéficos no banco de dados de várias maneiras, dadas a seguir:

Recuperabilidade: Tablespaces tornam as operações de backup e restauração mais convenientes. Usando


um único comando, você pode fazer backup ou restaurar todos os objetos de banco de dados em tablespaces.

Gestão automática de armazenamento: O gerenciador de banco de dados cria e estende contêineres


dependendo das necessidades.

Utilização de memória: Um único bufferpool pode gerenciar vários tablespaces. Você pode atribuir
tablespaces temporários a seus próprios bufferpools para aumentar o desempenho de atividades como
classificações ou junções.

Recipiente
Tablespaces contém um ou mais contêineres. Um contêiner pode ser um nome de diretório, um nome de
dispositivo ou um nome de arquivo. Em um banco de dados, um único tablespace pode ter vários
contêineres no mesmo dispositivo de armazenamento físico. Se o espaço de tabela for criado com a opção de
espaço de tabela de armazenamento automático, a criação e o gerenciamento de contêineres serão tratados
automaticamente pelo gerenciador de banco de dados. Se não for criado com a opção de espaço de tabela de
armazenamento automático, você mesmo precisará definir e gerenciar os contêineres.

espaços de tabela padrão


Quando você cria um novo banco de dados, o gerenciador de banco de dados cria alguns tablespaces padrão
para o banco de dados. Esses espaços de tabela são usados como armazenamento para dados do usuário e
temporários. Cada banco de dados deve conter pelo menos três tablespaces conforme indicado aqui:

1. espaço de tabela do catálogo


2. espaço de tabela do usuário
3. espaço de tabela temporário

espaço de tabela do catálogo: contém tabelas de catálogo do sistema para o banco de dados. Ele é nomeado
como SYSCATSPACE e não pode ser descartado.

espaço de tabela do usuário: Este tablespace contém tabelas definidas pelo usuário. Em um banco de
dados, temos um tablespace de usuário padrão, denominado USERSPACE1. Se você não especificar o
espaço de tabela definido pelo usuário para uma tabela no momento em que a criar, o gerenciador de banco
de dados escolherá o espaço de tabela do usuário padrão para você.

espaço de tabela temporário: um espaço de tabela temporário contém dados de tabela temporária. Este
tablespace contém tablespaces temporários do sistema ou tablespaces temporários do usuário.

O espaço de tabela temporário do sistema contém dados temporários exigidos pelo gerenciador de banco de
dados durante a execução de operações como classificações ou junções. Um banco de dados deve ter pelo
menos um espaço de tabela temporário do sistema e é nomeado como TEMPSPACE1. Ele é criado no
momento da criação do banco de dados. O espaço de tabela temporário do usuário contém dados
temporários das tabelas. Ele é criado com a instrução DECLARE GLOBAL TEMPORARY TABLE ou
CREATE GLOBAL TEMPORARY TABLE. Esse tablespace temporário não é criado por padrão no
momento da criação do banco de dados.

Tablespaces e gerenciamento de armazenamento:

Tablespaces podem ser configurados de diferentes maneiras, dependendo de como você deseja usá-los. Você
pode configurar o sistema operacional para gerenciar a alocação de espaço de tabela, pode permitir que o
gerenciador de banco de dados aloque espaço ou pode escolher a alocação automática de espaço de tabela
para seus dados.

Os três tipos de espaços gerenciados a seguir estão disponíveis:

Espaço Gerenciado pelo Sistema (SMS): o gerenciador do sistema de arquivos do sistema operacional
aloca e gerencia o espaço onde a tabela é armazenada. O espaço de armazenamento é alocado sob demanda.
Este modelo consiste em arquivos que representam objetos de banco de dados. Esse tipo de tablespace foi
reprovado na Versão 10.1 para tablespaces definidos pelo usuário e não foi reprovado para catálogo e
tablespaces temporários.

Espaço gerenciado do banco de dados (DMS): O servidor de banco de dados controla o espaço de
armazenamento. O espaço de armazenamento é pré-alocado no sistema de arquivos com base na definição
do contêiner que você especifica ao criar o espaço de tabela DMS. Ele foi descontinuado da versão 10.1 fix
pack 1 para tablespaces definidos pelo usuário, mas não foi descontinuado para tablespace do sistema e
tablespace temporário.

Espaço de tabela de armazenamento automático: O servidor de banco de dados pode ser gerenciado
automaticamente. O servidor de banco de dados cria e estende contêineres dependendo dos dados no banco
de dados. Com o gerenciamento de armazenamento automático, não é necessário fornecer definições de
contêiner. O servidor de banco de dados cuida de criar e estender contêineres para usar o armazenamento
alocado para o banco de dados. Se você adicionar espaço de armazenamento a um grupo de armazenamento,
novos contêineres serão criados automaticamente quando o contêiner existente atingir sua capacidade
máxima. Se quiser usar o armazenamento recém-adicionado imediatamente, você pode reequilibrar o
tablespace.

Tamanho da página, tabela e espaço de tabela:

DMS temporário e tablespaces de armazenamento automático, o tamanho da página que você escolher para
seu banco de dados determina o limite máximo para o tamanho do tablespace. Para SMS de tabela e espaços
de tabela de armazenamento automático temporário, o tamanho da página restringe o tamanho da própria
tabela. Os tamanhos de página podem ser 4kb, 8kb, 16kb ou 32kb.

Limite de Limite de Limite de Limite de


tamanho de tamanho de tamanho de tamanho de
Tipo de espaço de tabela
página de página de página de página de
4K 8K 16K 32K
DMS, tablespace de armazenamento automático
64G 128G 256G 512G
não temporário regular
DMS, DMS temporário e espaço de tabela de
armazenamento automático não temporário grande
DB2 – grupos de armazenamento
Este capítulo descreve os grupos de armazenamento do banco de dados.

Introdução
Um conjunto de caminhos de armazenamento para armazenar tabelas ou objetos do banco de dados é um
grupo de armazenamento. Você pode atribuir os tablespaces ao grupo de armazenamento. Quando você cria
um banco de dados, todos os tablespaces usam storagegorup padrão. O grupo de armazenamento padrão
para um banco de dados é 'IBMSTOGROUP'. Quando você cria um novo banco de dados, o grupo de
armazenamento padrão está ativo, se você passar o parâmetro “AUTOMATIC STOGROUP NO” no final do
comando “CREATE DATABASE”. O banco de dados não possui nenhum grupo de armazenamento padrão.

Listando grupos de armazenamento


Você pode listar todos os grupos de armazenamento no banco de dados.

Sintaxe: [Para ver a lista de grupos de armazenamento disponíveis no banco de dados atual]

db2 selecionar* de syscat.stogroups

Exemplo: [Para ver a lista de storagegorups disponíveis no banco de dados atual]

db2 selecionar* de syscat.stogroups

Criando um grupo de armazenamento


Aqui está uma sintaxe para criar um storagegroup no banco de dados:

Sintaxe: [Para criar um novo stogroup. O 'stogropu_name' indica o nome do novo grupo de armazenamento
e o 'caminho' indica o local onde os dados (tabelas) são armazenados]

db2 cria stogroup em 'caminho'


Exemplo: [Para criar um novo stogroup 'stg1' no caminho da pasta 'data1']

db2 cria stogroup stg1 em '/data1'

Resultado:

DB20000I O comando SQL foi concluído com sucesso

Criando tablespace com stogroup


Aqui está como você pode criar um tablespace com storegroup:

Sintaxe: [Para criar um novo tablespace usando um grupo de armazenamento existente]

db2 cria tablespace <tablespace_name>usando stogroup <stogroup_name>

Exemplo: [Para criar um novo tablespace chamado 'ts1' usando o grupo de armazenamento existente 'stg1']

db2 cria tablespace ts1 usando stogroup stg1

Resultado:

DB20000I O comando SQL foi concluído com sucesso

Alterando um grupo de armazenamento


Você pode alterar a localização de um storegroup usando a seguinte sintaxe:

Sintaxe: [Para mudar um grupo de armazenamento do local antigo para o novo local]

db2 alter stogroupadicionar 'localização', 'localização'

Exemplo: [Para modificar o caminho do local antigo para o novo local para o grupo de armazenamento
chamado 'sg1']

db2 alterar stogroup sg1 adicionar'/caminho/dados3', '/caminho/dados4'

Soltando o caminho da pasta do storagegroup


Antes de descartar o caminho da pasta do grupo de armazenamento, você pode adicionar um novo local para
o grupo de armazenamento usando o comando alter.

Sintaxe: [Para descartar o caminho antigo do local do grupo de armazenamento]

db2 alter stogroup drop '/path'

Exemplo: [Para descartar a localização do grupo de armazenamento de 'stg1']

db2 alter stogroup stg1 drop '/path/data1'

Rebalanceando um tablespace
O rebalanceamento do tablespace é necessário quando criamos uma nova pasta para storagegroup ou
tablespaces enquanto as transações são conduzidas no banco de dados e o tablespace fica cheio. O
rebalanceamento atualiza os arquivos de configuração do banco de dados com o novo storagegroup.
Sintaxe: [Para reequilibrar o espaço de tabela do caminho do grupo de armazenamento antigo para o novo
grupo de armazenamento]

db2 altera tablspace <ts_name> rebalanceamento

Exemplo: [Para reequilibrar]

db2 altera tablespace ts1 reequilíbrio

Renomeando um grupo de armazenamento


Sintaxe: [Para modificar o nome do nome de armazenamento existente]

db2 renomear stogroup <old_stg_name> para <new_stg_name>

Exemplo: [Para modificar o nome do grupo de armazenamento de 'sg1' para o novo nome 'sgroup1']

db2 renomear stogroup sg1 para sgroup1

Descartando um grupo de armazenamento


Passo 1: antes de descartar qualquer storagegroup, você pode atribuir algum storagegroup diferente para
tablespaces.

Sintaxe: [Para atribuir outro grupo de armazenamento para espaço de tabela.]

db2 alter tablspace <ts_name>usando stogroup <another sto_group_name>

Exemplo: [Para mudar de um stogroup antigo para um novo stogroup chamado 'sg2' para tablespace 'ts1']

db2 altera tablespace ts1 usando stogroup sg2

Passo 2:

Sintaxe: [Para descartar o stogroup existente]

db2 drop stogorup <stogroup_name>

Exemplo: [Para remover o stogroup 'stg1' do banco de dados]

db2 drop stogroup stg1


DB2 – Esquemas
Este capítulo apresenta e descreve o conceito de Schema.

Introdução
Um esquema é uma coleção de objetos nomeados classificados logicamente no banco de dados.

Em um banco de dados, você não pode criar vários objetos de banco de dados com o mesmo nome. Para
fazer isso, o esquema fornece um ambiente de grupo. Você pode criar vários esquemas em um banco de
dados e vários objetos de banco de dados com o mesmo nome, com diferentes grupos de esquemas.

Um esquema pode conter tabelas, funções, índices, tablespaces, procedimentos, gatilhos, etc. Por exemplo,
você cria dois esquemas diferentes nomeados como “Profissional” e “Pessoal” para um banco de dados
“funcionário”. É possível fazer duas tabelas diferentes com o mesmo nome “Empregado”. Nesse ambiente,
uma mesa contém as informações profissionais e a outra contém as informações pessoais do funcionário.
Apesar de terem duas tabelas com o mesmo nome, elas possuem dois esquemas diferentes “Pessoal” e
“Profissional”. Assim, o usuário pode trabalhar com ambos sem encontrar nenhum problema. Esse recurso é
útil quando há restrições na nomenclatura de tabelas.

Vejamos alguns comandos relacionados ao Schema:

Obtendo o esquema atualmente ativo


Sintaxe:

db2 obter esquema

Exemplo: [Para obter o esquema atual do banco de dados]

db2 obter esquema

Definindo outro esquema para o ambiente atual


Sintaxe:

db2 set schema=<schema_name>

Exemplo: [Para organizar 'schema1' para o ambiente de instância atual]

db2 set schema=schema1

Criando um novo esquema


Sintaxe: [Para criar um novo esquema com id de usuário autorizado]

db2 criar esquema <schema_name> autorização <inst_user>

Exemplo: [Para criar esquema “schema1” autorizado com 'db2inst2”]

db2 criar esquema schema1 autorização db2inst2

Exercício
Vamos criar duas tabelas diferentes com o mesmo nome, mas dois esquemas diferentes. Aqui, você cria uma
tabela de funcionários com dois esquemas diferentes, um para informações pessoais e outro para
informações profissionais.

Passo 1: Crie dois esquemas.

Esquema 1: [Para criar um esquema chamado profissional]

db2 criar esquema de autorização profissional db2inst2

Esquema 2: [Para criar um esquema chamado pessoal]

db2 criar esquema de autorização pessoal db2inst2

Passo 2: Crie duas tabelas com o mesmo nome para detalhes do funcionário

Tabela 1: profissional.funcionário

[Para criar uma nova tabela 'employee' no banco de dados usando o nome do esquema 'professional']

db2 cria tabela professional.employee(número de identificação, nome


varchar(20), profissão varchar(20), join_date data,
número do salário);

Mesa 2: pessoal.funcionário

[Para criar uma nova tabela 'funcionário' no mesmo banco de dados, com o nome do esquema 'pessoal']

db2 cria tabela personal.employee(id number, name


varchar(20), d_data de nascimento, telefone bigint, endereço
varchar(200));

Depois de executar essas etapas, você obtém duas tabelas com o mesmo nome 'employee', com dois
esquemas diferentes.
DB2 – Tipos de dados
Este capítulo apresenta vários tipos de dados usados no DB2.

Introdução
Nas tabelas do banco de dados DB2, cada coluna possui seu próprio tipo de dados, dependendo dos
requisitos do desenvolvedor. Diz-se que o tipo de dados é o tipo e o intervalo dos valores nas colunas de
uma tabela.

Tipos de dados integrados


1. Data hora
a. TEMPO: Representa a hora do dia em horas, minutos e segundos.
b. TIMESTAMP: Representa sete valores de data e hora na forma de ano, mês, dia, horas,
minutos, segundos e microssegundos.
c. ENCONTRO: Representa a data do dia em três partes na forma de ano, mês e dia.
2. Corda
a. Personagem
3. CHAR (comprimento fixo): Comprimento fixo das cadeias de caracteres.
a. comprimento variável
4. VARCHAR: cadeias de caracteres de comprimento variável.
5. CLOB: strings de objetos grandes, você usa isso quando uma string de caracteres pode exceder os
limites do tipo de dados VARCHAR.
a. Gráfico
6. GRÁFICO
a. Comprimento fixo: Strings gráficas de comprimento fixo que contêm caracteres de byte
duplo
b. comprimento variável
7. VARGRÁFICO: Cadeia gráfica de caracteres variados que contém caracteres duplos de adeus.
8. DBCLOB: tipo de objeto grande
a. Binário
9. BLOB(comprimento variável): string binária em objeto grande
10. BOLEANO: Na forma de 0 e 1.
11. numérico assinado
a. Exato
12. Inteiro binário
a. PEQUENO [16BIT]: Usando isso, você pode inserir pequenos valores int em colunas
b. INTEIRO [32BIT]: Usando isso, você pode inserir grandes valores int em colunas
c. BIGINT [64BIT]: Usando isso, você pode inserir valores int maiores em colunas
13. Decimal
a. DECIMAL (embalado)
b. DECFLOAT(ponto flutuante decimal): Usando isso, você pode inserir números de ponto
flutuante decimal
c. Aproximado
14. Pontos flutuantes
a. REAL(precisão simples): Usando este tipo de dados, você pode inserir números de ponto
flutuante de precisão simples.
b. EM DOBRO(precisão dupla): Usando este tipo de dados, você pode inserir números de
ponto flutuante de precisão dupla.
15. Extensible Markup Language
a. XML: você pode armazenar dados XML nesta coluna de tipo de dados.
DB2 – Tabelas
Tabelas são estruturas lógicas mantidas pelo gerenciador de banco de dados. Em uma tabela, cada bloco
vertical é chamado de coluna (Tupla) e cada bloco horizontal é chamado de linha (Entidade). A coleção de
dados armazenados na forma de colunas e linhas é conhecida como tabela. Nas tabelas, cada coluna tem um
tipo de dados diferente. As tabelas são usadas para armazenar dados persistentes.

Tipo de tabelas
 Tabelas Base: Eles mantêm dados persistentes. Existem diferentes tipos de tabelas base, incluindo:
o Mesas Regulares: tabelas de uso geral, tabelas comuns com índices são tabelas de uso geral.
o Tabela de agrupamento multidimensional (MDC): esse tipo de tabela agrupada
fisicamente em mais de uma chave e usada para manter grandes ambientes de banco de
dados. Esses tipos de tabelas não são suportados no DB2 pureScale.
o Inserir tabela de agrupamento de tempo (ITC): Semelhante às tabelas MDC, as linhas são
agrupadas no momento em que são inseridas nas tabelas. Eles podem ser tabelas
particionadas. Eles também não suportam o ambiente pureScale.
o Tabela de tabelas agrupadas por intervalo (RCT): esse tipo de tabela fornece acesso
rápido e direto aos dados. Estes são implementados como clusters sequenciais. Cada registro
na tabela tem um ID de registro. Esses tipos de tabelas são usados onde os dados são
agrupados firmemente com uma ou mais colunas na tabela. Esse tipo de tabela também não é
compatível com DB2 pureScale.
o Tabelas particionadas: esse tipo de tabela é usado no esquema de organização de dados, no
qual os dados da tabela são divididos em vários objetos de armazenamento. As partições de
dados podem ser adicionadas, anexadas e desanexadas de uma tabela particionada. Você pode
armazenar várias partições de dados de uma tabela em um tablespace.
o Tabelas temporais: O histórico de uma tabela em um banco de dados é armazenado em
tabelas temporais, como detalhes das modificações feitas anteriormente.
 Tabelas Temporárias: Para trabalho temporário de diferentes operações de banco de dados, você
precisa usar tabelas temporárias. As tabelas temporárias (DGTTs) não aparecem no catálogo do
sistema, as colunas XML não podem ser utilizadas nas tabelas temporárias criadas.
 Tabelas de consultas materializadas: MQT pode ser usado para melhorar o desempenho das
consultas. Esses tipos de tabelas são definidos por uma consulta, que é usada para determinar os
dados nas tabelas.

Criando Tabelas
A seguinte sintaxe cria a tabela:

Sintaxe: [Para criar uma nova tabela]

db2 cria tabela <schema_name>.<table_name>


(column_name column_type....) em <tablespace_name>

Exemplo: Criamos uma tabela para armazenar os detalhes do “funcionário” no esquema de “profissional”.
Esta tabela possui campos “id, name, jobrole, joindate, salary” e os dados desta tabela seriam armazenados
no tablespace “ts1”.

db2 cria tabela professional.employee(id int, nome


varchar(50),jobrole varchar(30),data de junção,
salário duplo) em ts1

Resultado:
DB20000I O comando SQL foi concluído com êxito.

Listagem de detalhes da tabela


A seguinte sintaxe é usada para listar os detalhes da tabela:

Sintaxe: [Para ver a lista de tabelas criadas com esquemas]

db2 selecione tabname, tabschema, tbspace de syscat.tables

Exemplo: [Para ver a lista de tabelas no banco de dados atual]

db2 selecione tabname, tabschema, tbspace de syscat.tables

Resultado:

TABNAME TABSCHEMA TBSPACE


------------ ------------- --------
EMPREGADO PROFISSIONAL TS1

1 registro(s) selecionado(s).

Listando colunas em uma tabela


A sintaxe a seguir lista colunas em uma tabela:

Sintaxe: [Para ver colunas e tipos de dados de uma tabela]

db2 descreve a tabela <table_name>

Exemplo: [Para ver as colunas e os tipos de dados da tabela 'employee']

db2 descreve a tabela professional.employee

Resultado:

Tipo de dados Coluna


Esquema do nome da coluna Nome do tipo de dados Comprimento Escala Nulos
------ ----- --------- ----------------- --------- ---- - ------
ID SYSIBM INTEGER 4 0 Sim
NOME SYSIBM VARCHAR 50 0 Sim
JOBROLE SYSIBM VARCHAR 30 0 Sim
JOINDATE SYSIBM DATE 4 0 Sim
SALÁRIO SISTEMA DUPLO 8 0 Sim

5 registros selecionados.

Colunas Ocultas

Você pode ocultar uma coluna inteira de uma tabela. Se você chamar a consulta “selecionar * de”, as
colunas ocultas não serão retornadas na tabela resultante. Quando você insere dados em uma tabela, uma
instrução “INSERT” sem uma lista de colunas não espera valores para nenhuma coluna oculta
implicitamente. Esses tipos de colunas são altamente referenciados em tabelas de consulta materializada.
Esses tipos de colunas não suportam a criação de tabelas temporárias.

Criando tabela com coluna oculta


A seguinte sintaxe cria uma tabela com colunas ocultas:

Sintaxe: [Para criar uma tabela com colunas ocultas]

db2 cria tabela <tab_name> (col1 datatype,col2 datatype


implicitamente oculto)

Exemplo: [Para criar uma tabela 'cliente' com colunas ocultas 'telefone']

db2 create table professional.customer(custid integer not


nulo, nome completo varchar(100), telefone char(10)
implicitamente oculto)

Inserindo valores de dados na tabela


A seguinte sintaxe insere valores na tabela:

Sintaxe: [Para inserir valores em uma tabela]

db2 inserir em <tab_name>(col1,col2,...)


valores(val1,val2,..)

Exemplo: [Para inserir valores na tabela 'cliente']

db2 inserir em professional.customer(custid, fullname, phone)


values(100,'ravi','9898989')

db2 inserir em professional.customer(custid, fullname, phone)


values(101,'krathi','87996659')

db2 inserir em professional.customer(custid, fullname, phone)


values(102,'gopal','768678687')

Resultado:

DB20000I O comando SQL foi concluído com êxito.

Recuperando valores da tabela


A seguinte sintaxe recupera valores da tabela:

Sintaxe: [Para recuperar valores de uma tabela]

db2 selecione * de <tab_name>

Exemplo: [Para recuperar valores da tabela 'cliente']

db2 selecione * de profissional.cliente

Resultado:

CUSTID NOME COMPLETO


----------- ------------------------
100 ravi

101 krathi
102 gopal

3 registros selecionados.

Recuperando valores de uma tabela incluindo colunas ocultas


A seguinte sintaxe recupera valores de colunas selecionadas:

Sintaxe: [Para recuperar valores de colunas ocultas selecionadas de uma tabela]

db2 selecione col1,col2,col3 de <tab_name>

Exemplo: [Para recuperar os valores das colunas selecionadas resultam de uma tabela]

db2 selecione custid,nome completo,telefone do profissional.cliente

Resultado:

CUSTID NOME COMPLETO TELEFONE


------- --------- -------------
100ravi 9898989

101 Krathi 87996659

102 gopal 768678687

3 registros selecionados.

Se você quiser ver os dados nas colunas ocultas, você precisa executar o comando “DESCRIBE”.

Sintaxe:

db2 descreve a tabela <table_name> mostra detalhes

Exemplo:

db2 descreve a tabela profissional.cliente mostra detalhes

Resultado:

Nome da coluna Esquema do tipo de dados Nome do tipo de dados Coluna


código da chave de partição da coluna
Nulos de escala de comprimento
página de sequência numérica Oculto Padrão
--------------- -------------------- --------------- -------- ----
---- -------- ---------- ------------- -------- ------- ---- ------
---
CUSTID SYSIBM INTEGER 4 0
Não 0 0 0 Não
NOME COMPLETO SYSIBM VARCHAR 100 0
Sim 1 0 1208 Não

TELEFONE SYSIBM CARACTER 10 0


Sim 2 0 1208 Implicitamente

3 registros selecionados.

Alterando o tipo de colunas da tabela


Você pode modificar nossa estrutura de tabela usando este comando “alter” da seguinte forma:

Sintaxe:

db2 alterar tabela <tab_name> alterar coluna <col_name> definir tipo de dados
<data_type>

Exemplo:[Para modificar o tipo de dados da coluna “id” de “int” para “bigint” para a tabela de
funcionários]

db2 alter table professional.employee altera id de coluna conjunto tipo de dados bigint

Resultado::

DB20000I O comando SQL foi concluído com êxito.

Alterando o nome da coluna


Você pode alterar o nome da coluna conforme mostrado abaixo:

Sintaxe: [Para modificar o nome da coluna do nome antigo para o novo nome de uma tabela]

db2 alter table <tab_name> renomeie a coluna <old_name> para <new_name>

Exemplo:[Para modificar o nome da coluna de “fullname” para “custname” na tabela “customers”.]

db2 alter table professional.customer renomear coluna fullname para custname

Soltando as mesas
Para excluir qualquer tabela, você precisa usar o comando “DROP” da seguinte forma:

Sintaxe:

db2 drop table <tab_name>

Exemplo:[Para descartar o banco de dados do formulário da tabela do cliente]

db2 drop table profissional.clientes

Para excluir toda a hierarquia da tabela (incluindo gatilhos e relação), você precisa usar o comando “DROP
TABLE HIERARCHY”.

Sintaxe:

db2 drop table hierarquia <tab_name>

Exemplo:[Para descartar toda a hierarquia de uma tabela 'cliente']

db2 drop table hierarquia profissional.clientes


DB2 - Alias
Este capítulo descreve a criação de alias e a recuperação de dados usando alias de objetos de banco de
dados.

Introdução
Alias é um nome alternativo para objetos de banco de dados. Ele pode ser usado para fazer referência ao
objeto de banco de dados. Você pode dizer que é um apelido para objetos de banco de dados. Alias são
definidos para os objetos para tornar seu nome curto, reduzindo assim o tamanho da consulta e aumentando
a legibilidade da consulta.

Criando aliases de objeto de banco de dados


Você pode criar um alias de objeto de banco de dados conforme mostrado abaixo:

Sintaxe:

db2 criar alias<alias_name> para <table_name>

Exemplo: Criando um nome de alias para a tabela “professional.customer”

db2 cria alias pro_cust para professional.customer

Se você passar “SELECT * FROM PRO_CUST” ou “SELECT * FROM PROFESSIONAL.CUSTOMER”


o servidor de banco de dados mostrará o mesmo resultado.

Sintaxe: [Para recuperar valores de uma tabela diretamente com o nome do esquema]

db2 selecionar* de <schema_name>.<table_name>

Exemplo: [Para recuperar valores da tabela customer]

db2 selecionar* de profissional.cliente

Resultado:

CUSTID NOME COMPLETO TELEFONE


----------------- ------------
100ravi 9898989
101 Krathi 87996659
102 gopal 768678687

3 registros selecionados.

Recuperando valores usando o nome alternativo da tabela


Você pode recuperar valores do banco de dados usando o nome alternativo, conforme mostrado abaixo:

Sintaxe: [Para recuperar valores da tabela chamando o nome alternativo da tabela]

db2 selecionar* de <alias_name>

Exemplo: [Para recuperar valores da tabela customer usando o nome alternativo]


db2 selecionar* de pro_cust

Resultado:

CUSTID NOME COMPLETO TELEFONE


----------------- ------------
100ravi 9898989
101 Krathi 87996659
102 gopal 768678687

3 registros selecionados.
DB2 - Restriçõ es
Este capítulo descreve várias restrições no banco de dados.

Introdução
Para reforçar a integridade do banco de dados, um conjunto de regras é definido, chamado de restrições. As
restrições permitem ou proíbem os valores nas colunas.

Em atividades de banco de dados em tempo real, os dados devem ser adicionados com certas restrições. Por
exemplo, em um banco de dados de vendas, sales-id ou transaction-id devem ser únicos. Os tipos de
restrições são:

 NÃO NULO
 Único
 Chave primária
 Chave Estrangeira
 Verificar
 Informativo

As restrições são associadas apenas a tabelas. Eles são aplicados apenas a tabelas específicas. Eles são
definidos e aplicados à tabela no momento da criação da tabela.

Explicação de cada restrição:


NÃO NULO

É uma regra proibir valores nulos de uma ou mais colunas da tabela.

Sintaxe:

db2 cria tabela <table_name>(col_name col_type não nulo,..)

Exemplo: [Para criar uma tabela de vendas, com quatro colunas (id, itemname, qty, price) adicionando
restrições “não nulas” a todas as colunas para evitar formar qualquer célula nula na tabela.]

db2 cria tabela shopper.sales(id bigint não nulo, itemname


varchar(40) não nulo, quantidade int não nula, preço duplo não nulo)

Inserindo valores NOT NULL na tabela

Você pode inserir valores na tabela conforme abaixo:

Exemplo:[ERROConsulta aleatória]

db2 inserir em shopper.sales(id,itemname,qty)


valores(1,'raagi',12)

Resultado:[consulta correta]

DB21034E O comando foi processado como uma instrução SQL porque


não era um

comando válido do processador de linha de comando. Durante o processamento SQL


ele retornou:

SQL0407N Atribuição de um valor NULL a uma coluna NOT NULL


"TBSPACEID=5,

TABLEID=4, COLNO=3" não é permitido. SQLSTATE=23502

Exemplo:[consulta correta]

db2 inserir em shopper.sales(id,itemname,qty,price)


valores(1,'raagi',12, 120,00)

db2 inserir em shopper.sales(id,itemname,qty,price)


valores(1,'raagi',12, 120,00)

Resultado:

DB20000I O comando SQL foi concluído com êxito.

Restrições únicas

Usando essas restrições, você pode definir valores de colunas exclusivamente. Para isso, as restrições únicas
são declaradas com a restrição “not null” no momento da criação da tabela.

Sintaxe:

db2 cria tabela <tab_name>(<col> <col_type> não nulo exclusivo, ...)

Exemplo:

db2 cria tabela shopper.sales1(id bigint não nulo exclusivo,


nome do item varchar(40) não nulo, quantidade int não nula, preço
duplo não nulo)

Inserindo os valores na tabela

Exemplo:Para inserir quatro linhas diferentes com IDs exclusivos como 1, 2, 3 e 4.

db2 inserir em shopper.sales1(id, itemname, qtde, preço)


valores(1, 'doce', 100, 89)

db2 inserir em shopper.sales1(id, itemname, qtde, preço)


valores(2, 'choco', 50, 60)

db2 inserir em shopper.sales1(id, itemname, qtde, preço)


valores(3, 'manteiga', 30, 40)

db2 inserir em shopper.sales1(id, itemname, qtde, preço)


valores(4, 'leite', 1000, 12)

Exemplo:Para inserir uma nova linha com o valor “id” 3

db2 inserir em shopper.sales1(id, itemname, qtde, preço)


valores(3, 'queijo', 60, 80)

Resultado: quando você tentar inserir uma nova linha com o valor de id existente, ele mostrará este
resultado:

DB21034E O comando foi processado como uma instrução SQL


porque não era um
comando válido do processador de linha de comando. Durante
O processamento SQL retornou:

SQL0803N Um ou mais valores na instrução INSERT,


Instrução UPDATE ou atualização de chave estrangeira causada por um
A instrução DELETE não é válida porque a chave primária,
restrição única ou índice único identificado por restrições "1"
tabela "SHOPPER.SALES1" tenha valores duplicados para o
chave de índice. SQLSTATE=23505

Chave primária

Semelhante às restrições exclusivas, você pode usar uma restrição de “chave primária” e uma “chave
estrangeira” para declarar relacionamentos entre várias tabelas.

Sintaxe:

db2 cria tabela <tab_name>( ,.., primária


chave ())

Exemplo: Para criar a tabela 'vendedores' com “sid” como chave primária

db2 cria tabela shopper.salesboys(sid int não nulo, nome


varchar(40) não nulo, salário duplo não nulo, restrição
pk_boy_id chave primária (sid))

Chave estrangeira

Uma chave estrangeira é um conjunto de colunas em uma tabela que devem corresponder a pelo menos uma
chave primária de uma linha em outra tabela. É uma restrição referencial ou restrição de integridade
referencial. É uma regra lógica sobre valores em várias colunas em uma ou mais tabelas. Ele permite o
relacionamento necessário entre as tabelas.

Anteriormente, você criou uma tabela chamada “shopper.salesboys” . Para esta tabela, a chave primária é
“sid”. Agora você está criando uma nova tabela que contém os dados pessoais do vendedor com um
esquema diferente denominado “funcionário” e uma tabela denominada “vendedores”. Neste caso, “sid” é a
chave estrangeira.

Sintaxe:

db2 cria tabela <tab_name>(<col> <col_type>,constraint


<const_name> chave estrangeira (<col_name>)
referência <ref_table> (<ref_col>)

Exemplo: [Para criar uma tabela chamada 'salesboys' com coluna de chave estrangeira 'sid']

db2 cria tabela employee.salesboys(


sid int,
nome varchar(30) não nulo,
telefone int não nulo,
restrição fk_boy_id
chave estrangeira (sid)
referências shopper.salesboys (sid)
ao excluir restringir
)

Exemplo: [Inserindo valores na tabela de chave primária “shopper.salesboys”]

db2 inserir em valores de shopper.salesboys(100,'raju',20000.00),


(101,'kiran',15000.00),
(102,'radha',10000.00),
(103,'wali',20000.00),
(104,'rayan',15000.00)

Exemplo: [Inserindo valores na tabela de chave estrangeira “employee.salesboys” [sem erro]]

db2 inserir nos valores de employee.salesboys(100,'raju',98998976),


(101,'kiran',98911176),
(102,'radha',943245176),
(103,'wali',89857330),
(104,'rayan',89851130)

Se você digitou um número desconhecido, que não está armazenado na tabela “shopper.salesboys”, ele
mostrará um erro de SQL.

Exemplo: [erro de execução]

db2 inserir nos valores de employee.salesboys(105,'rayan',89851130)

Resultado:

DB21034E O comando foi processado como uma instrução SQL porque


não era um comando válido do processador de linha de comando. Durante o SQL
o processamento retornou: SQL0530N O valor de inserção ou atualização de
a FOREIGN KEY "EMPLOYEE.SALESBOYS.FK_BOY_ID" não é igual a nenhuma
valor da chave pai da tabela pai. SQLSTATE=23503

Verificando restrição

Você precisa usar essa restrição para adicionar restrições condicionais para uma coluna específica em uma
tabela.

Sintaxe:

db2 criar tabela


(
chave primária (),
verificação de restrição (condição ou condição)
)

Exemplo: [Para criar a tabela emp1 com valores de restrições]

db2 criar tabela empl


(id smallint não nulo,
nome varchar(9),
dept verificação smallint (dept entre 10 e 100),
trabalho char(5) cheque (trabalho em ('vendas', 'mgr', 'escriturário')),
data de contratação,
salário decimal(7,2),
com decimal(7,2),
chave primária (id),
verificação anual de restrição (ano (data de contratação) > 1986 ou salário > 40500)
)

Inserindo valores

Você pode inserir valores em uma tabela conforme mostrado abaixo:

db2 inserir em valores empl (1,'lee', 15, 'mgr', '1985-01-01',


40.000,00, 1.000,00)
Soltando a restrição
Vamos ver as sintaxes para descartar várias restrições.

Eliminando a restrição UNIQUE

Sintaxe:

db2 alter table <tab_name> descartar <const_name> exclusivo

Descartando a chave primária

Sintaxe:

db2 alter table <tab_name> drop chave primária

Restrição de verificação descartada

Sintaxe:

db2 alter table <tab_name> drop check <check_const_name>

Descartando chave estrangeira

Sintaxe:

db2 alter table <tab_name> drop foreigh key <foreign_key_name>


DB2 – Índices
Este capítulo aborda a introdução aos índices, seus tipos, criação e descarte.

Introdução
Índice é um conjunto de ponteiros, que pode se referir a linhas em uma tabela, blocos em tabelas MDC ou
ITC, dados XML em um objeto de armazenamento XML que são logicamente ordenados pelos valores de
uma ou mais chaves. Ele é criado nas colunas da tabela do DB2 para acelerar o acesso aos dados para as
consultas e agrupar e particionar os dados com eficiência. Também pode melhorar o desempenho da
operação na exibição. Uma tabela com um índice exclusivo pode ter linhas com chaves exclusivas.
Dependendo dos requisitos da tabela, você pode obter diferentes tipos de índices.

Tipos de índices
 Índices exclusivos e não exclusivos
 Índices clusterizados e não clusterizados

Criando índices
Para criar índices exclusivos, você usa a seguinte sintaxe:

Sintaxe:

db2 cria índice exclusivo <index_name> em


<table_name>(<unique_column>) include (<column_names..>)

Exemplo: Para criar um índice para a tabela “shopper.sales1”.

db2 cria índice exclusivo sales1_indx em


shopper.sales1(id) include (itemname)

Índices de queda
Para descartar o índice, você usa a seguinte sintaxe:

Sintaxe:

db2 solta o índice exclusivo <index_name> em


<table_name>(<unique_column>) include (<column_names..>)

Exemplo:

db2 drop index sales_index


DB2 – Gatilhos
Este capítulo descreve os gatilhos, seus tipos, criação e eliminação dos gatilhos.

Introdução
Um gatilho é um conjunto de ações executadas para responder a uma operação INSERT, UPDATE ou
DELETE em uma tabela especificada no banco de dados. Os gatilhos são armazenados no banco de dados
de uma só vez. Eles lidam com a governança de dados. Eles podem ser acessados e compartilhados entre
vários aplicativos. A vantagem de usar triggers é que, se alguma alteração precisar ser feita na aplicação, ela
é feita na trigger; em vez de alterar cada aplicativo que está acessando o gatilho. Os gatilhos são fáceis de
manter e impõem um desenvolvimento de aplicativos mais rápido. Os gatilhos são definidos usando uma
instrução SQL “CREATE TRIGGER”.

Tipos de gatilhos
Existem dois tipos de gatilhos:

1. ANTES dos gatilhos

Eles são executados antes de qualquer operação SQL.

2. DEPOIS dos gatilhos

Eles são executados após qualquer operação SQL.

Criando um gatilho ANTES


Vejamos como criar uma sequência de trigger:

Sintaxe:

db2 cria sequência <seq_name>

Exemplo: Criando uma sequência de gatilhos para a tabela shopper.sales1

db2 cria sequência sales1_seq comoint começa com 1 incremento de 1

Sintaxe:

db2 cria gatilho <trigger_name>sem cascata antes de inserir


<table_name> referenciando novocomo <table_object> para cada conjunto de linhas
<table_object>.<col_name>=nextval para<sequence_name>

Exemplo: Criando gatilho para a tabela shopper.sales1 para inserir números de chave primária
automaticamente

db2 criar gatilho sales1_trigger sem cascata antes de inserir


shopper.sales1 referenciando novocomo obj para cada conjunto de linhas
obj.id=nextval para sales1_seq

Agora tente inserir qualquer valor:


db2 inserir em shopper.sales1(itemname, qtde, preço)
valores('bichinhos',100, 24,00)

Recuperando valores da tabela


Vejamos como recuperar valores de uma tabela:

Sintaxe:

db2 selecionar* de <tablename>

Exemplo:

db2 selecionar* de comprador.vendas1

Resultado:

ID ITEMNAME QUANTIDADE
------------------- ----------
3 bicos 100
2 pães 100

2 registros selecionados.

Criando um gatilho AFTER


Vamos ver como criar um gatilho posterior:

Sintaxe:

db2 cria gatilho <trigger_name>sem cascata antes de inserir


<table_name> referenciando novocomo <table_object> para cada conjunto de linhas
<table_object>.<col_name>=nextval para <sequence_name>

Exemplo:[Para inserir e recuperar os valores]

db2 cria gatilho sales1_tri_after após inserir em shopper.sales1


para cada modo de linha, o db2sql inicia a atualização atômica shopper.sales1
definir preço=quantidade*preço;fim

Resultado:

//inserindo valores em shopper.sales1


db2 inserir em shopper.sales1(itemname,qty,price)
values('chiken',100,124.00)
//resultado
ID ITEMNAME QUANTIDADE PREÇO
------------------- ----------- -----------
3 bichas 100 2400,00
4 frango 100 12400.00
2 pães 100 2400.00

3 registros selecionados.

Soltando um gatilho
Aqui está como um gatilho de banco de dados é descartado:
Sintaxe:

db2 drop trigger <trigger_name>

Exemplo:

db2 drop trigger slaes1_trigger


DB2 – Sequê ncias
Este capítulo apresenta o conceito de sequência, criação de sequência, visualização da sequência e descarte.

Introdução
Uma sequência é uma função de software que gera números inteiros em ordem crescente ou decrescente,
dentro de um intervalo definido, para gerar a chave primária e coordenar outras chaves na tabela. Você usa a
sequência para aproveitar números inteiros, digamos, para employee_id ou transaction_id. Uma sequência
pode suportar os tipos de dados SMALLINT, BIGINT, INTEGER e DECIMAL. Uma sequência pode ser
compartilhada entre vários aplicativos. Uma sequência é incrementada ou decrementada independentemente
das transações.

Uma sequência é criada pela instrução CREATE SEQUENCE.

Tipos de Sequências
Existem dois tipos de sequências disponíveis:

 PRÓXIMO: Retorna um valor incrementado para um número de sequência.


 VALOR ANTERIOR: Retorna o valor gerado recentemente.

Parâmetros de sequências
Os seguintes parâmetros são usados para sequências:

Tipo de dados: Este é o tipo de dados do valor incrementado retornado. (SMALLINT, BIGINT, INTEGER,
NUMBER, DOUBLE)

COMEÇAR COM: O valor de referência com o qual a sequência começa.

MINVALUE: Um valor mínimo para iniciar uma sequência.

VALOR MÁXIMO: Um valor máximo para uma sequência.

INCREMENTO POR: valor do passo pelo qual uma sequência é incrementada.

Ciclismo de sequência: a cláusula CYCLE causa a geração da sequência repetidamente. A geração da


sequência é realizada referenciando o valor retornado, que é armazenado no banco de dados pela geração da
sequência anterior.

Criando uma sequência


Você pode criar uma sequência usando a seguinte sintaxe:

Sintaxe:

db2 cria sequência <seq_name>

Exemplo: [Para criar uma nova sequência com o nome 'sales1_seq' e aumentando os valores de 1]

db2 cria sequência sales1_seq como int start


com 1 incremento de 1

Visualizando as sequências
Você pode visualizar uma sequência usando a sintaxe fornecida abaixo:

Sintaxe:

valor db2 <anterior/próximo> valor para <seq_name>

Exemplo: [Para ver a lista de valores atualizados anteriores na sequência 'sales1_seq']

DB2 avalia o valor anterior para sales1_seq

Resultado:

1
-----------
4
1 registro(s) selecionado(s).

Soltando a sequência
Para remover a sequência, você precisa usar o comando “DROP SEQUENCE”. Aqui está como você faz
isso:

Sintaxe:

db2 drop sequence <seq_name>>

Exemplo: [Para descartar a sequência 'sales1_seq' do banco de dados]

db2 drop sequence sales1_seq

Resultado:

DB20000I O comando SQL foi concluído com êxito.


DB2 – Visualizaçõ es
Este capítulo descreve a introdução de visualizações, criando, modificando e eliminando as visualizações.

Introdução
Uma visão é uma forma alternativa de representar os dados armazenados nas tabelas. Não é uma tabela real
e não possui nenhum armazenamento permanente. View fornece uma maneira de ver os dados em uma ou
mais tabelas. É uma especificação nomeada de uma tabela de resultados.

Criando uma visualização


Você pode criar uma exibição usando a seguinte sintaxe:

Sintaxe:

db2 cria visualização <view_name>(<col_name>,


<col_name1...)como selecionar <cols>..
a partir de<table_name>

Exemplo: Criando visualização para a tabela shopper.sales1

db2 create view view_sales1(id, itemname, qtde, preço)


Comoselecione id, nome do item, quantidade, preço de
comprador.vendas1

Modificando uma visualização


Você pode modificar uma exibição usando a seguinte sintaxe:

Sintaxe:

db2 alter view <view_name> altere <col_name>


adicionar escopo <table_or_view_name>

Exemplo: [Para adicionar uma nova coluna de tabela à visualização existente 'view_sales1']

db2 alter view view_sales1 alter id add


escopo comprador.vendas1

Soltando a visualização
Você pode descartar uma exibição usando a seguinte sintaxe:

Sintaxe:

db2 drop view <view_name>

Exemplo:

db2 drop view sales1_view


DB2 – com XML
Este capítulo descreve o uso de XML com o DB2.

Introdução
O recurso PureXML permite armazenar documentos XML bem formados em colunas de tabelas de banco de
dados. Essas colunas possuem banco de dados XML. Os dados são mantidos em sua forma hierárquica
nativa, armazenando dados XML na coluna XML. Os dados XML armazenados podem ser acessados e
gerenciados pela funcionalidade do servidor de banco de dados DB2. O armazenamento de dados XML em
sua forma hierárquica nativa permite pesquisa, recuperação e atualização eficientes de XML. Para atualizar
um valor em dados XML, você precisa usar XQuery, SQL ou uma combinação de ambos.

Criando um banco de dados e uma tabela para armazenar dados


XML
Crie um banco de dados emitindo a seguinte sintaxe:

Sintaxe:

db2 criar banco de dados xmldb

Por padrão, os bancos de dados usam o conjunto de códigos UTF-8 (UNICODE). Ative o banco de dados e
conecte-se a ele:

Sintaxe:

db2 ativar db <db_name>


db2 conectar a <db_name>

Exemplo:

db2 ativar db xmldb


db2 conectar ao xmldb

Crie um arquivo XML bem formado e crie uma tabela com o tipo de dados da coluna como 'XML'. É
obrigatório passar a consulta SQL contendo a sintaxe XML entre aspas duplas.

Sintaxe:

db2 “criar tabela <esquema>.<tabela>(col <tipo de dados>,


col <tipo de dados xml>)”

Exemplo:

db2 "criar tabela shope.books(id bigint não nulo


chave primária, livro XML)"

Inserir valores xml na tabela, documentos XML bem formados são inseridos na coluna de tipo XML usando
a instrução SQL 'INSERT'.

Sintaxe:

db2 “inserir em<table_name> valores(valor1, valor2)”


Exemplo:

db2 "insert into shope.books values(1000, '<catálogo>


<livro>

<autor> Gambardella Matthew</autor>


<title>Guia do Desenvolvedor XML</title>
<gênero>Computador</gênero>
<preço>44,95</preço>
<publish_date>2000-10-01</publish_date>
<description>Uma visão detalhada da criação de aplicativos
com XML</description>
</book>

</catálogo>')"

Atualizando dados XML em uma tabela


Você pode atualizar dados XML em uma tabela usando a seguinte sintaxe:

Sintaxe:

db2 “atualizar <table_name>definir <coluna>=<valor> onde


<coluna>=<valor>”

Exemplo:

db2 "update shope.books set book='<catálogo>

<livro>
<autor> Gambardella, Mateus</autor>
<title>Guia do Desenvolvedor XML</title>
<gênero>Computador</gênero>
<preço>44,95</preço>
<publish_date>2000-10-01</publish_date>
<description>Um XML detalhado</description>

</book>

</catálogo>' onde id=1000"


DB2 – Backup e Recuperaçã o
Este capítulo descreve os métodos de backup e restauração do banco de dados.

Introdução
Os métodos de backup e recuperação são projetados para manter nossas informações seguras. Na interface
de linha de comando (CLI) ou interface gráfica do usuário (GUI) usando utilitários de backup e recuperação,
você pode fazer backup ou restaurar os dados dos bancos de dados no DB2 UDB.

Exploração madeireira
Os arquivos de log consistem em logs de erro, que são usados para recuperar de erros de aplicativos. Os logs
mantêm o registro das alterações no banco de dados. Existem dois tipos de registro, conforme descrito
abaixo:

Registro circular

É um método onde os antigos logs de transações são sobrescritos quando há necessidade de alocar um novo
arquivo de log de transações, apagando assim as sequências de arquivos de log e reutilizando-os. Você tem
permissão para fazer backup completo apenas no modo offline. ou seja, o banco de dados deve estar off-line
para fazer o backup completo.

Log de arquivo

Este modo oferece suporte para backup online e recuperação de banco de dados usando arquivos de log
chamados rollforward recovery. O modo de backup pode ser alterado de circular para arquivo definindo
logretain ou userexit como ON. Para criação de log de arquivo, o banco de dados de configuração de backup
requer um diretório gravável para o processo do DB2.

Cópia de segurança
Usando o comando Backup, você pode fazer uma cópia de todo o banco de dados. Esta cópia de backup
inclui arquivos de sistema de banco de dados, arquivos de dados, arquivos de log, informações de controle e
assim por diante.

Você pode fazer backup enquanto trabalha offline e online.

Backup off-line

Sintaxe:[Para listar os aplicativos/bancos de dados ativos]

aplicativo de lista db2

Resultado:

AutenticaçãoAplicação de ID Appl. ID do aplicativo


DB # de
Identificador de nome
NomeAgentes
---------------------- ---------- ---------------------
------------------------------------------------- -----
DB2INST1 db2bp 39
*LOCAL.db2inst1.140722043938
UM 1

Sintaxe:[Para forçar a aplicação usando app. ID manipulado]

db2 "aplicação de força (39)"

Resultado:

DB20000I O comando FORCE APPLICATION foi concluído


com sucesso.

DB21024I Este comando é assíncrono e pode não


ser eficaz imediatamente.

Sintaxe:[Para encerrar a conexão do banco de dados]

db2 terminar

Sintaxe:[Para desativar o banco de dados]

db2 desativar banco de dados um

Sintaxe:[Para pegar o arquivo de backup]

banco de dados de backup db2 <db_name> para <local>

Exemplo:

banco de dados de backup db2 um para /home/db2inst1/

Resultado:

Backup bem-sucedido.O timestamp para esta imagem de backup é:


20140722105345

backup on-line
Para começar, você precisa alterar o modo de registro circular para registro de arquivo.

Sintaxe:[Para verificar se o banco de dados está usando registro circular ou de arquivo]

db2 obtém db cfg para um | grep LOGARCH

Resultado:

Primeiro método de arquivo de log (LOGARCHMETH1)= DESLIGADO


Compactação de arquivo para logarchmeth1 (LOGARCHCOMPR1)= DESLIGADO
Opçõespara logarchmeth1 (LOGARCHOPT1) =
Segundo método de arquivo de log (LOGARCHMETH2) = OFF
Compactação de arquivo para logarchmeth2 (LOGARCHCOMPR2)= DESLIGADO
Opçõespara logarchmeth2 (LOGARCHOPT2) =

Na saída acima, os valores realçados são [logarchmeth1 and logarchmeth2] no modo desligado, o que
implica que o banco de dados atual está no modo “CIRCULLAR LOGGING”. Se você precisa trabalhar
com o modo 'ARCHIVE LOGGING', você precisa alterar ou adicionar o caminho nas variáveis
logarchmeth1 e logarchmeth2 presentes no arquivo de configuração.

Atualizando logarchmeth1 com o diretório de arquivo necessário


Sintaxe:[Para fazer diretórios]

cópia de segurança do mkdir


mkdir backup/ArchiveDest

Sintaxe:[Para fornecer permissões de usuário para a pasta]

chown db2inst1:db2iadm1 backup/ArchiveDest

Sintaxe:[Para atualizar a configuração LOGARCHMETH1]

configuração do banco de dados de atualização db2 para um usando LOGARCHMETH1


'DISK:/home/db2inst1/backup/ArchiveDest'

Você pode fazer backup offline por segurança, ativar o banco de dados e conectar-se a ele.

Sintaxe:[Para fazer backup online]

banco de dados de backup db2 um online para


/home/db2inst1/onlinebackup/ compress incluem logs

Resultado:

banco de dados de backup db2 um online para


/home/db2inst1/onlinebackup/ compress incluem logs

Verifique o arquivo de backup usando o seguinte comando:

Sintaxe:

db2ckbkp <localização/arquivo de backup>

Exemplo:

db2ckbkp
/home/db2inst1/ONE.0.db2inst1.DBPART000.20140722112743.001
Listando o histórico de arquivos de backup

Sintaxe:

db2 list history backup all for one

Resultado:

Listar arquivo de histórico para um

Númerode entradas de arquivo correspondentes = 4

OpObj Timestamp+Sequence Type Dev Log mais antigo Log atual


ID de backup
----- ------------------ ---- --- ------------ ---------- --
--------------
BD 20140722105345001 FD S0000000.LOG S0000000.LOG

-------------------------------------------------- ----------
----------------

Contém 4 tablespace(s):
00001 SYSCATSPACE

00002 USERSPACE1

00003 SYSTOOLSPACE

00004 TS1
-------------------------------------------------- ----------
----------------
Comentário: DB2 BACKUP ONE OFFLINE

ComeçarHorário: 20140722105345

Hora final: 20140722105347

Estado: A
-------------------------------------------------- ----------
----------------
EID:3 Localização: /home/db2inst1

OpObj Timestamp+Sequence Type Dev Log mais antigo Log atual


ID de backup
----- ------------------ ---- --- ------------ ---------- --
--------------
BD 20140722112239000 N S0000000.LOG S0000000.LOG
-------------------------------------------------- ----------
-------------------------------------------------- -----------
-------------------------------

Comentário: DB2 BACKUP ONE ONLINE

ComeçarHora: 20140722112239

Hora final: 20140722112240

Estado: A
-------------------------------------------------- ----------
----------------
EID:4 Localização:
Informação SQLCA

sqlcaid: SQLCA sqlcabc:136 sqlcode: -2413 sqlerrml: 0


sqlerrmc:
sqlerrp : sqlubIni
sqlerrd:(1) 0 (2) 0 (3) 0

(4) 0 (5) 0 (6) 0

sqlwarn:(1) (2) (3) (4) (5) (6)

(7) (8) (9) (10) (11)


sqlstate:

Op Obj Carimbo de data/hora+Tipo de sequência Dev Log mais antigo Log atual
ID de backup
----- ------------------ ---- --- ------------ ---------- --
--------------
BD 20140722112743001 FD S0000000.LOG S0000000.LOG

-------------------------------------------------- ----------
----------------
Contém 4 tablespace(s):

00001 SYSCATSPACE

00002 USERSPACE1

00003 SYSTOOLSPACE

00004 TS1
-------------------------------------------------- -----------
----------------
Comentário: DB2 BACKUP ONE OFFLINE

ComeçarHora: 20140722112743

Hora final: 20140722112743

Estado: A
-------------------------------------------------- -----------
----------------
EID:5 Localização: /home/db2inst1

OpObj Timestamp+Sequence Type Dev Log mais antigo Log atual


ID de backup
-------------------------------------------------- -----------
----------------

RD 20140722114519001F
20140722112743

-------------------------------------------------- ----------
----------------
Contém 4 tablespace(s):

00001 SYSCATSPACE

00002 USERSPACE1

00003 SYSTOOLSPACE

00004 TS1
-------------------------------------------------- ----------
----------------
Comentário: RESTAURAR UM COM RF

ComeçarHorário: 20140722114519

Hora final: 20140722115015


Estado: A

-------------------------------------------------- ----------
----------------
EID:6 Localização:

Restaurando o banco de dados do backup


Para restaurar o banco de dados do arquivo de backup, você precisa seguir a sintaxe fornecida:

Sintaxe:

banco de dados de restauração db2 <db_name>de <localização>


tirada em <timestamp>

Exemplo:

db2 restaurar banco de dados um de/home/db2inst1/ tirada em


20140722112743

Resultado:

SQL2523W Aviso!Restaurar para um banco de dados existente que é


diferente de

o banco de dados na imagem de backup, mas têm nomes correspondentes.


O banco de dados de destino

será substituído pela versão de backup.O Roll-forward


registros de recuperação

associados ao banco de dados de destino serão excluídos.

Você quer continuar? (s/n) s

DB20000I O comando RESTORE DATABASE foi concluído com êxito.

Avance todos os logs localizados no diretório de log, incluindo as alterações mais recentes imediatamente
antes da falha da unidade de disco.

Sintaxe:

db2 rollforward db <db_name> para terminarde toras e parada

Exemplo:

db2 rollforward db um para terminarde toras e parada

Resultado:

Status de avanço
Alias do banco de dados de entrada = um
Númerode membros retornaram status = 1
ID do membro = 0
Status de avanço = não pendente
Próximo arquivo de log a ser lido =
Arquivos de log processados = S0000000.LOG -
S0000001.LOG
Última transação confirmada =2014-07-22-
06.00.33.000000 UTC
DB20000I O comando ROLLFORWARD foi concluído com êxito.
DB2 – Segurança de Banco de Dados
Este capítulo descreve a segurança do banco de dados.

Introdução
O banco de dados e as funções do DB2 podem ser gerenciados por dois modos diferentes de controles de
segurança:

1. Autenticação
2. Autorização

Autenticação

Autenticação é o processo de confirmação de que um usuário efetua login apenas de acordo com os direitos
para realizar as atividades que está autorizado a realizar. A autenticação do usuário pode ser realizada no
nível do sistema operacional ou no próprio nível do banco de dados. Ao usar ferramentas de autenticação
para biometria, como retina e impressões de figuras, são usadas para proteger o banco de dados de hackers
ou usuários mal-intencionados.

A segurança do banco de dados pode ser gerenciada de fora do sistema de banco de dados db2. Aqui estão
alguns tipos de processo de autenticação de segurança:

 Com base em autenticações do sistema operacional.


 Protocolo leve de acesso a diretórios (LDAP)

Para DB2, o serviço de segurança faz parte do sistema operacional como um produto separado. Para
Autenticação, são necessárias duas credenciais diferentes, ID de usuário ou nome de usuário e senha.

Autorização

Você pode acessar o banco de dados DB2 e sua funcionalidade no sistema de banco de dados DB2, que é
gerenciado pelo gerenciador do banco de dados DB2. A autorização é um processo gerenciado pelo
gerenciador do banco de dados DB2. O gerenciador obtém informações sobre o usuário autenticado atual,
que indica qual operação de banco de dados o usuário pode realizar ou acessar.

Aqui estão diferentes formas de permissões disponíveis para autorização:

Permissão principal: Concede o ID de autorização diretamente.

Permissão secundária: Concede aos grupos e funções se o usuário for um membro

Permissão pública: concede a todos os usuários publicamente.

Permissão sensível ao contexto: concede à função de contexto confiável.

A autorização pode ser dada aos usuários com base nas categorias abaixo:

 Autorização no nível do sistema


 Administrador do sistema [SYSADM]
 Controle do Sistema [SYSCTRL]
 Manutenção do sistema [SYSMAINT]
 Monitor do sistema [SYSMON]
As autoridades fornecem controle sobre a funcionalidade no nível da instância. A autoridade fornece
privilégios de grupo, para controlar a manutenção e as operações de autoridade. Por exemplo, banco de
dados e objetos de banco de dados.

 Autorização no nível do banco de dados


 Administrador de Segurança [SECADM]
 Administrador de banco de dados [DBADM]
 Controle de acesso [ACCESSCTRL]
 Acesso a dados [DATAACCESS]
 SQL administrador. [SQLADM]
 Administrador de gerenciamento de carga de trabalho [WLMADM]
 Explique [EXPLICAR]

As autoridades fornecem controles dentro do banco de dados. Outras autoridades para banco de dados
incluem LDAD e CONNECT.

 Autorização em nível de objeto: A autorização em nível de objeto envolve a verificação de


privilégios quando uma operação é executada em um objeto.
 Autorização baseada em conteúdo: O usuário pode ter acesso de leitura e gravação a linhas e
colunas individuais em uma tabela específica usando o controle de acesso baseado em rótulo
[LBAC].

As tabelas e arquivos de configuração do DB2 são usados para registrar as permissões associadas aos nomes
de autorização. Quando um usuário tenta acessar os dados, as permissões registradas verificam as seguintes
permissões:

 Nome da autorização do usuário


 Qual grupo pertence ao usuário
 Quais papéis são concedidos diretamente ao usuário ou indiretamente a um grupo
 Permissões adquiridas por meio de um contexto confiável.

Ao trabalhar com as instruções SQL, o modelo de autorização do DB2 considera a combinação das
seguintes permissões:

 Permissões concedidas ao ID de autorização primário associado às instruções SQL.


 IDs de autorização secundária associados às instruções SQL.
 Concedido ao PÚBLICO
 Concedido à função de contexto confiável.

Autoridades no nível da instância


Vamos discutir algumas autoridades relacionadas à instância.

Autoridade de administração do sistema (SYSADM)

É a autoridade administrativa de nível mais alto no nível da instância. Os usuários com autoridade
SYSADM podem executar alguns bancos de dados e comandos do gerenciador de banco de dados dentro da
instância. Os usuários com autoridade SYSADM podem executar as seguintes operações:

 Atualizar um banco de dados


 Restaurar um banco de dados
 Atualize o arquivo de configuração do gerenciador de banco de dados.

Autoridade de controle do sistema (SYSCTRL)


É o nível mais alto na autoridade de controle do sistema. Ele fornece a execução de operações de
manutenção e utilidade na instância do gerenciador de banco de dados e seus bancos de dados. Essas
operações podem afetar os recursos do sistema, mas não permitem o acesso direto aos dados no banco de
dados.

Os usuários com autoridade SYSCTRL podem executar as seguintes ações:

 Atualizando o banco de dados, o nó ou o diretório Distributed Connect Service (DCS)


 Forçando os usuários a sair do nível do sistema
 Criando ou descartando um nível de banco de dados
 Criando, alterando ou descartando um espaço de tabela
 Usando qualquer espaço de tabela
 Restaurando banco de dados

Autoridade de manutenção do sistema (SYSMAINT)

É um segundo nível de autoridade de controle do sistema. Ele fornece a execução de operações de


manutenção e utilidade na instância do gerenciador de banco de dados e seus bancos de dados. Essas
operações afetam os recursos do sistema sem permitir acesso direto aos dados no banco de dados. Essa
autoridade foi projetada para que os usuários mantenham bancos de dados em uma instância do gerenciador
de banco de dados que contém dados confidenciais.

Somente usuários com SYSMAINT ou autoridades de sistema de nível superior podem executar as seguintes
tarefas:

 Fazendo backup
 Restaurando o backup
 Avance a recuperação
 Iniciando ou parando a instância
 Restaurando tablespaces
 Executando o comando db2trc
 Tirar instantâneos do monitor do sistema no caso de um usuário no nível da instância ou um usuário
no nível do banco de dados.

Um usuário com SYSMAINT pode executar as seguintes tarefas:

 Consultar o estado de um tablespace


 Atualizando arquivos de histórico de log
 Reorganização de tabelas
 Usando RUNSTATS (estatísticas do catálogo de coleções)

Autoridade do monitor do sistema (SYSMON)

Com essa autoridade, o usuário pode monitorar ou tirar instantâneos da instância do gerenciador de banco de
dados ou de seu banco de dados. A autoridade SYSMON permite que o usuário execute as seguintes tarefas:

 OBTER INTERRUPTORES DO MONITOR DO DATABASE MANAGER


 OBTER INTERRUPTORES DO MONITOR
 OBTER INSTANTÂNEO
 LISTA
o LISTA DE BANCOS DE DADOS ATIVOS
o LISTA DE APLICATIVOS
o LISTA DE GRUPOS DE PARTIÇÃO DE BANCO DE DADOS
o LISTA DE APLICAÇÕES DCS
o LISTA DE PACOTES
o LISTA DE TABELAS
o LISTA DE CONTENTORES DE TABLESPACE
o LISTA DE ESPAÇOS DE TABELAS
o LISTA DE UTILITÁRIOS
 REINICIAR MONITOR
 ATUALIZAR INTERRUPTORES DO MONITOR

Autoridades de banco de dados


Cada autoridade de banco de dados contém o ID de autorização para executar alguma ação no banco de
dados. Essas autoridades de banco de dados são diferentes de privilégios. Aqui está a lista de algumas
autoridades de banco de dados:

ACCESSCTRL: permite conceder e revogar todos os privilégios de objeto e autoridades de banco de dados.

BINDADD: Permite criar um novo pacote no banco de dados.

CONECTAR: Permite conectar-se ao banco de dados.

CREATETAB: Permite criar novas tabelas no banco de dados.

CREATE_EXTERNAL_ROUTINE: Permite criar um procedimento a ser utilizado pelos aplicativos e


pelos usuários dos bancos de dados.

ACESSO DE DADOS: Permite acessar os dados armazenados nas tabelas do banco de dados.

DBADM: Atuar como um administrador de banco de dados. Ele fornece todas as outras autoridades de
banco de dados, exceto ACCESSCTRL, DATAACCESS e SECADM.

EXPLIQUE: Permite explicar os planos de consulta sem exigir que eles tenham privilégios para acessar os
dados nas tabelas.

IMPLICIT_SCHEMA: permite que um usuário crie um esquema implicitamente criando um objeto usando
uma instrução CREATE.

CARREGAR: Permite carregar dados na tabela.

QUIESCE_CONNECT: Permite acessar o banco de dados enquanto ele está quiesce (temporariamente
desativado).

SECADM: Permite atuar como administrador de segurança do banco de dados.

SQLADM: Permite monitorar e ajustar instruções SQL.

WLMADM: Permite atuar como um administrador de carga de trabalho

Privilégios
SETSESSIONUSER

Os privilégios de ID de autorização envolvem ações em IDs de autorização. Existe apenas um privilégio,


chamado privilégio SETSESSIONUSER. Ele pode ser concedido a um usuário ou a um grupo e permite que
o usuário da sessão alterne as identidades para qualquer um dos IDs de autorização nos quais os privilégios
são concedidos. Esse privilégio é concedido pela autoridade SECADM do usuário.
Privilégios de esquema

Esses privilégios envolvem ações no esquema no banco de dados. O proprietário do esquema tem todas as
permissões para manipular os objetos do esquema, como tabelas, exibições, índices, pacotes, tipos de dados,
funções, gatilhos, procedimentos e aliases. Um usuário, um grupo, uma função ou PUBLIC pode receber
qualquer usuário dos seguintes privilégios:

 CRIAR EM: permite criar objetos dentro do esquema


 ALTERIN: permite modificar objetos dentro do esquema.

DROPIN

Isso permite excluir os objetos dentro do esquema.

Privilégios de tablespace
Esses privilégios envolvem ações nos tablespaces do banco de dados. O usuário pode receber o privilégio
USE para os tablespaces. Os privilégios então permitem que eles criem tabelas dentro de tablespaces. O
proprietário do privilégio pode conceder o privilégio USE com o comando WITH GRANT OPTION no
tablespace quando o tablespace é criado. E as autoridades SECADM ou ACCESSCTRL têm permissões
para privilégios de USE no tablespace.

Privilégios de tabela e exibição


O usuário deve ter autoridade CONNECT no banco de dados para poder usar privilégios de tabela e
exibição. Os privilégios para tabelas e visualizações são os seguintes:

AO CONTROLE

Ele fornece todos os privilégios para uma tabela ou visualização, incluindo descartar e conceder, revogar
privilégios individuais de tabela para o usuário.

ALTERAR

Permite ao usuário modificar uma tabela.

EXCLUIR

Ele permite que o usuário exclua linhas da tabela ou visualização.

ÍNDICE

Permite ao usuário inserir uma linha na tabela ou visualização. Ele também pode executar o utilitário de
importação.

REFERÊNCIAS

Ele permite que os usuários criem e descartem uma chave estrangeira.

SELECIONE

Ele permite que o usuário recupere linhas de uma tabela ou exibição.


ATUALIZAR

Ele permite que o usuário altere as entradas em uma tabela, exibição.

Privilégios do pacote
O usuário deve ter autoridade CONNECT para o banco de dados. Pacote é um objeto de banco de dados que
contém as informações do gerenciador de banco de dados para acessar os dados da maneira mais eficiente
para um aplicativo específico.

AO CONTROLE

Ele fornece ao usuário privilégios de religar, descartar ou executar pacotes. Um usuário com esses
privilégios recebe os privilégios BIND e EXECUTE.

LIGAR

Ele permite que o usuário vincule ou religue esse pacote.

EXECUTAR

Permite executar um pacote.

Privilégios de indexação
Este privilégio recebe automaticamente o privilégio CONTROL no índice.

Privilégios de sequência
A sequência recebe automaticamente os privilégios USAGE e ALTER na sequência.

Privilégios de rotina
Envolve a ação de rotinas como funções, procedimentos e métodos dentro de um banco de dados.
DB2 – Funçõ es
Introdução
Uma função é um objeto de banco de dados que agrupa vários privilégios que podem ser atribuídos a
usuários, grupos, PUBLIC ou outras funções usando a instrução GRANT.

Restrições de funções
 Uma função não pode possuir objetos de banco de dados.
 Permissões e funções concedidas a grupos não são consideradas quando você cria os seguintes
objetos de banco de dados.
o Pacote contendo SQL estático
o Visualizações
o Tabelas de consulta materializada (MQT)
o Gatilhos
o Rotinas SQL

Criando e concedendo associação em funções


Sintaxe:[Para criar uma nova função]

db2 cria a função <role_name>

Exemplo: [Para criar uma nova função chamada 'vendas' para adicionar alguma tabela a ser gerenciada por
algum usuário ou grupo]

db2 criar vendas de funções

Resultado:

DB20000I O comando SQL foi concluído com êxito.

Concedendo função de DBADM para uma tabela específica


Sintaxe:[Para conceder permissão de um papel a uma tabela]

db2 concede seleção na tabela <table_name> para a função <role_name>

Exemplo: [Para adicionar permissão para gerenciar uma tabela 'shope.books' à função 'sales']

db2 grant select na tabela shope.books para role sales

Resultado:

DB20000I O comando SQL foi concluído com êxito.

O administrador de segurança concede a função aos usuários necessários. (Antes de usar este comando, você
precisa criar os usuários.)

Sintaxe:[Para adicionar usuários a uma função]


o db2 concede a função <role_name> ao usuário <username>

Exemplo: [Para adicionar um usuário 'mastanvali' a uma função 'vendas']

db2 concede vendas ao usuário mastanvali

Resultado:

DB20000I O comando SQL foi concluído com êxito.

Hierarquias de funções
Para criar hierarquias para funções, cada função recebe permissões/associação com outra função.

Sintaxe:[antes desta sintaxe crie um novo papel com o nome de “produção”]

db2 concede a função <roll_name> para a função <role_name>

Exemplo: [Para fornecer permissão de uma função 'vendas' para outra função 'produção']

vendas de concessão de db2 para produção de função


DB2 – LDAP
Introdução
LDAP é Lightweight Directory Access Protocol. O LDAP é um serviço de diretório global, protocolo
padrão da indústria, baseado no modelo cliente-servidor e executado em uma camada acima da pilha
TCP/IP. O LDAP fornece um recurso para conectar, acessar, modificar e pesquisar o diretório da Internet.

Os servidores LDAP contêm informações organizadas na forma de uma árvore de diretórios. Os clientes
pedem ao servidor para fornecer informações ou realizar alguma operação em uma determinada informação.
O servidor responde ao cliente fornecendo as informações necessárias, se houver, ou encaminha o cliente a
outro servidor para ação nas informações necessárias. O cliente então adquire as informações desejadas de
outro servidor.

A estrutura em árvore do diretório é mantida igual em todos os servidores participantes. Este é um recurso
importante do serviço de diretório LDAP. Portanto, independentemente de qual servidor é referido pelo
cliente, o cliente sempre obtém as informações necessárias sem erros. Aqui, usamos o LDAP para autenticar
o IBM DB2 como um substituto da autenticação do sistema operacional.

Existem dois tipos de LDAP:

1. Transparente
2. Plugar

Vamos ver como configurar um LDAP transparente.

Configurando o LDAP transparente


Para iniciar a configuração do LDAP transparente, você precisa configurar o servidor LDAP.

Configuração do servidor LDAP

Crie um arquivo SLAPD.conf, que contém todas as informações sobre usuários e objeto de grupo no LDAP.
Quando você instala o servidor LDAP, por padrão, ele é configurado com a árvore de diretórios LDAP
básica em sua máquina.

A tabela abaixo indica a configuração do arquivo após a modificação.

O texto destacado em amarelo na caixa de código significa o seguinte:

DBA user-id = “db2my1”, grupo = “db1my1adm”, senha = “db2my1” Admin user-id = “my1adm”, grupo =
“dbmy1ctl”.

# base dn: example.com


dn: dc=exemplo,dc=com
dc: exemplo
o: exemplo
objectClass: organização
objectClass: dcObject
# pc box db
dn: dc=db697,dc=exemplo,dc=com
CC: db697
o: db697
objectClass: organização
objectClass: dcObject
#
# Grupo: dbadm
#
dn: cn=dbmy1adm,dc=db697,dc=exemplo,dc=com
cn: dbmy1adm
classeobjeto: topo
objectClass: posixGroup
número gid: 400
objectClass: groupOfNames
membro: uid=db2my1,cn=dbmy1adm,dc=db697,dc=example,dc=com
id de membro: db2my1
#
# Usuário: db2
#
dn: uid=db2my1,cn=dbmy1adm,dc=db697,dc=exemplo,dc=com
cn: db2my1
sn: db2my1
uid: db2my1
classeobjeto: topo
objectClass: inetOrgPerson
objectClass: posixAccount
uidNúmero: 400
número gid: 400
loginShell: /bin/csh
homeDirectory: /db2/db2my1
#
# Grupo: dbctl
#
dn: cn=dbmy1ctl,dc=db697,dc=exemplo,dc=com
cn: dbmy1ctl
classeobjeto: topo
objectClass: posixGroup
gidNúmero: 404
objectClass: groupOfNames
membro: uid=my1adm,cn=dbmy1adm,dc=db697,dc=example,dc=com
id de membro: my1adm
#
#Usuário: adm
#
dn: uid=my1adm,cn=dbmy1ctl,dc=db697,dc=example,dc=com
cn: my1adm
sn: my1adm
uid: my1adm
classeobjeto: topo
objectClass: inetOrgPerson
objectClass: posixAccount
uidNúmero: 404
gidNúmero: 404
loginShell: /bin/csh
homeDiretório: /home/my1adm

Salve o arquivo acima com o nome '/var/lib/slapd.conf' e, em seguida, execute esse arquivo seguindo o
comando para adicionar esses valores ao servidor LDAP. Este é um comando linux; não um comando db2.

ldapadd r- -D 'cn=Gerenciador,dc=exemplo,dc=com” –W –f
/var/lib/slapd.conf

Depois de registrar os usuários do DB2 e o grupo do DB2 no servidor LDAP, efetue logon no usuário
específico no qual você instalou a instância e o banco de dados. Você precisa configurar o cliente LDAP
para confirmar ao cliente onde seu servidor está localizado, seja remoto ou local.

Configuração do cliente LDAP


A configuração do Cliente LDAP é salva no arquivo 'ldap.conf'. Existem dois arquivos disponíveis para
parâmetros de configuração, um comum e outro específico. Você deve encontrar o primeiro em
'/etc/ldap.conf' e o último em '/etc/openldap/ldap.conf'.

Os dados a seguir estão disponíveis no arquivo de configuração do cliente LDAP comum

# Arquivo: /etc/ldap.conf
# O arquivo contém muitas outras entradas e muitas delas
# são comentários. Você mostra apenas os valores interessantes por enquanto
host localhost
base dc=exemplo,dc=com
ldap_versão 3
criptografia pam_password
pam_filter objectclass=posixAccount
nss_map_attribute membro uniqueMember
nss_base_passwd dc=exemplo,dc=com
nss_base_shadow dc=exemplo,dc=com
nss_base_group dc=exemplo,dc=com

Você precisa alterar o local das informações do servidor e do domínio de acordo com a configuração do
DB2. Se estivermos usando o servidor no mesmo sistema, mencione-o como 'localhost' em 'host' e em 'base',
você pode configurar o que é mencionado no arquivo 'SLAPD.conf' para o servidor LDAP.

Pluggable Authentication Model (PAM) é uma API para serviços de autenticação. Esta é uma interface
comum para autenticação LDAP com uma senha criptografada e um objeto LDAP especial do tipo
posixAccount. Todos os objetos LDAP desse tipo representam uma abstração de uma conta com atributos
POSIX (Portable Operating System Interface).

O Network Security Services (NSS) é um conjunto de bibliotecas para oferecer suporte ao desenvolvimento
de plataforma cruzada de aplicativos cliente e servidor habilitados para segurança. Isso inclui bibliotecas
como SSL, TLS, PKCS S/MIME e outros padrões de segurança.

Você precisa especificar o DN base para esta interface e dois atributos de mapeamento adicionais. O arquivo
de configuração do cliente OpenLDAP contém as entradas abaixo:

host localhost
base dc=exemplo,dc=com

Até isso, você apenas define o host do servidor LDAP e o DN base.

Validando o ambiente OpenLDAP


Depois de configurar o servidor LDAP e o cliente LDAP, verifique a comunicação de ambos.

Passo 1: verifique se o servidor LDAP local está em execução. Usando o comando abaixo:

ps-ef | grep -i ldap

Este comando deve listar o deamon LDAP que representa seu servidor LDAP:

/usr/lib/openldap/slapd -h ldap:/// -u ldap -g ldap -o slp=on

Isso indica que seu servidor LDAP está em execução e aguardando solicitação de clientes. Se não houver tal
processo para comandos anteriores, você pode iniciar o servidor LDAP com o comando 'rcldap'.

início do rcldap
Quando o servidor iniciar, você poderá monitorar isso no arquivo '/var/log/messages/ emitindo o seguinte
comando.

tail –f /var/log/mensagens

Testando a conexão com o servidor LDAP com ldapsearch


O comando ldapsearch abre uma conexão com um servidor LDAP, vincula-se a ele e executa uma consulta
de pesquisa que pode ser especificada usando parâmetros especiais '-x' conecte-se ao seu servidor LDAP
com um mecanismo de autenticação simples usando o parâmetro –x em vez de um mecanismo mais
complexo como autenticação simples e camada de segurança (SASL)

ldapsearch –x

O servidor LDAP deve responder com uma resposta fornecida abaixo, contendo todas as suas entradas
LDAP em um formato de troca de dados LDAP (LDIF).

# LDIF estendido
#
# LDAPv3
# base <> com subárvore de escopo
# filtro: (objectclass=*)
# solicitando: TODOS
#exemplo.com
dn: dc=exemplo,
dc=com dc: exemplo
o: exemplo
objectClass: organização
objectClass: dcObject
# resultado da pesquisa
pesquisa: 2
resultado: 0 Sucesso
# numResponses: 2
# numEntries: 1

Configurando o DB2
Depois de trabalhar com servidor e cliente LDAP, você precisa configurar nosso banco de dados DB2 para
uso com LDAP. Vamos discutir como você pode instalar e configurar seu banco de dados para usar nosso
ambiente LDAP para o processo de autenticação do usuário do DB2.

Configurando plug-ins de interação DB2 e LDAP


A IBM fornece um pacote gratuito com plug-ins LDAP para DB2. O pacote do DB2 inclui três plug-ins de
segurança do DB2 para cada um dos seguintes:

 autenticação do lado do servidor


 autenticação do lado do cliente
 pesquisa de grupo

Dependendo de seus requisitos, você pode usar qualquer um dos três plug-ins ou todos eles. Este plugin não
suporta ambientes onde alguns usuários são definidos no LDAP e outros nos sistemas operacionais. Se você
decidir usar os plug-ins LDAP, precisará definir todos os usuários associados ao banco de dados no servidor
LDAP. O mesmo princípio se aplica ao plug-in de grupo.

Você deve decidir quais plug-ins são obrigatórios para o nosso sistema. Os plug-ins de autenticação do
cliente usados em cenários em que a validação do ID do usuário e da senha fornecida em uma instrução
CONNECT ou ATTACH ocorre no sistema do cliente. Portanto, os parâmetros de configuração do
gerenciador de banco de dados SRVCON_AUTH ou AUTHENTICATION precisam ser configurados com
o valor CLIENT. A autenticação do cliente é difícil de proteger e geralmente não é recomendada. O plug-in
do servidor geralmente é recomendado porque executa uma validação do lado do servidor de IDs e senhas
do usuário, se o cliente executar uma instrução CONNECT ou ATTACH e esta for uma maneira segura. O
plug-in do servidor também fornece uma maneira de mapear IDs do usuário LDAP IDs de autorização do
DB2.

Agora que você pode iniciar a instalação e configuração dos plug-ins de segurança do DB2, você precisa
pensar na árvore de informações de diretório necessária para o DB2. O DB2 usa autorização indireta, o que
significa que um usuário pertence a um grupo e esse grupo recebeu menos autoridades. Você precisa definir
todos os usuários do DB2 e grupos do DB2 no diretório LDAP.

Imagem
O arquivo LDIF openldap.ldif deve conter o código abaixo:

#
# objeto raiz LDAP
#exemplo.com
#
dn: dc=exemplo,
dc=com
dc: exemplo
o: exemplo
objectClass: organização
objectClass: dcObject
#
# grupos db2
#
dn: cn=dasadm1,dc=exemplo,dc=com
cn: dasadm1
classeobjeto: topo
objectClass: posixGroup
gidNúmero: 300
objectClass: groupOfNames
membro: uid=dasusr1,cn=dasadm1,dc=exemplo,dc=com
id de membro: dasusr1
dn: cn=db2grp1,dc=exemplo,dc=com
cn: db2grp1
classeobjeto: topo
objectClass: posixGroup
número gid: 301
objectClass: groupOfNames
membro: uid=db2inst2,cn=db2grp1,dc=exemplo,dc=com membroUid: db2inst2
dn: cn=db2fgrp1,dc=exemplo,dc=com
cn: db2fgrp1
classeobjeto: topo
objectClass: posixGroup
número gid: 302
objectClass: groupOfNames
membro: uid=db2fenc1,cn=db2fgrp1,dc=example,dc=com
id de membro: db2fenc1
#
# usuários db2
#
dn: uid=dasusr1,
cn=dasadm1,
dc=exemplo,dc=com
cn: dasusr1
sn: dasusr1
uid: dasusr1
classeobjeto: topo
objectClass: inetOrgPerson
objectClass: posixAccount
uidNúmero: 300
gidNúmero: 300
loginShell: /bin/bash
homeDiretório: /home/dasusr1
dn: uid=db2inst2,cn=db2grp1,dc=exemplo,dc=com
cn: db2inst2
sn: db2inst2
uid: db2inst2
classeobjeto: topo
objectClass: inetOrgPerson
objectClass: posixAccount
uidNúmero: 301
número gid: 301
loginShell: /bin/bash
homeDirectory: /home/db2inst2
dn: uid=db2fenc1,cn=db2fgrp1,dc=exemplo,dc=com
cn: db2fenc1
sn: db2fenc1
uid: db2fenc1
classeobjeto: topo
objectClass: inetOrgPerson
objectClass: posixAccount
uidNúmero: 303
número gid: 303
loginShell: /bin/bash
homeDiretório: /home/db2fenc1

Crie um arquivo chamado 'db2.ldif' e cole o exemplo acima nele. Usando esse arquivo, inclua as estruturas
definidas em seu diretório LDAP.

Para incluir usuários e grupos do DB2 no diretório LDAP, você precisa vincular o usuário como 'rootdn' ao
servidor LDAP para obter os privilégios exatos.

Execute as seguintes sintaxes para preencher o diretório de informações do LDAP com todos os nossos
objetos definidos no arquivo LDIF 'db2.ldif'

ldapadd –x –D “cn=Gerenciador, dc=exemplo,dc=com” –W –f <caminho>/db2.ldif

Execute o resultado da pesquisa com mais parâmetros

ldapsearch –x |mais

Preparando o sistema de arquivos para uso do DB2


Criando instância para nosso usuário LDAP db2inst2. Este usuário requer um diretório inicial com dois
arquivos vazios dentro do diretório inicial. Antes de criar uma nova instância, você precisa criar um usuário
que será o proprietário da instância.

Após criar o usuário da instância, deve-se criar os arquivos '.profile' e '.login' no diretório inicial do usuário,
que será modificado pelo DB2. Para criar este arquivo no diretório, execute o seguinte comando:

mkdir /home/db2inst2
mkdir /home/db2inst2/.login
mkdir /home/db2inst2/.profile

Você registrou todos os usuários e grupos relacionados ao DB2 no diretório LDAP, agora você pode criar
uma instância com o nome 'db2inst2' com o ID do proprietário da instância 'db2inst2' e usar o ID do usuário
limitado 'db2fenc1', que é necessário para executar o usuário funções definidas (UDFs) ou procedimentos
armazenados.

/opt/ibm/db2/V10.1/instance/db2icrt –u db2fenc1 db2inst2


DBI1070I O programa db2icrt foi concluído com êxito.

Agora verifique o diretório inicial da instância. Você pode ver o novo subdiretório chamado 'sqllib' e os
arquivos .profile e .login personalizados para uso do DB2.

Configurando public-ins de autenticação para suporte a LDAP no


DB2
Copie os plug-ins de LDAP necessários para o diretório apropriado do DB2:

cp ///v10/IBMLDAPauthserver.so
/home/db2inst2/sqllib/security/plugin/server/.

cp ///v10/IBMLDAPgroups.so
/home/db2inst2/sqllib/security/plugin/group/.

Depois que os plug-ins são copiados para o diretório especificado, você precisa efetuar login no proprietário
da instância do DB2 e alterar a configuração do gerenciador de banco de dados para usar esses plug-ins.

Su - db2inst2
db2inst2> atualização db2 dbm cfg usando svrcon_pw_plugin
IBMLDAPauthserver
db2inst2> atualização db2 dbm cfg usando group_plugin
Grupos IBMLDAP
db2inst2> atualização db2 dbm cfg usando autenticação
SERVER_ENCRYPT
db2inst2> db2stop
db2inst2> db2start

Essa modificação entra em vigor depois que você inicia a instância do DB2. Depois de reiniciar a instância,
você precisa instalar e configurar o arquivo de configuração principal do DB2 LDAP denominado
“IBMLDAPSecurity.ini” para fazer os plug-ins do DB2 funcionarem com a configuração LDAP atual.

O arquivo IBMLDAPSecurity.ini contém

;------------------------------------------------- ----------
; VALORES RELACIONADOS AO SERVIDOR
;------------------------------------------------- ----------
; Nome do(s) seu(s) servidor(es) LDAP.
; Esta é uma lista separada por espaço de endereços de servidor LDAP,
; com um número de porta opcional para cada um:
; host1[:porta] [host2:[porta2] ... ]
; O número da porta padrão é 389 ou 636 se o SSL estiver ativado.
LDAP_HOST = meu.ldap.server
;------------------------------------------------- ----------
; VALORES RELACIONADOS AO USUÁRIO
;------------------------------------------------- ----------
rs
; Classe de objeto LDAP usada para uso USER_OBJECTCLASS = posixAccount
; Atributo do usuário LDAP que representa o "userid"
; Este atributo é combinado com o USER_OBJECTCLASS e
; USER_BASEDN (se especificado) para construir uma pesquisa LDAP
; filtrar quando um usuário emite uma instrução DB2 CONNECT com um
; id de usuário não qualificado. Por exemplo, usando os valores padrão
; neste arquivo de configuração, (db2 conecta ao usuário MYDB bob
; usando bobpass) resulta no seguinte filtro de pesquisa:
OrgPerson)(uid=bob)
; &(objectClass=inet USERID_ATTRIBUTE = uid
representando o ID de autorização do DB2
; Atributo do usuário LDAP, AUTHID_ATTRIBUTE = uid
;------------------------------------------------- ----------
; VALORES RELACIONADOS AO GRUPO
;------------------------------------------------- ----------
PS
; Classe de objeto LDAP usada para grupo GROUP_OBJECTCLASS = groupOfNames
at representa o nome do grupo
; Atributo do grupo LDAP th GROUPNAME_ATTRIBUTE = cn
; Determina o método usado para encontrar os membros do grupo
; para um usuário. Os valores possíveis são:
; SEARCH_BY_DN - Pesquisa grupos que listam o usuário como
; um membro. A filiação é indicada pelo
; atributo de grupo definido como
; GROUP_LOOKUP_ATTRIBUTE.
; USER_ATTRIBUTE - Os grupos de um usuário são listados como atributos
; do próprio objeto do usuário. Procure o
; atributo de usuário definido como
HOMENAGEM para obter os grupos.
; GROUP_LOOKUP_AT GROUP_LOOKUP_METHOD = SEARCH_BY_DN
; GROUP_LOOKUP_ATTRIBUTE
; Nome do atributo usado para determinar a associação ao grupo,
; como descrito acima.
llGrupos
; GROUP_LOOKUP_ATTRIBUTE = ibm-a GROUP_LOOKUP_ATTRIBUTE = membro

Agora localize o arquivo IBMLDAPSecurity.ini no diretório da instância atual. Copie o conteúdo da amostra
acima para o mesmo.

Cp
//db2_ldap_pkg/IBMLDAPSecurity.ini
/home/db2inst2/sqllib/cfg/

Agora você precisa reiniciar sua instância do DB2, usando duas sintaxes fornecidas abaixo:

db2inst2> db2stop

Db2inst2> db2start

Neste ponto, se você tentar o comando 'db2start', receberá uma mensagem de erro de segurança. Porque a
configuração de segurança do DB2 ainda não está configurada corretamente para seu ambiente LDAP.

Personalizando ambas as configurações


Mantenha o nome LDAP_HOST à mão, que está configurado no arquivo slapd.conf.

Agora edite o arquivo IMBLDAPSecurity.ini e digite o nome LDAP_HOST. O nome LDAP_HOST em


ambos os arquivos mencionados deve ser idêntico.

O conteúdo do arquivo é o mostrado abaixo:

;------------------------------------------------- ----------
; VALORES RELACIONADOS AO SERVIDOR
;------------------------------------------------- ----------
LDAP_HOST = host local
;------------------------------------------------- ----------
; VALORES RELACIONADOS AO USUÁRIO
-----------------------
;-------------------------------
USER_OBJECTCLASS = posixConta
USER_BASEDN = dc=exemplo,dc=com
USERID_ATTRIBUTE = uid
AUTHID_ATTRIBUTE = uid
;------------------------------------------------- ----------
; VALORES RELACIONADOS AO GRUPO
;------------------------------------------------- ----------
GROUP_OBJECTCLASS = groupOfNames
GROUP_BASEDN = dc=exemplo,dc=com
GROUPNAME_ATTRIBUTE = cn
GROUP_LOOKUP_METHOD = SEARCH_BY_DN
GROUP_LOOKUP_ATTRIBUTE = membro

Depois de alterar esses valores, o LDAP entra em vigor imediatamente e seu ambiente DB2 com LDAP
funciona perfeitamente.

Você pode fazer logout e login novamente no usuário 'db2inst2'.

Agora sua instância está funcionando com o diretório LDAP.

Você também pode gostar