nov 09
Connectar a una base de dades DB2 mitjançant unixODBC
Aquests dies per coses de la feina volia connectar a una base de dades DB2 directament, que es troba en un AS400, un mainframe.
El cas es que em va costar força fer-ho anar, tot i que realment no és gaire difícil.
Dir que en principi es documenta que amb DB2 Connect es pot accedir al AS400, però bé, jo no vaig trobar la manera d'aconseguir-ho, tot i que tampoc importa molt ja que el que volia era que el meu programa, en C++, pogués accedir directament a les dades del AS400.
Concretament volia instal·lar-ho a un servidor Debian Lenny, on tinc un servidor que és el que connecta amb el AS400, i efectua les operacions que li demanen els clients sobre la BD en funció de la seva autorització (així es controla que només el servidor hi tingui accés directe, i a més ens estalviem instal·lar a tot arreu el ODBC).
Per tant al servidor hem d'instal·lar-hi el unixODBC (disponible a totes les distribucions) i el driver d'ibm per al ODBC. Aquest driver s'ha de descarregar d'IBM i el podeu trobar en aquesta plana.
Altrament també necessitarem instal·lar el software isql per a comprovar que tot a funcionat correctament.
Instal·lem el software:
aptitude install unixODBC isql
Llavors instal·lem el driver d'ibm, si en descomprimim el paquet ja veurem que té un fitxer anomenat libdb2.so que el trobem dintre del directori /lib del arxiu que hem descomprimit.
Ara afegirem la ubicació del driver a l'arxiu /etc/odbcinst.ini (si instal·leu el driver amb l'instal·lador d'ibm, aquesta entrada s'hauria d'afegir sola):
[iSeries Access ODBC Driver] Description = iSeries Access for Linux ODBC Driver Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so NOTE1 = If using unixODBC 2.2.11 or later and you want the 32 and 64-bit ODBC drivers to share DSN's, NOTE2 = the following Driver64/Setup64 keywords will provide that support. Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1
Finalment afegirem la ubicació i dades del nostre servidor a /etc/odbc.ini:
[Server_AS_400] Driver = iSeries Access ODBC Driver Description = Production AS/400 Database Server = 172.26.0.2 System = 172.26.0.2
Per a comprovar si connectem correctament al AS400 farem ús de l'eina isql:
isql Server_AS_400 <usuari> <clau>
Un document més complet de com fer-ho el podeu trobar en aquesta entrada de blog, que és d'on en vaig extreure la informació.

maig 26th, 2010 at 9:32 am
Wow. I just had to comment on your blog post! This one by far had me on the edge of my seat! HA, no pun intended but I really did like this one the most. Can you take a look at my blog post and give me any pointers to improve on? Here is My Blog Post!
- Thanks a bunch and good luck on your blog!