A DB2 Linuxon

1. miért is?

Hogy miért is kezdtük el összeírni ezt a néhány segítséget? A válasz egyszerû: mert szükséges volt rá. Cégünk nemrég váltott az IBM DB2 7.1-es verziójára. Sajnálatos módon azt kellett tapasztalnunk, hogy az elsõk között vagyunk akik Linux platformon próbálkozunk az eszközzel, ráadásul elég sok extrém körülmény is adódott, de ezekrõl majd késõbb.


2. Elsõ lépések

Mivel célunk a dokumentációval nem az volt, hogy egy nagyteljesítményû, szuperbiztonságos adatbázis szervert alkossunk, ezért csakis a DB2 specifikus dolgokra térünk ki.

Mi a RedHat 6.2-es verzióját választottuk alapul, mivel az IBM business partnerek is maximum ebben az esetben kérnek segítséget a központtól, így eleinte nem akartuk elvágni magunk elõl ezt a support lehetõséget. Azonban hamar rá kellett jönnünk, hogy ez teljesen mindegy, mert mindenhol meglepetést okoztunk problémáinkkal, mikor közöltük: Linuxon.

A mostani rendszerünknek már csak az install CD-je volt RH, sõt, tesztverziónk egy magunk által összerakott disztribúcióra épül, mely azt bizonyítja, hogy teljesen mindegy, mit választunk. Egyre érdemes figyelni:

Az IBM a JAVA-ját és a DB2-jét RPM-ben szolgáltatja! Ezért bármilyen disztribúciót is válassz ügyelj arra, hogy legyen RPM installered! (pl. Debian esetében alien)

Ügyeljünk arra, hogy a DB2 nem egy kis hely és erõforrás igényû adatbázis kezelõ, egy jól konfigurált motornak bizony kell diszk és processzor. Az általunk választott hardver egy Netfinity 7100, 5 9GB raid5-ben és egy 18GB-os UW2, 4GB RAM, 2 PIII-700 egyenként 2MB cache! Természetesen a próbálgatásokhoz nem szükséges egy erõmû elegendõ lehet egy PI 200, 400MB hely (/usr a programnak + a létrehozandó instance user homejának), 96M ram.


3. Elõfeltételek

3.1 A DB2 telepítéséhez szükséges programok:

- glibc 2.1.2 vagy nagyobb. Habár a dokumentációk alapján a 2.1.1 is elegendõ, mégis több helyen erõsen javasolják a frissítést, ha rendszerünk nem rendelkezik a megfelelõ verzióval.

- kernel 2.2.12 vagy nagyobb. A 2.4 –es sorozatú kernelek egyenlõre nem supportáltak az IBM által
semmilyen szoftverükre, noha õk ölik a legtöbb pénzt a linuxos fejlesztésekre. (2001 februári közlemény)

- libncurses.so.4 . Ez gyakorlatilag az installáláshoz és a késõbbi setuphoz szükséges. Ha RedHat 7 –et használsz, akkor fel kell tenned a 4.x compatibility csomagot.

- Korn shell 5.2 vagy nagyobb. Ez a pdksh, mely minden disztribúcióban megtalálható. E nélkül használhatatlan a DB2. Már a telepítés is igényli.

- rpm 3.0 vagy nagyobb. A DB2 csomaghoz és a JDK-hoz egyaránt szükséges. Ha nem RH alapú disztribúcióra készülünk installálni (Corel, Debian, Slackware), akkor szükségünk lesz valami helyettesítõre. (pl.: alien)

- JAVA. Egyes DB2 programok, grafikus kliens és a JAVA tárolt eljárások futtatásához szükséges.
A SUN JDK-jával sikertelen eredményeket kaptunk, ezért mindenképp az IBM honlapjáról letölthetõ verziót használatát ajanljuk!

A leírásban az szerepel, hogy elegendõ a JRE is, de egyes java tárolt eljárások készítésénél
értelmezhetetlen hibát csak az SDK (JDK) –ra váltással szüntethettük meg.

JDK-1.1.8:

http://www-106.ibm.com/developerworks/java/jdk/118/linux/?dwzone=java

JDK-1.3:

http://www-106.ibm.com/developerworks/java/jdk/linux130/devkit-info.html


3.2 JAVA specifikus beállítások

Az IBM a JAVA2 használatát ajánlja, ehhez azonban a db2 indítása elõtt szükségünk van a következõ parancs kiadására:

db2set DB2_USE_JDK12=true

Ügyeljünk továbbá arra, hogy a különbözõ verziók teljesen más könyvtárba telepítik magukat:
az elsõ a /usr/jdk118 –be, míg a másik a /opt/IBMJava2-13 –ba. Ez azért fontos, mert az instance-nak van egy konfigurációs paramétere: jdk11_path, melynek ezt kell megadni.

A másik hiányossága a JAVA csomagoknak, hogy nem hozzák létre a linkeket a saját lib-jeikre. Ezeket nekünk kell elkészíteni a /usr/lib –be:

JAVA-1.1.8 esetén: a /usr/jdk118/lib/linux/native_threads/ -bõl
libjava.so
libjitc.so
libmath.so
libzip.so

JAVA-1.3 esetén: a /opt/IBMJava2-13/jre/bin –bõl
libjava.so
libjvm.so
libhpi.so

Ezek után már csak a környezeti változóinkat kell beállítanunk. Tegyük a /etc/profile –ba:

JAVA-1.1.8 esetén:
export JAVA_HOME=/usr/jdk118
export JDK11_PATH=/usr/jdk118
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/classes.zip

JAVA-1.3 esetén:
export JAVA_HOME=/opt/IBMJava2-13
export JDK11_PATH=/opt/IBMJava2-13
export PATH=$PATH:$JAVA_HOME/bin

a JAVA-1.3 esetén még van mit csinálnunk:
- a DB2 a jre-t hívja meg, azonban a JAVA2-1.3 –ban már nincs ilyen elkülönítve. Ezért
szükséges nekünk linket készíteni rá:

ln -sf /opt/IBMJava2-13/jre/bin/java /opt/IBMJava2-13/jre/bin/jre

- A DB2 a –nojit opcióval híjva a jre-t. Ez azonban nem támogatott a JAVA2 –ben. Ezért
amennyiben olyan DB2 programmal találkozunk ami ezt szeretné használni, szerkesszük át az
indító scriptjét. Ilyen például a db2cc:
A /usr/IBMdb2/V7.1/bin/db2cc fileban a 44-ik sorban javítsuk az opciókat:
JRE_OPTIONS="-ss256k -mx128m -Ddb2path=$DB2PATH"


Megjegyzés: ha nincs rpm-ed (Debian, Corel, Slackware) és még véletlenül sem tudsz feltenni, akkor sem kell feladni. Keresd meg, milyen programokkal tudsz rpm-et kicsomagolni, és szedd ki belõle az adatokat.

Debian esetében:

for f in /mnt/cdrom1/db2/*rpm
do
alien -d -i -c $f
done

Ezek után root-ként a /usr/ibmdb2/v7.1/instance/dasicrt –el az Admin Servert, /usr/ibmdb2/v7.1/instance/db2icrt -al pedig az instanszokat tudjuk létrehozni.

Bõvebb információért a leírás végén találhatsz linket.

4. Telepítés

4.1. A DB2 komponenseinek telepítése

Dolgozzunk root –ként a telepítés folyamata alatt mindig, kivéve ahol ettõl eltérõen ezt leírjuk.

A kapott csomagot tömörítsük ki és indítsuk a db2setup scriptet.
Itt választhatjuk ki, hogy mely komponenseket akarjuk telepíteni. Ha nem tudjuk hogy mely komponens mire szolgál, akkor nem is olyan biztos, hogy szükségünk van a DB2 re ;) !

Ügyeljünk arra, hogy válasszuk ki a DB2 library-jának linkelését és az Application Development Client-et!

A DB2 Administration Server-t csak akkor mellõzzük, ha biztosan tudjuk, hogy nem lesz rá szükségünk.

A telepítés után módunkban áll majd instance-ot is létrehozni. Ehhez az installer user regisztrációt kér. Itt létrehozhatunk újat, vagy használhatunk már meglévõ felhasználót. Az instance user az adatbázis futtatásához kell a fenced user a User Definied Functions futtatásához. Ügyeljünk arra, hogy ezen felhasználók home-ját tartalmazó partíción legyen elegendõ hely az adatbázisnak!

Amennyiben távolról jelentkeztünk be, gondoskodjunk arról, hogy elérhetõk legyenek a useradd, groupadd, passwd, pdksh programok, egyébként félbeszakad a telepítés. Amennyiben ez történne, töröljük a létrehozott group-ot, user-t és könyvtárakat. Továbbá a /tmp -ben létrehozott ideiglenes db2 fileokat.

Ha ezzel megvagyunk, indítsuk el szerverünket. Ha installálásnál az auto start –ot választottuk akkor egyszerûen init q.


4.2 A DB2 upgradeja

Miután kész vagyunk, jöhet az upgrade. Sajnos a DB2-ben elég sok hiba van, így máris itt van két fixpack is. A javítócsomagok nem incrementálisak, azaz egymástól függetlenül telepíthetõek (kivéve ha ezt a fixpack readme-je nyomatékosan nem cáfolja). Arra azonban ügyeljünk, hogy az egyes javítások oly mértékben megváltoztatják az adatbázis motorját, hogy a lefele kompatibilitás elvész!!! Ezekrõl a fixpack-ek leírásában olvashatunk. (pl: egy javított DB2-vel készített backup nem tölthetõ vissza nem javított rendszerbe; vagy nem javított kliens nem rendeltetésszerûen mûködik egy fixpackelt DB-höz kapcsolódva!!!)

Lépjünk be root-ként és végezzük el minden instance -ra:

su - db2instx // a db2instx az instance neve
. $HOME/sqllib/db2profile
db2 force applications all
db2 terminate
db2stop
db2licd end
exit

Ha az összes instance áll, szintén root-ként hajtsuk végre:

su - db2as // itt a db2as a szerveren mûködõ Administration Szerver felhasználói neve – ha installáltunk ilyet
. $HOME/sqllib/db2profile
db2admin stop
exit

ezzel leállítottuk az AS-t is.

A FixPack-et csomagoljuk ki egy tetszõleges könyvtárba. Ha nem vagyunk benne biztosak, hogy szükségünk van-e rá akkor egyszerûen ellenõrízhetjük:

rpm -qa |grep db2

Ha a kapott eredményben a db2cliv-7.1.0-x –ben az x értéke kisebb mint a fixpack-ünk szintje akkor folytathatjuk az upgradet.

A fixpack egyszerûen telepíthetõ, indítsuk a ./installpatch scriptet!

Fixpack telepítés utáni feladatok: (rootként)

/usr/IBMdb2/V7.1/instance/db2iupdt db2instx // ahol a db2instx az instance neve.

/usr/IBMdb2/V7.1/instance/dasiupdt db2as // ahol a db2as az Administration Server neve

Amennyiben olyan szerveren végezzük el az upgradet, melyen már vannak adatbázisok is, rebindolnunk kell a utilokat. Ezek azonban már inkább adatbázisgazda feladatok. Ezekrõl többet a fixpackek readmejében olvashatunk:

ftp://ftp.software.ibm.com/ps/products/db2/fixes/english-us/db2linuxv7/

Errõl a címrõl tölthetjük le a legfrissebb javítócsomagokat is.


5. Kernel módosítások

Erre a lépésre csak abban az esetben lesz szükségünk, ha nagy terhelhetõségre is pályázunk. Sajnos a DB2-nek a 2.2.x-es sorozatú kernelek még eléggé nagy akadályt jelentenek, a 2.4.x-es sorozat azonban meg az IBM által nem támogatott. Ha azt vesszük észre, hogy kapcsolódott alkalmazásaink száma egyszer csak telítõdik, majd többnyire TCP/IP vagy SOCKET témájú errorokat kapunk 90%, hogy a lenti változtazások megoldást fognak jelenteni.

(Figyelem! Ezek csak lehetõséget biztosítanak arra, hogy a DB2 paraméterei lényegüket nyerjék, az adatbázis konfigurációját nem váltják ki. pl.: max_application vagy max_agents 100 fölött szükségesek a kernel módosítások)

A következõkben néhány paraméter, melyet nem árt beállítanunk kernelünkben, majd újrafordítani:

- Amennyiben szeretnénk UTF-8 –on kívül más karakterkódú adatbázist is létrehozni, fordítsuk bele a megfelelõ NSL-eket a kernelbe.

- Növeljük meg a maximális taszkok számát: include/linux/tasks.h -ban:
#define NR_TASKS 3512

- Növeljük meg a szemaforok számát: include/linux/sem.h -ban:
#define SEMMNI 1024
#define SEMMSL 512
#define SEMOPM 64
#define SEMVMX 65535


6. Utolsó teendõk

Ha van a szerverünkön csomagszûrõ, akkor ne feledkezzünk meg az adminisztrációs szerver és az instanszok portjait kinyitni. Ezek az 523 (AS) és alapesetben az 50000,50001 (INSTANCE). Az utóbbiakról meggyõzõdhetünk ha belenézünk
a /etc/services –be!

Ellenõrizzük, hogy a rendszerünk felhasználóira beállított korlátozások nem bénítják-e meg a DB2 mûködését (/etc/security/limits.conf)

Amennyiben a dokumentációt is felinstalláltuk (ami egyébként elég hasznos lehet) készítsünk linket a webszerverünk DocRoot-jába a /usr/IBMdb2/V7.1/doc/en_US/html –re, vagy másoljuk oda. Ne felejtketzzünk meg cgi futtatás jogokat is beállítani, hogy használhassuk a keresõt.


7. Tanácsok

Legyünk mindig résen. Még a legjobb adatbázisgazdák is ütközhetnek meglepetésekbe a DB2 Linuxos verziójával. A legtöbb esetben a Fixpack-ok megoldások lehetnek a hibákra, de lehet, hogy csak egy adatbázis konfiguráció a bûnös. Ilyenkor természetesen rögtön a Linux kerül a bûnös lista élére. Kövessük figyelemmel az IBM DB2-es newsgroupjait, nem feltétlenül kell úttörõnek lennünk egy probléma megoldását tekintve.

Ha gond van az installálással, vagy a futtatással, ellenõrizzük, nincs-e olyan biztonsági beállításunk ami keresztbetesz a DB2-nek. Tipikusan ilyen lehet a különbözõ security kernel patch-ek. (Nálunk az Openwall patch-el akadt problémánk, mégpedig a restricted /proc és a /tmp featurekkel!)

Ha Debian vagy Slackware Linuxod van, hasznosak lehetnek a következõ linkek:
Debian:

http://tiago.org/db2-4-linux.html

Slackware:

http://www.webdaemons.com/installdb2.html

 

8. Linkek

DB2 honlapja:

http://www-4.ibm.com/software/data/db2/

Letöltések gyûjteménye

http://service.software.ibm.com/segdown?segment=DM&family=DB

Fixpackek:

ftp://ftp.software.ibm.com/ps/products/db2/fixes/english-us/db2linuxv7/

Newsgroup:

comp.databases.ibm-db2


2001.06.02
Kovács János (koko@ofi.hu)