«

»

Apr 07

Configurazione ODBC per AS400 su Linux

Per configurare una data source ODBC AS400 su Ubuntu Linux è necessario installare il pacchetto di gestione dei driver su Linux e l’apposito driver per AS400.

Il pacchetto di gestione dei driver odbc si chiama unixodbc e solitamente è già installato. Se non lo fosse lo si può facilmente installare con il seguente comando:

sudo apt-get install unixodbc

Il driver ODBC per AS400 è incluso nel pacchetto IBM iSeries Access for Linux che contiene tra le altre funzionalità anche il client 5250 per l’accesso all’AS400.

Scaricato ed installato iSeries Access for Linux bisogna registrare il driver ODBC per iSeries con il seguente comando:

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

si dovrebbe ottenere una risposta simile alla seguente:

odbcinst: Driver installed. Usage count increased to 1.
Target directory is /etc

A questo punto va configurata la Data Source ODBC per l’accesso ai dati dell’AS400. Se si desidera che sia disponibile a tutti gli utenti va configurata a livello di sistema nel file /etc/odbc.ini, se invece dev’essere disponibile ad un solo utente va configurata nel file .odbc.ini all’interno della home directory dell’utente.

Il contenuto sarà simile al seguente:

[MIOAS400]
Description = Database iSeries MiaAzienda
Driver = iSeries Access ODBC Driver
System = mio.as400 (oppure indirizzo IP dell'AS400)
UserID = <utente>
Password = <password>
Naming = 1
DefaultLibraries = ,miaLib01, miaLib02, miaLib03, ...
Database =
ConnectionType = 0
CommitMode = 2
BlockFetch = 1
BlockSizeKB = 512

Il significato delle opzioni principali è:

[MIOAS400] è il nome che si vuole assegnare alla Data Source

Description è una descrizione generica

System identifica il nome o l’indirizzo del sistema AS400. Esempio mioAS.miodomino.local o 192.168.xxx.xxx

UsedID e Password sono le credenziali per l’accesso al sistema. Vengono utilizzati solo se l’applicazione che utilizza la Data Source non ne specifica altri, altrimenti valgono quelli specificati nell’applicazione

Naming serve ad indicare la convenzione dei nomi per riferirsi a librerie e files.

  • Naming=0 utilizza la convenzione classica ANSI SQL. Esempio select * from libreria.file.Utilizzando questa convenzione si perde il concetto di Lista Librerie. La libreria dev’essere specificata nell’istruzione o viene utilizzata la default collection.
  • Naming=1 utilizza la convezione del sistema AS400: select * from librerie/file

DefaultLibreries permette di indicare la lista delle librerie di default. Come detto in precedenza, l’intera lista viene considerata solo se la convezione dei nomi utilizzata è 1 (Naming=1) altrimenti viene considerata solo la prima libreria. ATTENZIONE: ogni libreria dev’essere separata dalla virgola e l’intera lista deve iniziare con la virgola altrimenti considera solo la prima libreria ignorando le altre. Esempio: se indico lib1,lib2,lib3 in realtà viene vista solo lib1, viceversa se inizio la lista con la virgola, quindi ,lib1,lib2,lib3 viene considerata l’intera lista.

Un modo alternativo di far vedere una lista librerie è quello di NON indicare niente in questo parametro in modo tale che venga vista la lista librerie indicata nella job description (JOBD) abbinata all’utente che fa la connessione.

ConnectionType permette di specificare le azioni eseguibili sui dati (default=0):

  • 0 = lettura e scrittura. Sono permesse tutte le istruzioni SQL
  • 1 = lettura ed esecuzione. Sono permesse le istruzioni SELECT e CALL
  • 2 = solo lettura

CommitMode permette di specificare come gestire la transazioni (deafult=2):

  • 0 = Commit immediate (*NONE)
  • 1 = Read committed (*CS)
  • 2 = Read uncommitted (*CHG)
  • 3 = Reapetable read (*ALL)
  • 4 = Serializable (*RR)

A questo punto, per verificare il funzionamento è sufficiente dare il comando

isql -v <nome_data_source>

Se tutto ok si ha la possibilità di eseguire istruzioni SQL interattive sull’AS400.

Per chi volesse approfondire l’intera configurazione può farlo consultando i seguenti manuali IBM facilmente reperibili in rete:

  • Linux Integration with IBM IO5 (sg246551)
  • iSeries Access for Linux (V5R4)

Per finire una breve nota per chi volesse utilizzare il driver ODBC per accedere all’AS400 con applicazione PHP e Zend Server installato sulla stessa macchina Ubuntu Linux. Assicurarsi che siano attive le estensioni odbc e pdo_odbc dello Zend Server (vedi scheda Server SetupExtensions).

Zend Server Extensions

Solitamente, se installate, sono attive di default (vedi elenco estensioni Zend Server).

Se non le trovare significa che non è stato installato il pacchetto delle estensioni extra di Zend Server che si può facilmente installare con il seguente comando:

sudo apt-get install php-5.3-extra-extensions-zend-server

4 commenti

Vai al modulo dei commenti

  1. giovanni

    Buonasera
    avrei la necessità installare i driver ODBC per Linux su OS400 V5r3M0, volevo sapere esistevano e da dove poterli scaricare; dal sito della “IBM http://www-03.ibm.com/systems/power/software/i/access/linux/guide.html” sembra che minimo occore avere la 6.1. di OS. Se mi potete dare informazioni in merito, ve ne sarei grato
    Saluti e grazie in anticipo
    Giovanni

    1. Paolo Finardi

      I driver fan parte del pacchetto iSeries Access for Linux il cui link è riportato all’inizio dell’articolo.
      Noi li abbiamo utilizzati anche per la V5R3.
      Fai attenzione che le istruzioni riportate in quest’articolo sono per la versione a 32 bit.
      Per la versione a 64 bit le istruzioni sono leggermente diverse.
      Spero di esserti stato d’aiuto

      ciao
      Paolo

  2. Steve J.

    Ciao Paolo
    complimenti per l’articolo;
    ho installato tramite brew (un porting per MAC di un package manager simile ad apt) il pacchetto unixodbc.
    Che tu sappia esiste il driver IBM iSeries Access for Linux per il MAC OSX ?

    Grazie mille.

    1. Paolo Finardi

      E’ un onore rispondere direttamente a Steve Jobs … anche se fa un po’ seduta spiritica ;-) :D

      Scherzi a parte, mi spiace ma non so risponderti perchè non ho mai approfondito l’argomento sul MAC.

      Sorry

      ciao

Rispondi a Paolo Finardi Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>