Installazione di ORACLE 8.1.7 su Linux Alessandro Martellotta alessandro.martellotta@mmsoftware.net v1.0, 26 Giugno 2001 Il presente documento si basa essenzialmente sulla traduzione dell'help semi-ufficiale che potete trovare all'indirizzo http://jordan.fortwayne.com/oracle/817.html. Il tutto abbondantemente infarcito di nozioni date da un mese di tentativi di installazione falliti. Perché Linux su ORACLE? Perché è veloce, gratuito ed affidabile. Quale sviluppatore di applicazioni Oracle mi trovo spesso nell'esigenza di dover fornire al cliente il server applicativo con il motore database. Fino ad oggi sono stato costretto ad utilizzare NT, e questo porta diversi svantaggi: Tanto per cominciare NT non è affidabile quanto Linux (che gode di tempi di uptime tipicamente di diversi mesi). NT incide pesantemente sul costo complessivo della macchina server. Risparmiare due milioni di licenza per il sistema operativo consente di spendere un po' di più in consulenza per l'installazione del sistema operativo gratuito, con ovvia contentezza sia del fornitore che del cliente. È più veloce. A parità di macchina NT spreca diverse risorse sia nella inutile console a finestre sia in vari servizi misteriosi rispetto ad un sistema essenziale e dalle ottime prestazioni come Linux. A mio parere NT mette a disposizione meno strumenti a basso livello. Tanto per fare un esempio, creando un programma di caricamento batch in Perl si può raggiungere una velocità di diverse centinaia di record al secondo. Ma non è tutto oro ciò che luccica. L'installazione di Oracle su Linux è assai più complessa che su NT, ma assolutamente non impossibile. Consiglio vivamente di leggere la documentazione presente sul cd o sull'immagine scaricata, senza tuttavia prenderla come oro colato. Diverse cose che vengono descritte come assolutamente indispensabili sono in realtà superflue e fuorvianti. Vedremo in seguito quali sono i passi veramente determinanti. Requisiti Hardware Oracle non è tanto tollerante quanto Linux. Mentre quest'ultimo si accontenta in alcuni casi di veri e propri ruderi, Oracle è invece molto esigente, specialmente in termini di RAM. Se non avete almeno 128MB dimenticatevi che tutto funzioni al meglio. Questo valore è infatti lo stretto indispensabile. 256 o 512MB sono vivamente consigliati. Le prove che ho effettuato personalmente sono state eseguite su un portatile PIII 450 con 128MB e tutto sommato andava in modo soddisfacente. Personalmente suggerirei di rimanere entro questi parametri e di affidarsi per il resto (scheda video, scheda madre, ecc.) a componentistica standard. Se Linux funziona correttamente sia in modalità testo che, soprattutto, in X siamo a buon punto. Requisiti software Scelta della distribuzione Per i neofiti: le installazioni di Linux NON SONO TUTTE UGUALI! Ciascuna di esse ha pro e contro. Chi ha lavorato un po' in Linux ha sicuramente effettuato una caterva di installazioni dai cd in omaggio nelle riviste e avrà quindi una distribuzione preferita. Salvo divieti assoluti che citerò tra poco può tranquillamente usare quella che conosce meglio. Per chi non avesse esperienze di utilizzo, la mia preferita è Mandrake 7.1, anche se ho installato Oracle senza problemi anche su Suse 6.4 e RedHat 6.2. Il requisito fondamentale sono le glibc 2.1.3 (o per lo meno la famiglia 2.1), quindi scartiamo RedHat 7 che esce con le 2.2. Anche se esiste una patch su ftp://ftp.kernel.org/, probabilmente questa procedura non è approvata e testata da Oracle, che consiglia ufficialmente di utilizzare RedHat 6.2 con le dovute patch di sicurezza. Software necessario X Window tanto per cominciare, non importa se con Gnome o KDE (meglio lasciar perdere gli altri), ma ci dev'essere e deve funzionare correttamente. Qualche compilatore (c, gcc, ecc.). A esempio se in fase di installazione di RedHat avete selezionato "Developement" o "Sviluppo" dovreste essere a posto. Java SDK (vedi più avanti). Riconfigurazione del kernel Oracle dice all'inizio del manuale di installazione che è necessario cambiare alcuni parametri di configurazione della memoria per poter procedere con l'installazione. Questo non è del tutto esatto. Oracle può tranquillamente essere installato senza dover procedere alla riconfigurazione del kernel, dato che praticamente tutti i parametri già si trovano di default all'interno dei requisiti. Nota Bene: se state impostando un database personale per poter sviluppare non vi preoccupate della riconfigurazione. Tutto funzionerà correttamente. Se invece state installando il DB su una macchina di produzione e il carico di lavoro previsto è elevato, allora vale la pena di ritoccare qualcosa. L'unico parametro che vale la pena di considerare è l'impostazione SHMMAX, e solo nel caso di un database molto pesante su una macchina con più di 64MB di RAM. Se ve la sentite ecco come si cambia: ATTENZIONE: per cambiare un parametro del kernel è necessario ricompilarlo. Se non lo avete mai fatto è assolutamente indispensabile dare un'occhiata ad un buon libro che spieghi passo per passo questa difficile operazione e le oltre 100 opzioni dello script di configurazione. Se non siete sicuri di qualcosa e scegliete una strada sbagliata potreste impedire al sistema di ripartire! Modifiche ai parametri di memoria Aprite con un editor (nell'esempio vi) il file shmparam.h # cd /usr/src/linux/include/asm # vi shmparam.h Poco al di sotto dell'inizio c'è una linea che dice "#define SHMMAX 0x2000000". Il valore 0x2000000 è la notazione esadecimale per 32MB. Oracle dice che questo valore dovrebbe essere metà della memoria fisica della macchina. Su una macchina di 128MB può essere cambiato a 0x4000000 (poco più di 64M). Altri valori possibili sono: 0x4000000 = 67108854 0x6000000 = 100663296 0x8000000 = 134217728 0x10000000 = 268435456 0x20000000 = 536870912 Salvate il file (in vi con :wq). Ricompilate il kernel. Cosa scaricare prima dell'installazione Il file di Oracle Lo potete trovare su technet.oracle.com. Il file che vi serve è linux817ee.tar per l'inglese, oppure linux817it.tar per l'italiano (sono equivalenti). Il file è grossino, circa 500MB. Potete anche ordinare un CD gratuito sul sito. Dopo averlo ottenuto, procedete come segue : Mettete il file in /usr/src Scompattatelo: # cd /usr/src # tar xvf linux817it.tar Java SDK Oracle release 3 ha bisogno del JDK 1.1.8. Non la versione succesiva o precedente, ma esattamente quella! E la vuole in /usr/local/java . Metteremo quindi il JDK in /usr/local e creeremo un link. Scaricate il file jdk118_v3-glibc-2.1.3.tar.bz2 (consiglio di andare su ftpsearch.lycos.com e cercare un server ftp con dominio .it che lo contenga), sono circa 13MB. Mettetelo in /usr/local . Da una finestra di terminale in qualità di root, scompattatelo, installatelo e create il link: # cd /usr/local # bzip2 -d jdk118_v3-glibc-2.1.3.tar.bz2 # tar xfv jdk118_v3-glibc-2.1.3.tar # ln -s /usr/local/jdk118_v3 /usr/local/java L'installazione Preinstallazione Prima di procedere all'installazione vera e propria è necessario creare alcuni utenti e gruppi e impostare i diritti. Aprite una finestra terminale e date su root. Create i gruppi oinstall (installazione), dba (amministrazione) e oper (manutenzione): # groupadd oinstall # groupadd dba # groupadd oper Create la directory home per l'utente oracle # mkdir /home/oracle Create l'utente oracle con oinstall come gruppo primario e dba come secondario e impostategli la password: # useradd oracle -g oinstall -G dba,oper # passwd oracle Create la directory di installazione (per semplificare installiamo software e database nella stessa directory) e impostate proprietario e diritti: # mkdir /u01 # chown oracle.dba /u01 # chmod 775 /u01 Disconnettetevi da root. Fate il login come oracle. Verificate che la umask sia 022: oracle$ umask Se il risultato non dovesse essere 022, dovrete impostare l'umask a mano in .bash_profile (vedi qui sotto). Aprite il file .bash_profile (o createlo se occorre) con il vostro editor preferito: oracle$ cd ~ oracle$ vi .bash_profile Aggiungete le seguenti righe: ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=/u01/app/oracle/product/8.1.7; export ORACLE_HOME ORACLE_SID=ora1; export ORACLE_SID # Se volete chiamare l'istanza in modo differente potete farlo, max 8 # caratteri PATH=$PATH:/u01/app/oracle/product/8.1.7/bin; export PATH CLASSPATH=.:/u01/app/oracle/product/8.1.7/jdbc/lib/classes111.zip; export CLASSPATH LD_LIBRARY_PATH=/u01/app/oracle/product/8.1.7/lib; export LD_LIBRARY_PATH umask 022 # se il test precedente non restituiva il valore corretto! ORA_NLS33=/u01/app/oracle/product/8.1.7/ocommon/nls/admin/data; export ORA_NLS33 NLS_LANG=italian; export NLS_LANG # se avete un' impostazione inglese: # NLS_LANG=american Disconnettetevi e rifate il login (sempre come oracle). Aprite una finestra e verificate che le variabili d'ambiente siano correttamente impostate: oracle$ env L'installazione vera e propria Qualcuno di voi starà pensando: "Se questa è la fase preliminare, figuriamoci l'installazione vera e propria!!!". Non vi preoccupate, il peggio è passato. Il resto sono solo conferme da dare ad un programma di installazione grafico. Fate il login come utente oracle (assolutamente!) In una finestra di terminale posizionatevi nella directory contenente i file d'installazione e lanciate l'installer: oracle$ cd /usr/src/Disk1 oracle$ ./runInstaller Compare una schermata grafica: "Welcome to the Java-based Oracle installer". Cliccate su NEXT. Verificate che la directory d'origine contenga /usr/src/Disk1/stage/products.jar La directory di destinazione dovrebbe essere la stessa della variabile d'ambiente $ORACLE_HOME . Cliccate su NEXT. Come gruppo UNIX impostate oinstall. Cliccate su NEXT. Una finestrella vi chiederà di eseguire lo script orainstRoot.sh. Ecco come fare: Aprite una nuova finestra di terminale e dateci su root (digitando ovviamente la password corrispondente). Posizionatevi nella directory destinazione di Oracle # cd $ORACLE_HOME Eseguite lo script # ./orainstRoot.sh Lascia aperto il terminale root, servirà più tardi. Tornate sulla finestrella e cliccate RIPROVA. Ora vi trovate davanti la scelta dei prodotti. Selezionate Oracle 8i Enterprise Edition 8.1.7.0.0 e cliccate NEXT. Nello schermo seguente selezionate TIPICA e cliccate su NEXT. Vi viene chiesto il nome del database globale, digitate ciò che avete impostato nel .bash_profile come ORACLE_SID. La richiesta successiva riguarda la posizione dei file del database. Se avete creato solo /u01 dovreste già trovare l'impostazione corretta per default. Vi viene chiesta la directory home del JDK. Assicuratevi che sia /usr/local/java . Cliccate il bottone INSTALLA. Il software si sta installando! Mitico! Dopo che tutti i file sono stati copiati e lincati, un'altra finestrella vi chiederà di eseguire uno script da root. Tornate nel terminale root che avevate usato in precedenza e date: # cd $ORACLE_HOME # ./root.sh Quando vi viene chiesto il percorso local bin cliccate ENTER. Date due volte exit per abbandonare i privilegi di root e chiudere la finestra. Ritornate alla finestrella e cliccate OK. Ora parte la configurazione Net8. Tutto ciò che dovete fare è selezionare la casella "Eseguire una configurazione tipica" e cliccare su NEXT. Di seguito parte il Database Configuration Assistant. Nulla da fare, tranne cliccare su OK quando la configurazione è terminata. Quando il DCA ha finito, Oracle installa il WebServer sulla porta 7777. Anche qui nulla da toccare. Siete ora alla schermata di fine installazione. Cliccate ESCI e confermate. Tutto il software è installato. Ce l'avete fatta!!! ATTENZIONE! Gli account Oracle di amministrazione sono: sys (pwd: change_on_install) system (pwd: manager) Avvio del database Anche se ora tutti i servizi oracle sono attivi, dopo un riavvio della macchina sarà necessario avviarli manualmente. Ecco come: Fate il login come oracle. Lanciate il listener: oracle$ lsnrctl start Avviate il Database: oracle$ svrmgrl oracle$ connect internal oracle$ startup oracle$ quit Utilizzo di Oracle Da questo momento Oracle è utilizzabile tranquillamente da qualsiasi client in rete con la stessa configurazione di NT o quant'altro. Per accedervi da console è sufficente digitare: $ sqlplus Se volete un ottimo esempio di come accedervi via Perl, suggerisco di visitare il sito http://dbi.perl.org/.