Cloud with rain
.:G
G:.
0 and 1 serie, black on white
pulled card
myjsp.feelinglinux.com
ver. 1.1.9-4
Hallo, welcome to my world.
Here you can find some stuff about computer science.
<<< Enjoy your visit! >>>
0 and 1 serie, white on black

Esperienza di installazione IBM DB2 UDB 6.1 Personal Edition su Linux RedHat 7.0

        Scritto: Giansante Gabriele, 2001     

Introduzione

Con questo articolo, vorrei mostrare quello che e' stato il primo impatto con l'installazione di
IBM DB2 UDB 6.1 Personal Edition su Linux RedHat 7.0.
Ho scritto l'articolo mentre installavo il server, in modo da non omettere alcun passaggio. Il tutto e' avvenuto via ssh da remoto, dopo aver inserito nei giorni passati il CD nel lettore della macchina "cavia".

Non confondiamo quest'esperienza con un manuale di installazione. Infatti ho riportato proprio tutto quello che ho fatto, comprese azioni che potevano essere fatte piu' comodamente o piu' correttamente in altro modo. Il risultato finale e' un database funzionante, ma con ulteriori configurazioni da effettuare (che esulano dagli scopi di questo articolo).

L'esperienza

Ho un CD con la citata versione del database IBM ed e' da tempo che pensavo di installarlo per provarne le funzionalita'. Premetto che di DB2 non ho saputo mai niente e quindi sono partito da zero e senza documentazione, l'unico modo per imparare veramente, secondo me, tranne i casi in cui non si riesce ad andare avanti.
Voglio condividere con questo articolo tutti i passi dell'installazione, esattamente nell'ordine da me seguito. Ci sono molte cose che potevano essere fatte in modo migliore e soprattutto in ordine diverso, ma non si tratterebbe piu' della mia esperienza...
Ad esempio, l'installazione dovrebbe partire con "db2setup" invece che fare le cose a mano come ho fatto in parte.

Installazione file

Con un ls sulla directory del CD, ho ottenuto il seguente risultato:
  [root@nomeserver cdrom]# ls
  LicenseIPLAeng.htm  LicenseLI.htm  Refresh.readme  TRANS.TBL  db2  
  db2_deinstall  db2_install  db2setup
La prima cosa che ha attirato la mia attenzione e' il file db2_install. Chissa' perche' non ho fatto caso a db2setup. Il modo corretto di procedere prevede il lancio di db2setup, ma siccome sono un impulsivo, ho lanciato db2_install. Niente di male, per carita', pero'...
Quando chiede cosa installare, ho digitato DB2.PERS.
  [root@nomeserver cdrom]# ls
  LicenseIPLAeng.htm  LicenseLI.htm  Refresh.readme  TRANS.TBL  db2  
  db2_deinstall  db2_install  db2setup
  [root@nomeserver cdrom]# ./db2_install 
 
 
  Specify one or more of the following keywords, \nseparated by spaces, to install DB2 
  products.\n

  DB2.PERS - DB2 UDB Personal Edition
  DB2.SDK - SoftWare Developer's Kit
  DB2.CAE - Administration Client
  Enter "help" to redisplay product names, enter "quit" to exit.
  ***********************************************************
  DB2.PERS
  Installing db2/db2cliv61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2cliv61              ########################################### [100%]
  Installing db2/db2cucs61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2cucs61              ########################################### [100%]
  Installing db2/db2jdbc61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2jdbc61              ########################################### [100%]
  Installing db2/db2rte61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2rte61               ########################################### [100%]
  Installing db2/db2engn61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2engn61              ########################################### [100%]
  Installing db2/db2das61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2das61               ########################################### [100%]
  Installing db2/db2repl61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2repl61              ########################################### [100%]
  Installing db2/db2wcc61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2wcc61               ########################################### [100%]
  Installing db2/db2smpl61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2smpl61              ########################################### [100%]
  Installing db2/db2cnvj61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2cnvj61              ########################################### [100%]
  Installing db2/db2cnvk61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2cnvk61              ########################################### [100%]
  Installing db2/db2cnvc61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2cnvc61              ########################################### [100%]
  Installing db2/db2cnvt61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2cnvt61              ########################################### [100%]
  Installing db2/db2pelic61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2pelic61             ########################################### [100%]
  Installing db2/db2adt61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2adt61               ########################################### [100%]
  Installing db2/db2adts61-6.1.0-13.i386.rpm ... 
  Preparing...                ########################################### [100%]
     1:db2adts61              ########################################### [100%]
Lo script termina cosi'. Dove vengono salvati i file?
Con una piccola ricerca, oppure leggendo la lista dei file in uno qualsiasi dei package rpm installati, si trova che DB2 e' stato messo in /usr/IBMdb2/V6.1/.

La documentazione

Questo paragrafo puo' essere saltato, e' presente solo perche' si tratta di azioni che ho compiuto, alla ricerca di una documentazione che non ho trovato (forse anche un po' per pigrizia cronica).
Nella directory di db2 ce n'e' una dal nome doc. Si tratta della documentazione necessaria alla gestione tramite il Control Center, un programma fornito a corredo che comunque non posso usare (e non mi interessa farlo) non avendo fatto il setup completo (vedi paragrafi successivi).

La documentazione presente deve essere installata con il comando doc/db2insthtml.
Lo script di installazione segue la localizzazione e la documentazione prevede solo l'inglese (en_US). La macchina, invece, ha come locale "it_IT". Quindi, lanciare lo script solo con
  /usr/IBMdb2/V6.1/doc/db2insthtml 
non ha funzionato, costringendomi a specificare il locale, ovvero
  /usr/IBMdb2/V6.1/doc/db2insthtml en_US
Tutto OK stavolta.
Il comando bin/db2help consente la navigazione delle pagine cosi' installate, ma lancia per default il browser Netscape (almeno cosi' e' lo script che ho io). Se si lavora da remoto, con una console, tipicamente non si ha la possibilita' di eseguire programmi grafici. Quindi, per usare bin/db2help da remoto, si puo' eseguire
  db2help -b lynx
dove l'opzione "-b" serve a specificare il browser da usare (lynx, in questo caso).
Il comando pero' non da soddisfazioni: c'e' un errore di percorso all'interno dello script. Nel mio caso, l'help e' stato installato in doc/html/db2help/... mentre db2help cerca i file in doc/html/....
Con vi, ho aperto bin/db2help, ho cercato per "html" (/html[INVIO]) ed ho modificato come segue:
  if [[ -z "$theKeyword" ]] then
          theFile="${DB2DIR?}/doc/html/db2help/index.htm"
          launchBrowser
          return 0

  # Special-case argument of "search" to go directly to search form.
  elif [[ "$theKeyword" = "search" ]] then
          theFile="${DB2DIR?}/doc/html/db2help/db2srch.htm"
          launchBrowser
          return 0
aggiungendo "/db2help" nei percorsi. Adesso funziona!!!

Pubblicita'
Amministrazione database

Dovrei aver installato tutto, almeno per quanto riguarda i file. Mi sorge un dubbio, dove vengono memorizzati i dati, le tabelle, ecc.? Come si amministra il db e con quali utenti? Come parte il server DB2? Manca evidentemente qualcosa, visto che l'unica cosa fatta dall'installer e' l'installazione degli rpm.
Sono andato a guardare con piu' attenzione la directory principale del cd. Questa volta ho visto che esiste "db2setup". Guarda un po' e' proprio l'anello mancante.
Devo quindi configurare DB2.

Dal cdrom, ho lanciato db2setup. In realta', si potevano installare anche i package con questo comando invece che seguire il metodo utilizzato. Comunque, sbagliando si impara.

All'apparire del menu, con i tasti "freccia" sono andato su "Create...":
"To create a DB2 Instance, or the Administration Server, select Create."
L'installazione era stata gia' fatta a mano.

Con riferimento alla [figura 1], spostarsi su "Create a DB2 Instance." e selezionare quest'opzione con la "barra (spazio) della tastiera".
In pratica viene chiesto di creare un utente con un proprio gruppo (e' meglio che ne abbia uno proprio). Questo utente e' colui che potra' lanciare il server ed avra' i permessi per memorizzare tutti i dati. Non e' prudente usare root o un qualsiasi altro utente gia' esistente!
Tanto per modificare qualcosa, usero' i seguenti dati:
  User Name:     db2user
  Group Name:    db2ammin
  HomeDirectory: /home/db2user
  Password:      quella che vi pare
Andando su proprieta' si possono modificare altri parametri relativi al servizio.
In particolare ho cambiato la porta in 55001 (numero casuale, ma diverso da 50000, cioe' l'originale). Se in queste proprieta' si dice di non far partire automaticamente db2 ad ogni riavvio, il server puo' essere fatto partire a mano con bin/db2start, come indicato nell'help.
Dando OK, si arriva alla configurazione dell'utente con cui eseguire le funzioni definite dall'utente e le stored procedure ([figura 2]).
Anche qui, ho cambiato leggermente i valori:
  User Name:     db2fenc
  Group Name:    db2fadm
  HomeDirectory: /home/db2fenc
  Password:      quella che vi pare
Ok, l'istanza e' stata creata. Ci sarebbe ([figura 3]) da creare il server di amministrazione, ma dovrebbe essere interessante vedere cos'e' cambiato creando l'istanza. Eventualmente la sua creazione puo' avvenire successivamente.
Andando avanti si viene avvertiti della mancanza della creazione del server di amministrazione. Nel messaggio di warning ([figura 4]) si fa presente che senza non si puo' amministrare DB2 con tool di configurazione automatica ed in particolare con il Control Center, un'interfaccia grafica per l'amministrazione. Poco male, ci dovra' pur essere una console per l'amministrazione a linea di comando come sqlplus di Oracle, no? Magari si impara di piu' dando direttamente i comandi a mano. Provo ad andare avanti cosi' premendo OK.
In [figura 5], viene mostrato il report delle impostazioni indicate.
Continuo... alla fine completa il tutto ma con errori ([figura 6])!!! Vediamo un po' cosa dice.
L'errore si e' verificato sull'avvio dell'istanza del DB ([figura 7]).
Guardando i log ([figura 8]) il problema e' semplice ma antipatico:
"The product "DB2 Personal Edition" does not have a valid license key installed and the evaluation period has expired"
Problemi di licenza. Eppure, mi pareva che la licenza fosse valida.

Girando un po' sui file dell'installazione e con informazioni trovate sul solito Google, ho trovato il file adm/db2licm che serve a gestire le licenze sul sistema locale. Come si puo' vedere in [figura 9], fornisce funzioni per la gestione delle licenze in assenza del Control Center, non utilizzabile perche' prima ho scelto di non installare il server di amministrazione.
Sul CD di db2, la licenza e' rappresentata dal file /mnt/cdrom/db2/license/db2udbpe.lic.
La voglio aggiungere:
  [root@nomeserver adm]# ./db2licm /mnt/cdrom/db2/license/db2udbpe.lic 
  DBI1402I License added successfully.  


  [root@nomeserver adm]# 
Mi sono scordato il "-a" ma sembra averla aggiunta!
Riprovo con il comando che ha dato errore in fase di setup, spostandomi prima nella directory install di db2:
  ./db2iexec db2user . sqllib/db2profile
Faccio partire il server...
  su - db2user
  db2start
Sempre come utente db2user, se faccio ps -aux, vedo DB2 che gira in memoria. Mi diverto un poco.
  [db2user@nomeserver db2ammin]$ db2
  (c) Copyright IBM Corporation 1993,1999
  Command Line Processor for DB2 SDK 6.1.0

  You can issue database manager commands and SQL statements from the command 
  prompt. For example:
      db2 => connect to sample
      db2 => bind sample.bnd

  For general help, type: ?.
  For command help, type: ? command, where command can be
  the first few keywords of a database manager command. For example:
   ? CATALOG DATABASE for help on the CATALOG DATABASE command
   ? CATALOG          for help on all of the CATALOG commands.

  To exit db2 interactive mode, type QUIT at the command prompt. Outside 
  interactive mode, all commands must be prefixed with 'db2'.
  To list the current command option settings, type LIST COMMAND OPTIONS.

  For more detailed help, refer to the Online Reference Manual.

  db2 =>
Sono entrato nella console. Per chi ha usato la console di Oracle, MySQL o altri DB, attenzione che questa non vuole il ";" finale!!!
Voglio creare il database "gabriele" con la tabella "dati(nome: varchar, cognome: varchar, eta: int, datanascita: date)", senza pero' badare ad alias, grant e simili...
  db2 => ? create database
  CREATE DATABASE database-name
  [ AT NODE | [ON path] [ALIAS database-alias]
  [USING CODESET codeset TERRITORY territory]
  [COLLATE USING {SYSTEM | IDENTITY | COMPATIBILITY}]
  [NUMSEGS numsegs] [DFT_EXTENT_SZ dft_extentsize]
  [CATALOG TABLESPACE tblspace-defn] [USER TABLESPACE tblspace-defn]
  [TEMPORARY TABLESPACE tblspace-defn] [WITH "comment-string"] ]

  tblspace-defn:
    MANAGED BY { SYSTEM USING ('string' [ {,'string'} ... ] ) |
    DATABASE USING ({FILE | DEVICE} 'string' number-of-pages
    [ {,{FILE | DEVICE} 'string' number-of-pages} ... ] ) }
    [EXTENTSIZE number-of-pages] [PREFETCHSIZE number-of-pages]
    [OVERHEAD number-of-milliseconds] [TRANSFERRATE number-of-milliseconds]

  db2 => create database gabriele
  DB20000I  The CREATE DATABASE command completed successfully.

  db2 => connect to gabriele

     Database Connection Information

   Database server        = DB2/LINUX 6.1.0
   SQL authorization ID   = DB2USER
   Local database alias   = GABRIELE

  db2 => create table dati (id int not null primary key, nome varchar(40) not null, 
  cognome varchar(40) not null,   eta int, datanascita date)
  DB20000I  The SQL command completed successfully.
Voglio ottenerne una descrizione...
  db2 => ? describe
  DESCRIBE {select-statement |
  {TABLE | INDEXES FOR TABLE} table-name [SHOW DETAIL] }

  db2 => describe table dati

  Column                         Type      Type
  name                           schema    name               Length   Scale Nulls
  ------------------------------ --------- ------------------ -------- ----- -----

    0 record(s) selected.

  SQL0100W  No row was found for FETCH, UPDATE or DELETE; or the result of a 
  query is an empty table.  SQLSTATE=02000
No... non va bene... provo con il "select-statement":
  db2 => describe select * from dati

  SQLDA Information

   sqldaid : SQLDA     sqldabc: 896  sqln: 20  sqld: 5

   Column Information

   sqltype               sqllen  sqlname.data                    sqlname.length
   --------------------  ------  ------------------------------  --------------
   496   INTEGER              4  ID                                           2
   448   VARCHAR             40  NOME                                         4
   448   VARCHAR             40  COGNOME                                      7
   497   INTEGER              4  ETA                                          3
   385   DATE                10  DATANASCITA                                 11
Ok, ok, non posso pretendere di saper usare subito DB2 senza leggere alcun manuale. Comunque sono riuscito ad ottenere una specie di descrizione della tabella, seppur in modo strano.
Provo ad inserire dei valori e ad effettuare una semplice query.
  db2 => insert into dati values (1,'Gabriele','Giansante',29,null)
  DB20000I  The SQL command completed successfully.

  db2 => commit
  DB20000I  The SQL command completed successfully.

  db2 => select * from dati

  ID   NOME                     COGNOME                    ETA         DATANASCITA
  ---- ------------------------ -------------------------- ----------- -----------
     1 Gabriele                 Giansante                           29 -          

  1 record(s) selected.
Basta, esco e chiudo l'ambiente, fermando anche il server.
  db2 => disconnect gabriele
  DB20000I  The SQL DISCONNECT command completed successfully.
  db2 => quit
  DB20000I  The QUIT command completed successfully.

  [db2user@nomeserver db2ammin]$ db2stop
  SQL1064N  DB2STOP processing was successful.
Pare che tutto funzioni...
Non e' stato molto difficile, anche se l'amministrazione di un server DB non puo' fermarsi qui.
Infatti, il lavoro necessario per tirare su un ambiente di produzione o per lo sviluppo e' molto piu' ampio, ma non rientra negli scopi di questo articolo.


Hai trovato utile questo articolo?
Aiutami a condividerlo o metti un "mi piace".
Grazie mille!


Gli strumenti di condivisione (Google+, Facebook) sono visibili in alto a destra solo dopo aver accettato la policy di utilizzo dei cookie per questo sito.
FAQ - Come faccio a cambiare la mia scelta?

 

Strumenti (myjsp.feelinglinux.com)
Gioco: allenamento con la tastiera Strumenti di codifica/decodifica URI (%-encoding) e Base64 Strumenti di calcolo online per IP e Reti
QUIZ GAME
Quiz game

Cerca @myjsp.feelinglinux.com

Pubblicita'