Kosmous beyond the clouds: Sviluppo, Formazione e Consulenza Informatica

Script di installazione Oracle su Linux

Introduzione

Storicamente, installare Oracle su Linux non e' un'operazione semplicissima, soprattutto se confrontata con la procedura di installazione su sistemi Windows.

A voler esere precisi, la difficolta' principale e' legata ad una serie di configurazioni che occorre eseguire sul sistema operativo prima di procedere all'installazione vera e propria del software Oracle, la quale risulta invece abbastanza semplice. Oracle e' infatti dotato anche nella versione per Linux di un'installazione grafica, realizzata in Java, molto semplice da utilizzare.

Prima di procedere, quindi, all'installazione su una macchina Linux, occorre eseguire alcuni interventi sul kernel, per modificare dei parametri su valori adatti al motore di Oracle.

Inoltre bisogna creare le directory che ospiteranno il software ed il database vero e proprio, e definire una serie di utenti aventi privilegi amministrativi nei confronti del database.

I parametri da modificare e gli altri interventi di configurazione sono ampiamenti trattati nella documentazione ufficiale Oracle, cui vi rimandiamo in caso di dubbi od incertezze.

Riassumiamo brevemente le operazioni che devono essere effettuate.
Innanzi tutto occorre verificare la presenza di alcuni requisiti minimi, come la versione del kernel e del compilatore C e lo spazio su disco.

L'operazione successiva consiste nel controllare ed eventualmente modificare alcuni parametri del kernel, come ad esempio la dimensione massima di un file, i valori impostati per la gestione della memoria condivisa, il numero massimo di processi gestibili etc.

Tali operazioni sono abbastanza banali per un amministratore di sistema, ma possono apparire ostiche per chi non ha molta dimestichezza con operazioni del genere.

A questo punto occorre creare le directory che ospiteranno il software, e gli utenti e gruppi che diverranno proprietari del software Oracle.

Dopo aver creato gli utenti, occorre impostare alcune variabili necessarie per poter interfacciare correttamente l'utente con il software Oracle.

Lo script si occupa di automatizzare tutta questa serie di controlli e interventi sul sistema necessari alla corretta installazione.

Dopo aver eseguito lo script di seguito proposto, si puo' procedere direttamente all'installazione.

E' consigliabile, per fare questo, eseguire il logout e quindi fare login come utente oracle, o in caso contrario settare correttamente la variabile DISPLAY. In caso contrario l'installer grafico di Oracle rifiutera' di avviarsi. Se scegliete di fare login come utente oracle, abbiate cura dopo aver eseguito lo script e prima di eseguire il logout, di assegnare una password all'utente oracle.

Se eseguite l'installazione direttamente dai cd, dovete lanciare, dopo esservi connessi con l'utente oracle creato dallo script, il file RunInstaller. Evitate di lanciarlo da dentro la cartella in cui e' montato il cdrom (in genere /mnt/cdrom ) perche' altrimenti quando vi verra' richiesto di cambiare il cdrom, il sistema non potra' eseguire umount /mnt/cdrom in quanto, se ci siete dentro, la device risultera' occupata.

Vi consigliamo pertanto di fare il mount ed umount del cdrom da un terminale diverso da quello con cui eseguirete il runInstaller.

Lo script era stato scritto originariamente per un Linux Red Hat versione 7.2, ma e' stato correttamente testato anche su Red Hat 7.3, 8.0, 9.0 e su Debian Woody (sono in corso delle prove su Suse 9.0, Debian Sid e Fedora Core 1). Dovrebbe comunque funzionare correttamente su qualunque Linux della serie 2.4.


Commenti allo script

Ma vediamolo nel dettaglio:

righe 11-54: dichiarazione di alcune funzioni necessarie al trattamento di particolari stringhe (le versioni di librerie, kernel, etc.), alle quali e' gia' stato dedicato un articolo (Le funzioni nella bash);

righe 56-60: viene controllato l'id dell'operatore. Lo script necessita dei permessi di root per poter essere eseguito (in caso contrario non sara' possibile proseguire)

righe 61-69: vengono dichiarate ed impostate alcune variabili, che verranno poi usate per alcuni controlli. Si tratta delle versioni minime necessarie al server Oracle del kernel Linux, delle libc e del compilatore GNU, e della quantita' di swap minima richiesta. I valori derivano dall'articolo di cui sopra e sono bloccanti.

righe 71-80: viene creato un file di disinstallazione. Si tratta di uno script bash che servira' a cancellare tutte le modifiche fatte dall'esecuzione dello script di installazione

righe 82-91: viene creato un file di log, che registrera' tutte le operazioni effettuate dallo script

righe 93-113: il primo controllo, sulla quantita' di swap disponibile. Oracle necessita di una quantita' non indifferente di swap per l'installazione. Nel caso in cui lo swap presente sulla macchina sia inferiore ad 1 Giga, viene creato un file di swap di tale grandezza, proponendo all'utente la scelta della partizione sulla quale crearlo (vengono naturalmente proposte soltanto le partizione che possiedono spazio sufficiente). Tale file sara' poi cancellato dallo script di configurazione post-installazione o a mano dall'amministratore. Solo una piccola notazione sulla potenza della Bash e di Linux: alle righe 105 e 108 viene utilizzato il comando tee per scrivere contemporaneamente lo stesso messaggio sia sullo standard output che sul file di log (il flag -a sta per append). Questa comodita' viene usata in tutto lo script ogni volta che si verifica durante l'esecuzione un evento d'interesse.

righe 115-166: controllo di versione su kernel ( >= 2.4.7-10), libc (>= 2.2.4-19.3) e gcc (>= 2.96.98). La parte riguardante le libc e' probabilmente la meno 'portabile', pensata com'e' per Red Hat (ma e' un'affermazione da verificare) e sicuramente la meno elegante (ma l'unica che ho trovato, per ora).

righe 168-180: l'ultimo controllo bloccante riguarda la presenza sulla macchina di una JVM funzionante e correttamente configurata.

righe 182-210: viene creato un file di backup dei valori che saranno in seguito modificati attraverso il filesystem /proc e l'utilizzzo del file /etc/sysctl.conf.

righe 217-222: viene creata una copia di backup del file /etc/sysctl.conf, che sara' modificato nelle righe successive e viene inserita nell'uninstall una riga di codice che servira' in seguito a ripristinare la situazione iniziale (riga 222).

righe 224-253: controllo e configurazione di semafori. Viene effettuato un controllo sui 4 parametri del file /proc/sys/kernel/sem: SEMMSL, il numero minimo raccomandato di semafori; SEMMNS, il numero massimo di semafori per identificatore; SEMOPM, il numero massimo di operazioni per ogni chiamata semop; SEMMNI, il massimo numero di semafori nel sistema. Per maggiori dettagli su questi parametri, vedere http://www.iglu.org.il/lxr/source/include/linux/sem.h (righe 66 e successive).

righe 255-282: controlla e configura il parametro SHMMAX (file /proc/sys/kernel/shmmax, kernel.shmmax in /etc/sysctl.conf), che regola la grandezza massima di un singolo segmento di memoria condivisa (di solito la meta' della ram, valore sul quale viene impostato se non corretto). Per dettagli vedere http://www.iglu.org.il/lxr/source/include/linux/shm.h.

righe 284-298: controllo e configurazione del parametro SHMMNI (file /proc/sys/kernel/shmmni, kernel.shmmni in /etc/sysctl.conf) che controlla il numero massimo di segmenti di memoria condivisa nell'intero sistema. Dettagli in http://www.iglu.org.il/lxr/source/include/linux/shm.h.

righe 300-317: impostazione del numero massimo di file handles nell'intero sistema (file /proc/sys/fs/file-max, fs.file-max in /etc/sysctl.conf). Il valore minimo e' 65536.

righe 319-331: controllo del range di porte ip. Si trova nel file /proc/sys/net/ipv4/ip_local_port_range (parametro /etc/sysctl.conf: net.ipv4.ip_local_port_range) e va impostato a "1024 65000".

righe 333-343: impostazione del numero massimo di processi comtemporanei (opzione -u di ulimit): valore minimo 16384.

righe 345-353: vengono impostati dei limiti per l'utente oracle, relativi al massimo numero di processi ed al massimo numero di file aperti. Secondo la sintassi di limits.conf (file molto ben commentato), sono presenti per ciascuna voce due limiti: uno soft e uno hard.

righe 355-360: i nuovi parametri sono caricati nel kernel

righe 362-459: vengono creati gruppi ed utenti necessari all'installazione ed esecuzione di Oracle.

I gruppi creati sono:

OSDBA (nome suggerito: dba, e' il gruppo del sistema operativo cui viene concesso il privilegio amministrativo SYSDBA. Cio' significa che tutti gli utenti del Sistema Operativo che appartengono al gruppo "dba" godranno del prilegio SYSDBA di Oracle, privilegio che permette ad esempio di fare lo startup e shutdown del database);

OSOPER (nome suggerito: oper, anche questo e' un gruppo del Sistema Operativo cui viene associato il privelegio Oracle di SYSOPER);

ORAINVENTORY (nome suggerito: oinstall, e' il gruppo proprietario della directory oraInventory che contiene informazioni su tutti i prodotti Oracle installati);

apachegroup (e' il gruppo cui appartiene il proprietario del server Apache che verra' installato da Oracle).

Gli utenti creati sono 2:

uno (nome suggerito: oracle, si sconsiglia di cambiarlo) e' il proprietario dell'installazione del Database, e fara' parte dei gruppi OSOPER e OSDBA;

il secondo (nome suggerito: apache2) e' il proprietario dell'istanza del server Apache sul quale girano i tool web based di Oracle, e fara' parte del gruppo OSOPER.

Unica parte di codice interessante alle righe 399-406 e 419-426: viene utilizzato un file here per poter inserire nello script di disinstallazione le righe relative alla cancellazione degli utenti creati, nella posizione corretta, cioe' prima della cancellazione dei gruppi cui appartengono.

righe 461-475: viene creato il filesystem necessario all'installazione del software. La directory prescelta per l'installazione e' /opt/oracle/product/9.2.0, che viene naturalmente assegnata all'utente .

righe 477-507: viene creata una copia del file ~/.bash_profile dell'utente , nel quale vanno poi inserite una serie di variabili d'ambiente.

righe 509-516: alcuni parametri aggiuntivi necessari per la Red Hat 9.


Conclusioni

E per ora e' tutto. Lo script e' in fieri, alcune nuove features sono gia' in preparazione (tra queste la configurazione post-installazione) e saranno implementate appena possibile.

Vi invitiamo ad inviarci commenti, eventuali segnalazioni di errore e quant'altro.

Nota sull'installazione di Oracle: lo script e' stato testato con successo, come detto, su Red Hat 7.2, 7.3, 8.0 e 8.0a, 9.0 e su Debian Woody.

Ma mentre sulla Red Hat la successiva installazione di Oracle e' riuscita perfettamente, sulla Debian ci sono stati dei problemi dovuti alla JVM installata da Oracle. Si tratta di un problema dovuto (mi pare di aver capito) alla gestione dei thread: comunque sia i tool grafici non funzionano. La mia scarsa conoscenza di Oracle mi ha impedito percio' di verificare l'effettivo funzionamento del db sulla Debian (so far funzionare il tutto solo con i tool grafici), ma penso che, per un dba serio, sia possibile far funzionare il tutto. Quanto prima cerchero' comunque di verificare la cosa di persona (con l'aiuto del suddetto dba...).

L'installazione sulla versione 9.0 della Red Hat invece ha richiesto qualche piccolo aggiustamento, a causa della nuova gestione dei thread implementata in questa versione.

Commenti (0)2004-01-21