Oracle Instant Client su Linux

Con questa guida vi spiegherò come installare ed utilizzare l'Instant Client Oracle su Linux.

A differenza del Client Oracle (~600MiB), l'Instant Client pesa notevolmente meno e non richiede particolari configurazioni o processi di installazione e pertanto si presta per essere utilizzato in quelle situazioni dove è necessario connettersi ad un DB Oracle in maniera veloce o dove lo spazio sulla nostra macchina non è sufficientemente grande.

Possiamo utilizzare l'Instant Client per connettersi ad un DB Oracle con PHP via PDO, Perl via DBI, o amministrarlo o fare delle estrazioni tramite tora.

Colleghiamoci al sito della Oracle, ed andiamo alla sezione Downloads → Database → Oracle Instant Client e successivamente clicchiamo su Instant Client for Linux x86 (o x86-64, in base alla nostra architettura).

Nella pagina successiva abbiamo la possibilità di scegliere il tipo di pacchetto: Basic, JDBC, SQL*Plus, SDK, ODBC.

  • Basic: Contiene le librerie che permettono alle applicazioni OCI, OCCI e JDBC-OCI di connettersi al DB Oracle (~70MiB).
  • Basic-Lite: Contiene le stesse librerie di Basic ma ha solo la localizzazione per l'Inglese ed il set di caratteri Europei (~30MiB).
  • JDBC: Contiene librerie extra per connettersi al DB Oracle via JDBC (~1.5MiB).
  • SQL*Plus: Contiene il client SQL*Plus e le relative librerie (~0.8MiB).
  • SDK: Contiene gli header necessari per compilare le applicazioni che fanno uso del DB Oracle (~0.6MiB).
  • ODBC: Contiene le librerie per connettersi al DB Oracle via ODBC (~1.2MiB).

Nell'esempio useremo l'ultima versione disponibile dell'Instant Client, ma la stessa procedura può essere applicata anche alle release precedenti che per quelle future.

1. Scompattiamo

Da utente root creiamo una directory in /opt:

# mkdir -p /opt/oracle/client

Prendiamo i nostri pacchetti ZIP e li scompattiamo nella directory appena creata:

# for $file in basiclite sdk sqlplus jdbc odbc; do \
    unzip -d /opt/oracle/client instantclient-$file-linux.x64-12.1.0.1.0.zip \
  done

Rinominiamo la directory dell'Instant Client:

# mv /opt/oracle/client/instant_client_12_1 /opt/oracle/client/12.1

Prossimo passo importante, dobbiamo creare dei link simbolici per alcune librerie, in modo che i programmi che ne fanno uso, possano trovarle con il soname corretto:

# cd /opt/oracle/client/12.1
# ln -sf libclntsh.so.12.1 libclntsh.so
# ln -sf libclntshcore.so.12.1 libclntshcore.so
# ln -sh libocci.so.12.1 libocci.so

3. Variabili d'ambiente

Adesso è necessario settare le variabili d'ambiente per fare in modo che l'Instant Client funzioni correttamente. Aggiungiamo al ~/.bash_profile (o ~/.profile) dell'utente che utilizzerà l'Instant Client le seguenti variabili d'ambiente:

  export ORACLE_HOME=/opt/oracle/client/12.1
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
  export PATH=$PATH:$ORACLE_HOME

Al posto della variabile d'ambiente LD_LIBRARY_PATH possiamo aggiungere il path dell'Instant Client in /etc/ld.so.conf e successivamente ricreare la cache delle librerie lanciando da root :

# ldconfig

4. tnsnames.ora e sqlnet.ora

Se abbiamo a disposizione i file tnsnames.ora e sqlnet.ora, creiamo le loro directory:

# mkdir -p /opt/oracle/client/12.1/network/admin
# cp {tnsnames,sqlnet}.ora /opt/oracle/client/12.1/network/admin
# chmod 666 /opt/oracle/client/12.1/network/admin/*.ora

5. Testiamo

Dopo aver installato tutto possiamo testare il corretto funzionamento dell'Instant Client tramite sqlplus:

$ sqlplus scott/tiger[email protected]

Per gli utilizzatori di Slackware è disponibile all'indirizzo http://lotar.altervista.org/slackbuilds/?dir=/oracle-instantclient/build lo SlackBuild per creare il pacchetto compatibile con il tool di gestione dei pacchetti di Slackware. Per maggiori informazioni è disponibile un README con le istruzioni per il build del pacchetto.