Scritti, impressioni, opinioni.

Categoria: ubuntu

Installare Oracle Client con Ubuntu

Chi mi conosce sa che "per pagare i conti faccio il programmatore". Ma qui, essendo la pagina dove mi occupo dei miei hobby, parlo poco o niente di informatica. Ma dato che sull'argomento del titolo c'è molto poco in italiano, ho scritto questa guida per mio diletto e per diffondere il verbo di Linux.
Come informatico la mia posizione è pragmatica. Uso gli strumenti software che mi sono più congeniali e utili, non ne faccio una questione "religiosa".
Ma l'idea che si possa lavorare con Linux mi piace. Come distribuzione ormai da anni uso Ubuntu, arrivata alla 11.10

Lavorare con Ubuntu è possibile. Se la vostra esigenza è di sviluppare in PL/SQL o di amministrare Database Oracle da remoto, che usiate Windows o Linux è indifferente. Con Linux avrete una macchina da lavoro semplice ed efficiente, i cui costi software sono completamente gratuiti.

Operazioni preliminari
È necessario installare i seguenti pacchetti, disponibili nel repository di Ubuntu:

alien
libaio1

Potete usare l'interfaccia grafica o da terminale scrivere:

sudo apt-get install libaio1 alien

Download dei pacchetti rpm dal sito Oracle

È necessario scaricare i pacchetti rpm dal sito ufficiale Oracle.

Quelli veramente indispensabili sono 3:

Pacchetto Nome file
Basic: All files required to run OCI, OCCI, and JDBC-OCI applications oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm
SQL*Plus: Additional libraries and executable for running SQL*Plus with Instant Client oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.i386.rpm
SDK: Additional header files and an example makefile for developing Oracle applications with Instant Client oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm

NB. I nomi sono quelli dei file disponibili nel momento in cui scrivo, potrebbero variare nel tempo. Inoltre la vostra architettura potrebbe non essere a 32bit (i386), bensì a 64bit. In tal caso dovrete scaricare quelli che riportano x86_64 nel file.

Altri sono disponibili sul sito, come quelli per il Pro*C e il client solo in lingua inglese. Le modalità di installazione non variano.

Conversione dei pacchetti da rpm a deb
Il prossimo passo da seguire è convertire i pacchetti scaricati in formato .deb, che è quello accettato da Ubuntu, distribuzione derivata da Debian.
Non so i motivi per cui Oracle non renda disponibile questo formato e mantiene solo gli rpm e gli zip.
In aiuto ci viene il programma alien che risolve il problema convertendo i pacchetti scaricati nel formato che ci serve semplicemente scrivendo, da linea di comando:

sudo alien oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm -c

Dopo qualche secondo (il primo è più lungo, ma ci sta poco più di un minuto) il messaggio “oracle-instantclient11.2-basic_11.2.0.3.0-2_i386.deb generated” ci annuncerà che il primo file deb è pronto.

Ripetendo per i successivi:

comando esito
sudo alien oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.i386.rpm -c oracle-instantclient11.2-sqlplus_11.2.0.3.0-2_i386.deb generated
sudo alien oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm -c oracle-instantclient11.2-devel_11.2.0.3.0-2_i386.deb generated

Nella stessa cartella degli rpm avremo quindi tre file che nel caso in esempio si chiamano:

oracle-instantclient11.2-basic_11.2.0.3.0-2_i386.deb
oracle-instantclient11.2-sqlplus_11.2.0.3.0-2_i386.deb
oracle-instantclient11.2-devel_11.2.0.3.0-2_i386.deb

Installazione dei pacchetti .deb

Per installare i pacchetti, sempre da linea di comando basterà digitare:

sudo dpkg -i oracle-instantclient11.2-basic_11.2.0.3.0-2_i386.deb
sudo dpkg -i oracle-instantclient11.2-sqlplus_11.2.0.3.0-2_i386.deb
sudo dpkg -i oracle-instantclient11.2-devel_11.2.0.3.0-2_i386.deb

NB.
I nomi dei file dipendono da quale pacchetto scaricate. Se scaricate un diverso pacchetto abbiate un po' di spirito di adattamento, non limitatevi a copiare e incollare le righe.
Configurazione
Non è finita, i pacchetti sono stati installati, ma il sistema ancora non sa dove si trovi il programma.
Nella mia esperienza mi sono trovato davanti a due possibili percorsi

/usr/lib/oracle/11.2/client/ In sistemi a 32 bit
/usr/lib/oracle/11.2/client64/ In sistemi a 64 bit

Verificate in quale di questi percorsi è installato Oracle Client al fine di impostare le seguenti variabili d'ambiente (da qui faccio l'esempio di un sistema a 64 bit, ma basta togliere il 64 per i sistemi a 32 bit)

LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
ORACLE_HOME /usr/lib/oracle/11.2/client64
TNS_ADMIN /usr/lib/oracle/11.2/client64/network/admin

Quindi, da terminale scrivete:

cd /etc/ld.so.conf.d
sudo gedit oracle.conf

Si aprirà l'editor e dovrete scrivere:

/usr/lib/oracle/11.2/client64/lib

Salvate e una volta chiuso l'editor scrivete:

cd /etc/profile.d
sudo gedit oracle.sh

Si aprirà l'editor e dovrete scrivere, in coda al file:

export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin

Ora c'è da creare la directory a cui fa riferimento la variabile TNS_ADMIN, che in realtà ancora non esiste
Verificate l'esistenza della cartella di Oracle client con il seguente comando

ls /usr/lib/oracle/11.2/client64

Se non la trovate provate:

ls -d /usr/include/oracle/*/client64

Se la trovate bisogna creare un symbolic link alla cartella ORACLE_HOME mediante il seguente comando:

sudo ln -s /usr/include/oracle/11.2/client64 /usr/lib/oracle/11.2/client64/include

Per creare la cartella TNS_ADMIN basterà digitare:

cd /usr/lib/oracle/11.2/client64
sudo mkdir network
cd network
sudo mkdir admin
cd admin

Ora avete due possibilità.
A) Sapete cosa sia un file tnsnames.ora, e ne avete uno disponibile, su una chiavetta usb, su una cartella fate voi.
In questo caso per copiare il file nella cartella basterà digitare (supponendo che siate dentro la cartella admin)

sudo cp [ORIGINE]/tnsnames.ora /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora

B) Non avete idea di cosa sia tale file, non lo avete mai usato. Se ci tenete a saperlo vi spiego come crearlo.
Digitate:

sudo gedit tnsnames.ora

Il file contiene i dati per ciascuno dei Database a cui collegarsi. Per ogni DB dovremo scrivere nel file righe di questo tipo:

$NOMEDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = $INDIRIZZO)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = $NOME_SERVIZIO)
)
)

Le variabili contrassegnate con il simbolo $ dipendono da voi. Se non sapete i valori chiedeteli a chi amministra il DB. E' fuori dallo scopo di questo documento insegnare i fondamenti di Oracle, che si suppone già sappiate.
Una volta finito di scrivere salvate il file.

Un altro file utile, che può stare nella cartella TNS_ADMIN è sqlnet.ora
Più utile che indispensabile. Se ne avete già uno potete copiarlo dalla vostra fonte con il comando:

sudo cp [ORIGINE]/sqlnet.ora sqlnet.ora

Se non lo avete potete editarlo scrivendo

sudo gedit sqlnet.ora

Le impostazioni seguenti vanno bene un po' per tutti i sistemi.

SQLNET.AUTHENTICATION_SERVICES=(NTS)

NAMES.DIRECTORY_PATH=(LDAP,TNSNAMES,ONAMES,HOSTNAME)

DEFAULT_SDU_SIZE=8761

Salvate.
Se volete saperne di più, rivolgetevi al vostro amministratore oppure leggete qui,

Dopo aver copiato i vostri file, digitate

sudo chmod a+w *.ora

Questo comando renderà modificabili i vostri file da tutti gli utenti della macchina, non solo da root.

L'ultima modifica è al file /etc/envinroment.
Dovrete quindi digitare

sudo gedit /etc/environment

Quando si apre il file aggiungete in coda alla variabile PATH il percorso dei binari di oracle, e in coda al file le variabili d'ambiente (in grassetto le aggiunte).

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/oracle/11.2/client64/bin"
LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib"
ORACLE_HOME="/usr/lib/oracle/11.2/client64"
TNS_ADMIN="/usr/lib/oracle/11.2/client64/network/admin"

Non sarebbe indispensabile, ed è pratica deprecata, ma potreste mettervi il ferro dietro la porta editando anche il file /etc/bash.bashrc, digitando

sudo gedit /etc/bash.bashrc

Una volta aperto il file potete aggiungere le seguenti righe:

export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export TNS_ADMIN=/usr/lib/oracle/11.2/client64/bin/network/admin
export PATH=$PATH:/usr/lib/oracle/11.2/client64/bin

Salvate e chiudete il terminale.

A questo punto, se conoscete i dati per connettervi, siamo pronti per tentare la nostra prima connessione. Riaprite il terminale e digitate:

sqlplus $username>/$password@$nomeservizio

Anche in questo caso i dati con il simbolo $ sono di vostra competenza.
Se è andato tutto a buon fine vi apparità il noto prompt di SqlPlus.
Complimenti e grazie per la pazienza!
Se qualcosa non gira per il verso giusto fatemi sapere.

Appendice
E se non voleste usare solo Sqlplus?

Tutto quello che ho scritto sopra serve a configurare l'Oracle Instant Client. Sqlplus, ossia la linea di comando è ancora usatissimo, ma anche molto diffusi sono i tool grafici, come TORA (un clone Linux di TOAD), o Sql Developer di Oracle, entrambi gratuiti (TOAD no).

Oracle SQL Developer

Per prima cosa scarichiamo il pacchetto da qui.
Come nel caso del client scaricate il file .rpm. Al momento in cui scrivo è disponibile il file sqldeveloper-3.0.04.34-1.noarch.rpm.

Una volta scaricato, da terminale digitate:

sudo alien sqldeveloper-3.0.04.34-1.noarch.rpm -c

Dopo meno di un minuto potrete leggere:

sqldeveloper_3.0.04.34-2_all.deb generated

Di seguito digitate:

sudo dpkg -i sqldeveloper_3.0.04.34-2_all.deb

Anche in questo caso i nomi dei file dipendono da quale pacchetto scaricate. Se scaricate un diverso pacchetto abbiate un po' di spirito di adattamento, non limitatevi a copiare e incollare le righe.
Una volte terminata l'installazione il programma sarà disponibile da menu grafico, ma non partirà se lo eseguite da lì, per la prima esecuzione di sqldeveloper vi consiglio di usare il terminale e verificare intanto dove si trovi la vostra Java Virtual Machine guardando la cartella /usr/lib/jvm con il comando (la cartella è quella in celeste chiaro, se non avete Java installato cercatelo qui):

ls /usr/lib/jvm

Segnatevi la cartella e poi digitate:

sqldeveloper

Il programma vi chiederà di inserire il percorso della JAVA Virtual Machine, che scriverà in file di configurazione. Basterà digitarla, nel mio caso è /usr/lib/jvm/java-1.6.0-openjdk, e poi il programma partirà per la prima volta.
Da ora in poi non sarà necessario eseguire il programma da riga di comando.

NB. Se il programma non parte ancora, provate a scrivere "sudo sqldeveloper" e poi impostate la directory.

TORA
Personalmente non sento l'esigenza di altri strumenti. Ma se qualcuno vuole provare a questo link promettono di spiegare come fare ad installare TORA. Non ho ancora avuto modo di provare però. A dire il vero il programma è disponibile sui repository di Ubuntu, ma non con il supporto nativo di Oracle Client, bensì di MySql.
Probabilmente c'è da smanettare e cercare un po' in rete come fare. Ne parliamo un'altra volta, sempre se ne avrò il tempo, sorry.

Open Source Forever

Dopo avere tenuto per anni una macchina in dual boot, ieri ho saltato definitivamente il fosso. Ho avuto distribuzioni diverse nella mia vita. Ho cominciato con le varie versioni della Slackware. Poi ho lavorato per molto tempo con la Red Hat. Da un po ho sperimentato Ubuntu, come qualche lettore del mio blog saprà.
Ora il disco è tutto formattato Ubuntu Linux 7.10. Winzozz però non è sparito dal mio pc. Riesco a lavorare con Winzozz tramite macchine virtuali. Ho infatti convertito il mio vecchio pc in una macchina virtuale con VMware converter. Con il player gratuito poi riesco faccio girare questo pc virtuale dentro il mio linux. Ora è come se avessi due pc, e non devo fare reboot per passare da uno allaltro!

Powered by WordPress & Theme by Anders Norén