Escolar Documentos
Profissional Documentos
Cultura Documentos
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:
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
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”.
./db2prereqcheck
Abra o terminal.
Faça login como usuário root.
Abra a pasta de instalação do DB2.
Digite “./db2setup” e pressione Enter.
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.
(Sua senha pode ser idêntica ao nome de usuário para que seja conveniente lembrar.)
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”.
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”.
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:
Este comando mostra todas as informações relacionadas à licença de nosso produto DB2.
Sintaxe:
db2licm <parâmetro>
Exemplo:
db2licm -l
Resultado:
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 é:
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.
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.
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
Sintaxe:
db2ilist
db2ilist
Resultado:
db2inst1
db2inst2
db2inst3
Obter instância
Sintaxe:
Resultado:
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>
definir db2instance=db2inst1
db2start
Usando este comando, você pode iniciar uma instância. Antes disso, você precisa executar “set instance”.
Sintaxe:
db2start
db2start
Resultado:
db2stop
Sintaxe:
db2stop
Resultado:
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.
Sintaxe:
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
Sintaxe:
Exemplo: [Para criar uma nova instância 'db2inst2' no usuário 'db2inst2' com os recursos de 'ESE'
(Enterprise Server Edition)]
Resultado:
Sintaxe:
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]
Exemplo 1: [Atualizando a configuração do DBM com a variável svcename com o valor 'db2c_db2inst2'
para a instância 'db2inst2'
Resultado
DB20000I O comando UPDATE DATABASE MANAGER CONFIGURATION foi concluído com êxito.
Sintaxe 3: [Parando e iniciando a instância atual para obter valores atualizados da configuração do
gerenciador de banco de dados]
db2stop
db2start
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.
db2iupdt <inst_name>
Exemplo 1:
./db2iupdt db2inst2
db2iupdt -D <inst_name>
Exemplo
db2iupdt -D db2inst2
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:
Exemplo:
-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 “-”.
db2idrop
Sintaxe: [na seguinte sintaxe, 'inst_username' indica o nome de usuário da instância e 'inst_name' indica o
nome da instância]
Sintaxe 1: [para verificar a instância atual ativada pelo gerenciador de banco de dados]
Resultado:
Sintaxe 2: [Para ver a instância atual com bits operacionais e versão de lançamento]
Exemplo:
Resultado:
Resultado:
INST_NAME --------------------------------------
db2inst1
1 registro(s) selecionado(s).
db2set db2instdef=<inst_name> -g
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.
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.
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.
O diretório global da partição contém arquivos relacionados ao banco de dados, conforme listado abaixo.
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.
Sintaxe: [Para criar um novo banco de dados. 'database_name' indica um novo nome de banco de dados, que
você deseja criar.]
Exemplo: [Para criar um novo banco de dados não restritivo com o nome 'um']
Resultado:
Exemplo: [Para criar um novo banco de dados restritivo com o nome 'dois']
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'.]
Exemplo: [Para criar um banco de dados chamado 'four', onde os dados são armazenados em 'data1' e esta
pasta é armazenada em 'dbpath1']
Sintaxe:
Exemplo:
Resultado:
db2 ativar db um
Sintaxe:
db2 desativar db um
Sintaxe:
db2 conectar a um
Resultado:
Sintaxe: [Na seguinte sintaxe, 'db' indica banco de dados, 'cfg' indica configuração, 'db_name' indica nome
do banco de dados]
Resultado:
OU
OU
OU
OU
db2 obter db cfg
OU
OU
Resultado:
Exemplo: [Para conectar “um” banco de dados com o ID de usuário 'db2inst4' e a senha 'db2inst4']
Resultado:
Sintaxe: [A sintaxe abaixo mostra o resultado dos serviços de autoridade para o banco de dados atual]
Exemplo:
Resultado:
Resultado:
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.
Resultado:
1 registro(s) selecionado(s).
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)]
Exemplo: [Para criar um novo bufferpool com nome “bpnew” e tamanho “8192”(8Kb).]
Resultado
Resultado
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
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ç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 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.
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.
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.
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.
Sintaxe: [Para ver a lista de grupos de armazenamento disponíveis no banco de dados atual]
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]
Resultado:
Exemplo: [Para criar um novo tablespace chamado 'ts1' usando o grupo de armazenamento existente 'stg1']
Resultado:
Sintaxe: [Para mudar um grupo de armazenamento do local antigo para o novo local]
Exemplo: [Para modificar o caminho do local antigo para o novo local para o grupo de armazenamento
chamado 'sg1']
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]
Exemplo: [Para modificar o nome do grupo de armazenamento de 'sg1' para o novo nome 'sgroup1']
Exemplo: [Para mudar de um stogroup antigo para um novo stogroup chamado 'sg2' para tablespace 'ts1']
Passo 2:
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.
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 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']
Mesa 2: pessoal.funcionário
[Para criar uma nova tabela 'funcionário' no mesmo banco de dados, com o nome do esquema 'pessoal']
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.
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:
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”.
Resultado:
DB20000I O comando SQL foi concluído com êxito.
Resultado:
1 registro(s) selecionado(s).
Resultado:
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.
Exemplo: [Para criar uma tabela 'cliente' com colunas ocultas 'telefone']
Resultado:
Resultado:
101 krathi
102 gopal
3 registros selecionados.
Exemplo: [Para recuperar os valores das colunas selecionadas resultam de uma tabela]
Resultado:
3 registros selecionados.
Se você quiser ver os dados nas colunas ocultas, você precisa executar o comando “DESCRIBE”.
Sintaxe:
Exemplo:
Resultado:
3 registros selecionados.
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::
Sintaxe: [Para modificar o nome da coluna do nome antigo para o novo nome de uma tabela]
Soltando as mesas
Para excluir qualquer tabela, você precisa usar o comando “DROP” da seguinte forma:
Sintaxe:
Para excluir toda a hierarquia da tabela (incluindo gatilhos e relação), você precisa usar o comando “DROP
TABLE HIERARCHY”.
Sintaxe:
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.
Sintaxe:
Sintaxe: [Para recuperar valores de uma tabela diretamente com o nome do esquema]
Resultado:
3 registros selecionados.
Resultado:
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.
Sintaxe:
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.]
Exemplo:[ERROConsulta aleatória]
Resultado:[consulta correta]
Exemplo:[consulta correta]
Resultado:
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:
Exemplo:
Resultado: quando você tentar inserir uma nova linha com o valor de id existente, ele mostrará este
resultado:
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:
Exemplo: Para criar a tabela 'vendedores' com “sid” como chave primária
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:
Exemplo: [Para criar uma tabela chamada 'salesboys' com coluna de chave estrangeira 'sid']
Se você digitou um número desconhecido, que não está armazenado na tabela “shopper.salesboys”, ele
mostrará um erro de SQL.
Resultado:
Verificando restrição
Você precisa usar essa restrição para adicionar restrições condicionais para uma coluna específica em uma
tabela.
Sintaxe:
Inserindo valores
Sintaxe:
Sintaxe:
Sintaxe:
Sintaxe:
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:
Índices de queda
Para descartar o índice, você usa a seguinte sintaxe:
Sintaxe:
Exemplo:
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:
Sintaxe:
Sintaxe:
Exemplo: Criando gatilho para a tabela shopper.sales1 para inserir números de chave primária
automaticamente
Sintaxe:
Exemplo:
Resultado:
ID ITEMNAME QUANTIDADE
------------------- ----------
3 bicos 100
2 pães 100
2 registros selecionados.
Sintaxe:
Resultado:
3 registros selecionados.
Soltando um gatilho
Aqui está como um gatilho de banco de dados é descartado:
Sintaxe:
Exemplo:
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.
Tipos de Sequências
Existem dois tipos de sequências disponíveis:
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)
Sintaxe:
Exemplo: [Para criar uma nova sequência com o nome 'sales1_seq' e aumentando os valores de 1]
Visualizando as sequências
Você pode visualizar uma sequência usando a sintaxe fornecida abaixo:
Sintaxe:
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:
Resultado:
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.
Sintaxe:
Sintaxe:
Exemplo: [Para adicionar uma nova coluna de tabela à visualização existente 'view_sales1']
Soltando a visualização
Você pode descartar uma exibição usando a seguinte sintaxe:
Sintaxe:
Exemplo:
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.
Sintaxe:
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:
Exemplo:
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:
Exemplo:
Inserir valores xml na tabela, documentos XML bem formados são inseridos na coluna de tipo XML usando
a instrução SQL 'INSERT'.
Sintaxe:
</catálogo>')"
Sintaxe:
Exemplo:
<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>
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.
Backup off-line
Resultado:
Resultado:
db2 terminar
Exemplo:
Resultado:
backup on-line
Para começar, você precisa alterar o modo de registro circular para registro de arquivo.
Resultado:
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.
Você pode fazer backup offline por segurança, ativar o banco de dados e conectar-se a ele.
Resultado:
Sintaxe:
Exemplo:
db2ckbkp
/home/db2inst1/ONE.0.db2inst1.DBPART000.20140722112743.001
Listando o histórico de arquivos de backup
Sintaxe:
Resultado:
-------------------------------------------------- ----------
----------------
Contém 4 tablespace(s):
00001 SYSCATSPACE
00002 USERSPACE1
00003 SYSTOOLSPACE
00004 TS1
-------------------------------------------------- ----------
----------------
Comentário: DB2 BACKUP ONE OFFLINE
ComeçarHorário: 20140722105345
Estado: A
-------------------------------------------------- ----------
----------------
EID:3 Localização: /home/db2inst1
ComeçarHora: 20140722112239
Estado: A
-------------------------------------------------- ----------
----------------
EID:4 Localização:
Informação SQLCA
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
Estado: A
-------------------------------------------------- -----------
----------------
EID:5 Localização: /home/db2inst1
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
-------------------------------------------------- ----------
----------------
EID:6 Localização:
Sintaxe:
Exemplo:
Resultado:
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:
Exemplo:
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:
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.
A autorização pode ser dada aos usuários com base nas categorias abaixo:
As autoridades fornecem controles dentro do banco de dados. Outras autoridades para banco de dados
incluem LDAD e CONNECT.
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:
Ao trabalhar com as instruções SQL, o modelo de autorização do DB2 considera a combinação das
seguintes permissões:
É 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:
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.
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:
ACCESSCTRL: permite conceder e revogar todos os privilégios de objeto e autoridades de banco 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.
QUIESCE_CONNECT: Permite acessar o banco de dados enquanto ele está quiesce (temporariamente
desativado).
Privilégios
SETSESSIONUSER
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:
DROPIN
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.
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
EXCLUIR
Í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
SELECIONE
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
EXECUTAR
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
Exemplo: [Para criar uma nova função chamada 'vendas' para adicionar alguma tabela a ser gerenciada por
algum usuário ou grupo]
Resultado:
Exemplo: [Para adicionar permissão para gerenciar uma tabela 'shope.books' à função 'sales']
Resultado:
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.)
Resultado:
Hierarquias de funções
Para criar hierarquias para funções, cada função recebe permissões/associação com outra função.
Exemplo: [Para fornecer permissão de uma função 'vendas' para outra função 'produção']
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.
1. Transparente
2. Plugar
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.
DBA user-id = “db2my1”, grupo = “db1my1adm”, senha = “db2my1” Admin user-id = “my1adm”, grupo =
“dbmy1ctl”.
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.
# 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
Passo 1: verifique se o servidor LDAP local está em execução. Usando o comando abaixo:
Este comando deve listar o deamon LDAP que representa seu servidor LDAP:
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
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.
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'
ldapsearch –x |mais
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.
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.
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.
;------------------------------------------------- ----------
; 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.
;------------------------------------------------- ----------
; 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.