Home > Comandi Console, Connessioni, Guide, Internet, Linux, Pacchetti, Ubuntu > Accedere ad un database su AS400/iSeries via ODBC

Accedere ad un database su AS400/iSeries via ODBC

12 aprile 2008

Esistono tantissime tipologie di database, ciascuna con una precisa peculiarità: MySQL, Oracle, MS SQL, Informix, Firebird, DB2, MDB Access e tanti altri. Per uniformare gli accessi ai vari database nel 1989 il SQL Access Group (SAG), di cui facevano parte i maggiori produttori di database, ha sviluppato un’interfaccia aperta e universale chiamata Open Database Connectivity (ODBC).

Tutti gli strumenti in grado di connettersi a fonti dati ODBC, un esempio fra tutti OpenOffice, potranno accedere ai dati contenuti nei database, semplicemente disponendo del relativo driver ODBC installato.

L’implementazione di ODBC più utilizzata su ambienti Linux è unixodbc ed è quella di cui faremo uso per osservarne il funzionamento e la configurazione. Prima di iniziare è necessario installare il pacchetto unixodbc con apt-get install unixodbc e un driver ODBC per il database a cui desideriamo connetterci. Utilizzando il pacchetto IBM iSeriesAccess visto in precedenza scopriamo come configurare il driver ODBC fornito nel pacchetto per connetterci ad un sistema iSeries ed una fonte dati denominata anche Data Source Name (DSN) che utilizzeranno i programmi per accedere al database scelto.


Configurare driver e DSN manualmente

La configurazione del driver ODBC può essere effettuata manualmente richiamando le impostazioni fornite dal pacchetto iSeriesAccess. All’interno di una finestra terminale eseguire:

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

L’avvenuta installazione verrà confermata da:

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

Terminata la configurazione del driver passiamo alla creazione di una fonte dati DSN. Possiamo configurarla sia di sistema, disponibile a tutti gli utenti, sia per singolo utente. Nel caso volessimo aggiungere un DSN di sistema modificheremo il file /etc/odbc.ini, mentre nel caso del singolo utente possiamo modificare il file .odbc.ini nella home dell’utente. Inseriremo al suo interno:

[iSeries]
Description             = Database iSeries Azienda
Driver                  = iSeries Access ODBC Driver
System                  = iseries.azienda
UserID                  = NOMEUTENTE
Password                = PAROLA D'ORDINE
Naming                  = 0
DefaultLibraries        = MIALIBRERIA
Database                =
ConnectionType          = 1
BlockFetch              = 1
BlockSizeKB             = 512

Il nome [iSeries] sarà il nome del DSN e verrà utilizzato dagli altri programmi per riferirsi a questa connessione, il campo Description è libero per l’inserimento di una descrizione qualsiasi, System identifica l’indirizzo del server a cui connettersi, qui ho utilizzato iseries.azienda. I campi UserID e Password identificano l’utente e la password per l’accesso al sistema, generalmente se un programma non ne fornisce di propri utilizza quelli qui definiti, se vengono lasciati in bianco, sarà onere dell’applicazione (OpenOffice o altro) di fornirne di validi.

Naming consente di definire il modello di separazione tra libreria e file: il valore 0 identifica la separazione SQL fatta con LIBRERIA.NOMEFILE, mentre il valore 1 identifica la separazione di sistema fatta con LIBRERIA/NOMEFILE. DefaultLibraries identifica l’elenco delle librerie predefinite separate da spazi dentro le quali ricercare i files/tabelle. Database indica il nome del database SQL da aprire.

Il valore ConnectionType consente di definire le tipologie di istruzioni eseguibili: il valore 0 consente tutte le operazioni, sia in lettura che scrittura che esecuzione; il valore 1 consente solamente le operazioni di lettura ed esecuzione mentre il valore 2 consente solo operazioni di lettura dei dati.

Gli ultimi due argomenti BlockFetch e BlockSizeKB consentono di definire la dimensione dei pacchetti che vengono richiesti al server per ogni singola operazione. Per ulteriori informazioni sui parametri utilizzati nella configurazione fare riferimento alla pagina Connection string keywords sul sito IBM.


Configurare driver e DSN con ODBCConfig

La configurazione del driver e del DSN è anche possibile utilizzando l’interfaccia grafica ODBCConfig che tuttavia richiede le librerie QT3 per un totale di circa 10 MB di pacchetti da scaricare. Per utilizzare ODBCConfig basterà installare il pacchetto unixodbc-bin e le sue librerie eseguendo sudo apt-get install unixodbc-bin in una finestra di terminale.

Purtroppo non viene inserito alcun collegamento tra i menu per cui può essere necessario inserirlo nel menu Applicazioni manualmente.

Per l’installazione del driver ODBC è necessario avviarlo con permessi amministrativi, per cui premiamo ALT+F2 ed eseguiamo gksudo ODBCConfig.

L’interfaccia si presenta a schede e le prime tre serviranno a definire i DSN, lasciamole stare per il momento, dobbiamo installare il driver ODBC prima. Spostiamoci quindi sulla quarta scheda Drivers, ovviamente vuota e clicchiamo il pulsante Add per aggiungerne uno nuovo.

Verranno richiesti il nome del driver ODBC, utilizzare quello fornito da IBM ovvero iSeries Access ODBC Driver e nei campi Driver, Driver64, Setup e Setup64 inserire le librerie che si trovano nelle cartelle lib e lib64 dove è stato installato l’iSeriesAccess. In generale vanno bene i dati mostrati nella figura sopra. Confermare i dati inseriti col primo pulsante a spunta in alto a sinistra.

Passiamo adesso alla configurazione del DSN, ricordando che per inserire un DSN di sistema è necessario avere privilegi amministrativi e se è stato avviato il programma mediante sudo i DSN dell’utente saranno dell’utente root e non dell’utente che esegue il comando. Per cui:

  • Avvviare il programma con sudo se si desidera configurare i drivers ODBC o aggiungere DSN di sistema, su file per tutti gli utenti oppure solo per l’utente root
  • Avviare il programma senza sudo se si desidera configurare i DSN per il proprio utente

Le tre schede dell’applicazione serviranno per assegnare rispettivamente DSN Utente, Sistema (per tutti gli utenti) e su File (per tutti gli utenti con accesso ai singoli files). La procedura tuttavia è uguale per tutti i tipi di DSN: cliccando Add sarà avviata la procedura guidata.

Verrà richiesto il driver ODBC da utilizzare: scegliere il driver iSeries Access ODBC Driver e premere OK per proseguire. I pulsanti Add, Remove e Configure si riferiscono ai driver, consentono di aggiungere, rimuovere e configurare un driver ODBC.

Immettere il nome del DSN (qui iSeries) e un’eventuale descrizione. Sul campo System immettere l’indirizzo del sistema a cui connettersi, qui abbiamo utilizzato iseries.azienda. Su UserID e Password è possibile indicare la coppia utente e password per l’accesso al server, lasciandole in bianco sarà onere dell’applicazione fornire i dati di accesso. Su DefaultLibraries è possibile inserire un elenco di librerie predefinite, in cui ricercare i dati, separate da spazi.

Per tutti gli altri campi è possibile cliccare sopra la terza icona in alto e poi sopra il campo di cui si desidera ricevere maggiori informazioni. Fare riferimento anche alla sezione della configurazione manuale per una breve spiegazione dei singoli valori oppure alla pagina Connection string keywords sul sito IBM. Il primo pulsante con la spunta in alto a sinistra servirà per confermare i dati scelti.


Giacomo Antolini ha scritto un’ottima guida alla configurazione del driver ODBC di iSeriesAccess da cui questa prende spunto.

Ulteriori informazioni sull’uso di unixodbc e sulla configurazione di altri driver ODBC possono trovarsi alla relativa pagina della documentazione sul sito unixodbc.

  1. 02 novembre 2011 alle 14:18

    Very helpful for me!!
    Thanks a lot
    Max

  2. 24 settembre 2012 alle 18:01

    ciao a tutti, mi ritrovo per la prima volta ad affrontare il problema della connessione ringrazio per le stupende guide fornite, Per quanto riguarda il mio problema mi ritrovo con un server ubuntu che deve fare delle richieste a un as400 per il prelievo di dati,
    ora ho seguito questi passi :

    1) apt-get install unixodbc
    2) IBM iSeries Access per Linux 64 bit linux
    3) Configurare UnixODBC:

    ora quando vado a lanciare un test : isql -v AS400

    mi restituisce il seguente errore:

    [01000][unixODBC][Driver Manager]Can’t open lib ‘/opt/ibm/iSeriesAccess/lib/libcwbodbc.so’ : file not found
    [ISQL]ERROR: Could not SQLConnect

    da cosa puo dipendere??
    grazie.

  1. 14 aprile 2008 alle 8:31
I commenti sono chiusi.