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:
2001.06.02
Kovács János (koko@ofi.hu)