All posts in DB/2

Captura-Database-2BAdministration-2B-2B-253CDiagram-253E-2B-253CSchema-253E-2BEYETEST-2B-2BConnection-2B-252522db2-2BEYEOS-252522-2B-2BIBM-2BData-2BStudio-2B

Procedirem a la instal·lació de la base de dades d’IBM, la DB2 en la seva versió lliure de cost, la DB2 Express-C. Hi ha moltes versions, amb unes possibilitats molt interessants, però per a un entorn de desenvolupament, amb la CE en fem suficient.

Amb els repositoris partner activat, tal i com s’indica a l‘apartat 1 de la sèries de posts Instal·lant una màquina blava, procedirem a instal·lar DB2 desde la paqueteria d’Ubuntu.

sudo apt-get install db2exc

Un cop instal·lat canviarem les contrasenyes dels usuaris creats:

sudo passwd db2inst1
sudo passwd db2fenc1
sudo passwd dasusr1

Ens loginegem com l’usuari gestor de les instàncies DB2, i certifiquem que s’ha instal·lat correctament:

sudo su db2inst1
db2level

DB21085I Instance "db2inst1" uses "64" bits and DB2 code release "SQL09074"
with level identifier "08050107".
Informational tokens are "DB2 v9.7.0.4", "s110330", "IP23243", and Fix Pack
"4".
Product is installed at "/opt/ibm/db2/V9.7".

Creem una nova base de dades, per exemple CORRETGE ;-)


sudo su db2inst1
db2 create database CORRETGE

Cal tenir en compte que quan diem una base de dades, és un sistema de bases de dades, és a dir un objecte que conté esquemes on cada esquema conté taules i cada taula registres.

Ah, i si no voleu tenir problemes, millor definir els noms de tots els objectes en caixa alta, així evitarem haver d’emprar les cometes a l’hora de qualificar-los, i evitar perdre el temps fins que te n’adones que el problema era aquest. Avisats esteu.

Literatura sobre IBM DB2 Express-C.

Per a poder gestionar còmodament la base de dades, en una màquina client amb les X activades instal·larem l’IBM Data Studio, una perspectiva d’eclipse per a la gestió de qualsevol de les DB2 existents al mercat. Descarreguem el full client des del DownloadDirector d’IBM.

que executarem amb la instrucció

/opt/IBM/DS3.1/eclipse

IBM-2Blogo-2Bvintage

En aquesta sèrie de posts explicaré com instal·lar una màquina blava, una particular manera de celebrar el centenari d’IBM, amb l’IBM HTTP Server, IBM DB2 i PHP 5.4 en un Ubuntu Server 10.04 LTS de 64 bits.

D’ençà la versió 6.0 de l’IHS (IBM Http Server) aquest producte només s’instal·la amb el WAS (WebSphere
Application Server). Per a fer-ho des del servei de paqueteria d’ubuntu, editarem l’arxiu /etc/apt/sources.list i descomentarem els reposioris partner :

deb http://archive.canonical.com/ubuntu lucid partner

I actualitzem:
sudo apt-get update


Procedim a instal·lar el paqet WAS CE Community Edition, d’utilització lliure de pagament i més lleguer.

sudo apt-get install wasce-server

I bé, ja el tenim instal·lat, comprovem l’status del servidor
sudo /etc/init.d/wasce-server status
* Websphere CE is running

Però no el veiem operatiu!
Executant el que fa l’start de wasce-server des de root, veiem que es triga prop de quatre minuts en arrencar, en una màquina amb dos processadors i 4GB de RAM, així que és questió d’esperar-se fins accedir al WebSphere Application Server Community Edition pel port 8090 i accedir a la cònsola administrativa.

Usuari: system
Contrasenya: manager

No cal dir que s’ha de canviar anant al menú Security/Users and Groups.

Amb aquesta tècnica podreu totalitzar en columnes amb una única instrucció SQL DB/2.

L’exemple mostra un informe del número d’arxius PF i LF, i altres taules, vistes o índex de cada bilbioteca, recuperant dades de l’arxiu QADBXREF.

Tenim les columnes:
dbxLib -> Nom de la biblioteca
CountPF -> Número de PF’s a la LIB
CountLF -> Número de LF’s a la LIB
CountSQLs -> Número d’altres tipus d’objectes SQL
CountTOTAL -> Total Objectes a la LIB
TestSum -> un exemple de la funció SUM, el valor d’aquesta columna és per a propòsits d’aprenentatge.

Hem creat aquest exemple per a mostrar el truc amb un arxiu de sistema que tothom el te i així provar-ho ràpidament, però el propòsit general del truc és el de crear informes de columnes, com les vendes anuals en quatrimestres.

select dbxLib,
count(case when dbxAtr='PF' then dbxAtr end) as CountPF,
count(case when dbxAtr='LF' then dbxAtr end) as CountLF,
count(case when not(dbxAtr in('LF', 'PF'))
then dbxAtr end) as CountSQLs,
count(dbxAtr) as CountTOTAL,
decimal(sum(case when dbxAtr in('PF', 'TB')
then dbxNFl end), 11, 0) as TestSum
from QADBXREF
group by dbxLib

Aquest truc va ser Hall of Fame a TechTarget el febrer del 2003

Captura-alexcor1-40obelix-iseries.corretge.cat_

Una imatge val més que mil paraules… o dades.

A cops, quan visualitzem els resultats d’un SQL, trobem a faltar una alarma gràfica. Per exemple: Si volem visualitzar el volum de vendes a clients, potser interesant veure en diferents colors els diferents rangs de volum de vendes.

Per a visualitzar diferents colors en els resultats SQL posarem el byte d’atributs abans del camp (o línia) a mostrar. D’igual manera que ‘pintem’ les línies de comentari en el SEU, ‘pintem’ els resultats SQL. Alguns codis que podem emprar:

x'20' Normal
x'21' Reverse
x'22' HI
x'23' HI reverse
x'28' Red
x'29' Red reverse
x'2A' Blink
x'2B' Blink reverse

Per a definir els rangs d’alarmes, emprarem la instrucció CASE d’SQL. Funciona de manera similar a la instrucció CASE d’RPG IV.

+-------------------------------------------------------------------------------+
| |
| |
| +-ELSE NULL---------------+ |
| >--CASE----searched-when-clause----+-------------------------+--END---------> |
| +-simple-when-clause---+ +-ELSE--result-expression-+ |
| |
| searched-when-clause: |
| <-----------------------------------------------------+ | | +----WHEN--search-condition--THEN----result-expression----------------------| | | +-NULL--------------+ | | | | simple-when-clause: | | <-----------------------------------------------+ | | +--expression----WHEN--expression--THEN----result-expression----------------| | | +-NULL--------------+ | | | +-------------------------------------------------------------------------------+

En el proper exemple, mostrarem les taules del sistema que tenen més de 100 camps, i en HI les que tenen més de 250 camps, en roig les que tinguin més de 1000 i la biblioteca parpadejant i la resta en roig les que tinguin més de 2500 camps.

Per a veure el resultat SQL, executeu STRSQL i introduiu aquesta instrucció:

SELECT CASE
WHEN count(*) > 2500 THEN (X'2A'||SYSTEM_TABLE_SCHEMA||X'28')
WHEN count(*) > 1000 THEN (X'28'||SYSTEM_TABLE_SCHEMA)
WHEN count(*) > 250 THEN (X'22'||SYSTEM_TABLE_SCHEMA)
else (' '||SYSTEM_TABLE_SCHEMA)
end AS LIB,
SYSTEM_TABLE_NAME AS TABLE,
COUNT(*) AS FIELDS
FROM QSYS2/SYSCOLUMNS
group by system_table_schema, system_table_name
having count(*) > 100

Aquest truc va guanyar el Hall of Fame Tip del mes d'octubre del 2001 a TechTarget.