Connessione ODBC da Linux a IBM iSeries

La connessione verso il database DB2 di IBM su sistema iSeries è resa possibile grazie ad un pacchetto, distribuito da IBM, contenente i driver per la connessione ODBC.
Per installare il pacchetto, occorre scaricare il package direttamente dal portale IBM, per farlo è necessario un IBM id. Dovete cercare il pacchetto IBM iAccess Client Solutions for Linux, al suo interno sono disponibili pacchetti deb e rpm. Installate il pacchetto compatibile con la vostra architettura, ad esempio:

dpkg -i ibm-iaccess-1.1.0.2-1.0.amd64.deb

Potete trovare ulteriori dettagli su come installare correttamente il software iAccess a questo link.
A questo punto troverete sotto /opt/ibm i nuovi file relativi ai driver ODBC. Per configurare correttamente i driver, li installiamo con il seguente comando:

odbcinst -i -d -f /opt/ibm/iSeriesAccess/unixodbcregistration

Perfetto, visualizzando il file /etc/odbcinst.ini dovremmo ottenere una cosa del tipo:

[IBM i Access ODBC Driver]
Description = IBM i Access for Linux ODBC Driver
Driver = /opt/ibm/iaccess/lib/libcwbodbc.so
Setup = /opt/ibm/iaccess/lib/libcwbodbcs.so
Driver64 = /opt/ibm/iaccess/lib64/libcwbodbc.so
Setup64 = /opt/ibm/iaccess/lib64/libcwbodbcs.so
Threading = 0
DontDLClose = 1
UsageCount = 2

[IBM i Access ODBC Driver 64-bit]
Description = IBM i Access for Linux 64-bit ODBC Driver
Driver = /opt/ibm/iaccess/lib64/libcwbodbc.so
Setup = /opt/ibm/iaccess/lib64/libcwbodbcs.so
Threading = 0
DontDLClose = 1
UsageCount = 2

A questo punto però c’è un ulteriore comando da eseguire, poiché sulle distribuzioni più recenti, come Ubuntu 14.04, manca un link simbolico ad una libreria richiesta dal driver ODBC di IBM:

ln -s /usr/lib/x86_64-linux-gnu/libodbcinst.so.1 /usr/lib/x86_64-linux-gnu/libodbcinst.so.2

Perfetto, non resta che configurare la connessione ODBC al vostro sistema, modificando opportunamente il file /etc/odbc.ini:
A questo punto, potete testare la connessione, con un semplice script PHP:

<?php
$user = 'SomeUser';
$pass = 'SomePass';
$Conn = odbc_connect("DRIVER={IBM i Access ODBC Driver};DATABASE=<DBNAME>;SYSTEM=<IP_ISERIES>;HOSTNAME=<IP_ISERIES>;PORT=446;PROTOCOL=TCPIP", $user, $pass);
if($Conn === false){
    die('failed to connect');
}
$sql = "select * from database.table fetch first 10 rows only";

$result=odbc_exec($Conn,$sql);

echo '<pre>';

while(odbc_fetch_array(($result)){
         print_r($result);
    }
}
?>

Trovate qui una guida dettagliata di come connettersi con PDO tramite ODBC.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...