Infra - Linux

Instalando o poderoso banco de dados IBM DB2 (SEM SEGREDOS)!

Neste documento encontraremos os procedimentos básicos de instalação do pacote servidor (Linux) e cliente (Windows) do banco de dados DB2 Express-C da IBM, disponível gratuitamente em seu site oficial. A versão gratuita proporciona todos os recursos da versão comercial, exceto as limitações (4G de memória e 2 processadores).

por Alessandro de Oliveira Faria



Introdução

O DB2 Universal Database Express-C roda em Linux e Windows, com restrições para até dois servidores equipados com chips de duplo núcleo e até quatro Gigabytes de memória.

Apesar da limitação de hardware, o software está liberado para qualquer número de conexões simultâneas ou tamanho do banco de dados e pode ser empregado comercialmente ou até mesmo incluído em pacotes de softwares, como distribuições gratuitas ou pagas do sistema operacional Linux, por exemplo.

Dentre as três maiores fabricantes de bancos de dados do mundo, no entanto, a IBM é a última a divulgar uma versão gratuita. A Microsoft foi a primeira, com o seu SQL Server Express e a Oracle veio logo atrás com o Database 10g Express, limitada a 4 Gigabytes de tamanho máximo por banco, servidor com apenas um processador e no máximo um Gigabyte de memória.

A família DB2


DB2 Universal Database Enterprise Server Edition: Atende todas as necessidades do servidor de banco de dados de empresas de médio a grande porte.

DB2 Universal Database Express Edition: Banco de dados completo para pequenas e médias empresas. Oferece excelente viabilidade com um baixo custo de entrada. Fácil de instalar e implementar.

DB2 Universal Database Workgroup Server Edition: O servidor de banco de dados departamental para pequenas empresas.

DB2 Universal Database Personal Edition: Um mecanismo de banco de dados relacional ideal para desenvolvedores no processo de prototipação de aplicações que precisam acessar outras bases de dados DB2. Não permite multi-usuário.

DB2 Everyplace Database Edition: Esta edição é ideal para dispositivos móveis. Seu banco de dados relacional (com 200 KB). É capaz de manipular consultas de dados de alto-desempenho, manipulando grandes volumes de dados remotos.

DB2 Everyplace Enterprise Edition: Projetado para atender às necessidades de um cliente corporativo. A oferta inclui o banco de dados DB2 Everyplace robusto de alto desempenho.

DB2 Everyplace Express Edition: Voltado especificamente para atender à necessidade de clientes de médio porte (número de funcionários de 100 a 999) para uma infra-estrutura de aplicativos remotos simples e viável.

Fontes:
DICA: Consulte também o guia de informações DB2:

Download

Instalação no braço para MACHO (modo console)

A instalação no modo console pode ser necessário por diversos motivos, como por exemplo o JAVA não estar devidamente instalado no servidor, dentre outros inúmeros motivos. Sendo assim, vamos abandonar o mouse e descer o dedo para o teclado...

Após o download, descompacte o arquivo na pasta de sua preferência com o comando tar:

$ tar -zxvf db2exc_LNX_26x86.tar.gz
db2exc_LNX_26x86/
db2exc_LNX_26x86/db2/
db2exc_LNX_26x86/db2/linux26/
db2exc_LNX_26x86/db2/linux26/IBM_db2cliv81-8.1.2-97.i386.rpm
db2exc_LNX_26x86/db2/linux26/IBM_db2crte81-8.1.2-97.i386.rpm
...
db2exc_LNX_26x86/db2setup
db2exc_LNX_26x86/db2_install
db2exc_LNX_26x86/db2_deinstall

Entre na pasta db2exc_LNX_26x86 e execute o programa db2_install como super-usuário (root). Digite a string DB2.EXP para iniciar a instalação do pacote DB2 Express como no exemplo abaixo:

$ cd db2exc_LNX_26x86/
$ su
# ./db2_install


Especifique uma ou mais das palavras-chave separadas por espaços para instalar produtos do DB2.



Digite "help" para reexibir nomes de produtos.

Digite "quit" para sair.

O arquivo de log de instalação pode ser encontrado em /tmp/db2_install_log.7328.

Programa concluído com êxito!

As instruções abaixo criam o usuário administrador do banco (DAS - DB2 Administrator Server), utilizado para executar ferramentas de suporte do DB2:

# groupadd dasadm1
# useradd dasusr1 -m -g dasadm1 -d /home/dasusr1
# passwd dasusr1

Changing password for dasusr1.
New password: ******
Re-enter new password: ******
Password changed

Agora siga as instruções abaixo para criar o usuário dono da instanciação do banco de dados no Linux:

# groupadd db2grp1
# useradd db2inst1 -m -g db2grp1 -d /home/db2inst1
# passwd db2inst1


Agora o usuário para a execução das funções de usuários (UDFs) e Stores procedures:

# groupadd db2fgrp1
# useradd db2fenc1 -m -g db2fgrp1 -d /home/db2fenc1
# passwd db2fenc1


Para criar a instância do serviço do banco de dados DB2, determinar o usuário dono e o usuário de acesso a instância, utiliza o comando db2icrt como no exemplo abaixo. O comando funcionará apenas se os usuários forem criando anteriormente.

Podemos dizer que uma instância é o ambiente configurável do DB2. Podem existir múltiplas instâncias por máquina e possuem configurações distintas e independentes. Por serem gerenciadas separadamente, podemos parar uma instância de desenvolvimento sem afetar a instância de produção.

# cd /opt/IBM/db2/V8.1/instance/
# ./db2icrt -u db2fenc1 db2inst1

DBI1070I Program db2icrt completed successfully.

Para configurar a porta de utilização, insira as linhas abaixo editando o arquivo /etc/services do Linux. Edite o arquivo:

# vi /etc/services

Insira as seguintes linhas:

db2inst1 50000/tcp db2inst1_i 50001/tcp
Licenciando o DB2: Para ativar o tipo de licença, utilize o comando db2licm e indique a localização do arquivo db2exp.lic

# cd /opt/IBM/db2/V8.1/adm
# ./db2licm -a /neti/install/db2/db2exc_LNX_26x86/db2/license/db2exp.lic
DBI1402I License added successfully. DBI1426I This product is now licensed for use as specified in the License Acceptance and License Information documents pertaining to the licensed copy of this product. USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF THE TERMS OF THE IBM LICENSE ACCEPTANCE AND LICENSE INFORMATION DOCUMENTS, LOCATED IN THE FOLLOWING DIRECTORY: /opt/IBM/db2/V8.1/license/pt_BR.utf8 Para visualizar a configuração da instância, transforme-se em db2inst1 (dono da instância) e execute o comando "db2 get dbm cfg"m que se encontra na pasta /opt/IBM/db2/V8.1/bin, como no exemplo abaixo:

# cd /opt/IBM/db2/V8.1/bin
# su db2inst1
$ ./db2 get dbm cfg
 Database Manager Configuration
 Node type = Database Server with local and remote clients
 Database manager configuration release level            = 0x0a00
 CPU speed (millisec/instruction)             (CPUSPEED) = 2,243635e-07
 Max number of concurrently active databases     (NUMDB) = 8
 Data Links support                          (DATALINKS) = NO
 Federated Database System Support           (FEDERATED) = NO
 Transaction processor monitor name        (TP_MON_NAME) =
 Default charge-back account           (DFT_ACCOUNT_STR) =
 Java Development Kit installation path       (JDK_PATH) = /opt/IBMJava2-142
 Diagnostic error capture level              (DIAGLEVEL) = 3
 Notify Level                              (NOTIFYLEVEL) = 3
 Diagnostic data directory path (DIAGPATH) = /home/db2inst1/sqllib/db2dump
 Default database monitor switches
   Buffer pool                         (DFT_MON_BUFPOOL) = OFF
   Lock                                   (DFT_MON_LOCK) = OFF
   Sort                                   (DFT_MON_SORT) = OFF
   Statement                              (DFT_MON_STMT) = OFF
   Table                                 (DFT_MON_TABLE) = OFF
   Timestamp                         (DFT_MON_TIMESTAMP) = ON
   Unit of work                            (DFT_MON_UOW) = OFF
 Monitor health of instance and databases   (HEALTH_MON) = ON
 SYSADM group name                        (SYSADM_GROUP) = DB2GRP1
 SYSCTRL group name                      (SYSCTRL_GROUP) =
 SYSMAINT group name                    (SYSMAINT_GROUP) =
 SYSMON group name                        (SYSMON_GROUP) =
 Client Userid-Password Plugin          (CLNT_PW_PLUGIN) =
 Client Kerberos Plugin                (CLNT_KRB_PLUGIN) =
 Group Plugin                             (GROUP_PLUGIN) =
 GSS Plugin for Local Authorization    (LOCAL_GSSPLUGIN) =
 Server Plugin Mode                    (SRV_PLUGIN_MODE) = UNFENCED
 Server List of GSS Plugins      (SRVCON_GSSPLUGIN_LIST) =
 Server Userid-Password Plugin        (SRVCON_PW_PLUGIN) =
 Server Connection Authentication          (SRVCON_AUTH) = NOT_SPECIFIED
 Database manager authentication        (AUTHENTICATION) = SERVER
 Cataloging allowed without authority   (CATALOG_NOAUTH) = NO
 Trust all clients                      (TRUST_ALLCLNTS) = YES
 Trusted client authentication          (TRUST_CLNTAUTH) = CLIENT
 Bypass federated authentication            (FED_NOAUTH) = NO
 Default database path                       (DFTDBPATH) = /home/db2inst1
 Database monitor heap size (4KB)          (MON_HEAP_SZ) = 90
 Java Virtual Machine heap size (4KB)     (JAVA_HEAP_SZ) = 2048
 Audit buffer size (4KB)                  (AUDIT_BUF_SZ) = 0
 Size of instance shared memory (4KB)  (INSTANCE_MEMORY) = AUTOMATIC
 Backup buffer default size (4KB)            (BACKBUFSZ) = 1024
 Restore buffer default size (4KB)           (RESTBUFSZ) = 1024
 Sort heap threshold (4KB)                  (SHEAPTHRES) = 20000
 Directory cache support                     (DIR_CACHE) = YES
 Application support layer heap size (4KB)   (ASLHEAPSZ) = 15
 Max requester I/O block size (bytes)         (RQRIOBLK) = 32767
 Query heap size (4KB)                   (QUERY_HEAP_SZ) = 1000
 Workload impact by throttled utilities(UTIL_IMPACT_LIM) = 10
 Priority of agents                           (AGENTPRI) = SYSTEM
 Max number of existing agents               (MAXAGENTS) = 200
 Agent pool size                        (NUM_POOLAGENTS) = 100(calculated)
 Initial number of agents in pool       (NUM_INITAGENTS) = 0
 Max number of coordinating agents     (MAX_COORDAGENTS) = MAXAGENTS
 Max no. of concurrent coordinating agents  (MAXCAGENTS) = MAX_COORDAGENTS
 Max number of client connections      (MAX_CONNECTIONS) = MAX_COORDAGENTS
 Keep fenced process                        (KEEPFENCED) = YES
 Number of pooled fenced processes         (FENCED_POOL) = MAX_COORDAGENTS
 Initial number of fenced processes     (NUM_INITFENCED) = 0
 Index re-creation time and redo index build  (INDEXREC) = RESTART
 Transaction manager database name         (TM_DATABASE) = 1ST_CONN
 Transaction resync interval (sec)     (RESYNC_INTERVAL) = 180
 SPM name                                     (SPM_NAME) =
 SPM log size                          (SPM_LOG_FILE_SZ) = 256
 SPM resync agent limit                 (SPM_MAX_RESYNC) = 20
 SPM log path                             (SPM_LOG_PATH) =
 TCP/IP Service name                          (SVCENAME) =
 Discovery mode                               (DISCOVER) = SEARCH
 Discover server instance                (DISCOVER_INST) = ENABLE
 Maximum query degree of parallelism   (MAX_QUERYDEGREE) = ANY
 Enable intra-partition parallelism     (INTRA_PARALLEL) = NO
 No. of int. communication buffers(4KB)(FCM_NUM_BUFFERS) = 1024
 Number of FCM request blocks              (FCM_NUM_RQB) = AUTOMATIC
 Number of FCM connection entries      (FCM_NUM_CONNECT) = AUTOMATIC
 Number of FCM message anchors         (FCM_NUM_ANCHORS) = AUTOMATIC

Prováveis problemas: 

Repare no parâmetro (JDK_PATH) apontando para o JAVA da IBM. Caso você esteja utilizando o JAVA da SUN, altere o path do JDK com o comando abaixo:

$ db2 update dbm cfg using JDK_PATH /usr/lib/SunJava2-1.4.2
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.

Nome do serviço TCP/IP deve ser atribuído no parâmetro SVCENAME (o mesmo nome utilizado no arquivo /etc/services). Para gravar o novo nome do serviço, siga o exemplo abaixo:

$ ./db2 update dbm cfg using SVCENAME db2inst1
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.

Devemos também definir o protocolo TCP do serviço e ativar a inicialização automática do banco de dados. Com o comando db2set efetuamos esta tarefa:

$ su
# chmod 777 db2set
# exit
$ ./db2set db2comm=tcpip
$ ./db2set DB2AUTOSTART=yes


Para levantar o serviço db2, utilize o comando db2start:

$ ./db2start
SQL1063N DB2START processing was successful.

Pronto, o servidor IBM DB2 está no ar, em funcionamento e pronto para uso. Instalação tranqüila (modo gráfico)

Primeiros passos: E agora, o que fazer?

Instalação na plataforma Windows

Alessandro de Oliveira Faria

Alessandro de Oliveira Faria - Sócio-proprietário da empresa NETi TECNOLOGIA fundada em Junho de 1996 (http://www.netitec.com.br), empresa especializada em desenvolvimento de software e soluções biométricas, Consultor Biométrico na tecnologia de reconhecimento facial, atuando na área de tecnologia desde 1986 assim propiciando ao mercado soluções em software nas mais diversas linguagens e plataforma, levando o Linux a sério desde 1998 com desenvolvimento de soluções open-source, membro colaborador da comunidade Viva O Linux, mantenedor da biblioteca open-source de vídeo captura entre outros projetos.