nov 09

Connectar a una base de dades DB2 mitjançant unixODBC

Tag: DB2, Debian, bases de dades, linuxmad93 @ 3:56 pm

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ó.

Comparteix i gaudeix:
  • La Tafanera
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks

One Response to “Connectar a una base de dades DB2 mitjançant unixODBC”

  1. Jerald Prysock says:

    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! :)

Leave a Reply