|
||
| [IT] Esperienza di installazione IBM DB2 UDB 6.1 Personal Edition su Linux RedHat 7.0 | ||
|
Esperienza di installazione IBM DB2 UDB 6.1 Personal Edition su Linux RedHat 7.0 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 db2setupLa 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/db2insthtmlnon ha funzionato, costringendomi a specificare il locale, ovvero /usr/IBMdb2/V6.1/doc/db2insthtml en_USTutto 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 lynxdove 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!!!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 pareAndando 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 pareOk, 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/db2profileFaccio partire il server... su - db2user db2startSempre 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 11Ok, 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. |
||
(c) 1999-2006
|