Alkalmazásfejlesztés: Ügyfélalkalmazások programozása

| | |

DB2 Universal JDBC illesztőprogram 4-es típusú |csatlakoztatása nem támogatott DB2 for VM/VSE esetén

|

A DB2 Universal JDBC illesztőprogram nem támogatja a 4-es típusú |csatlakoztatást DB2 for VM/VSE adatbázisokhoz. Az Alkalmazásfejlesztési |útmutató: Kliensalkalmazások programozása kézikönyv "Windows Java |környezet beállítása" és "DB2 Universal JDBC illesztőprogram |telepítése" című témakörei hibásan állítják, hogy a DB2 Universal |JDBC illesztőprogram támogatja a 4-es típusú csatlakozást DB2 for VM/VSE |adatbázisokhoz.

A DB2 Universal JDBC illesztőprogram kapcsolatösszesítő és Sysplex terheléskiegyenlítés

A DB2 UDB for z/OS(R) kiszolgálók elérésére a DB2 Universal JDBC Driver 4-es típusú kapcsolódás illesztőprogramot használó alkalmazások kihasználhatják a kapcsolatösszesítő és Sysplex terheléskiegyenlítés funkciókat.

Ezek a funkciók hasonlók a DB2 Connect kapcsolatösszesítő és Sysplex terheléskiegyenlítő funkcióihoz.

A DB2 Universal JDBC Driver kapcsolatösszesítő csökkentheti a DB2 UDB for z/OS(R) adatbázis-kiszolgálók által a nagyszámú ügyfélalkalmazások támogatásához igényelt erőforrásokat oly módon, hogy sok kapcsolatobjektum számára megengedi, hogy egyazon fizikai kapcsolatot használjon, amely csökkenti az adatbázis-kiszolgálóval létesített fizikai kapcsolatok teljes számát.

DB2 Universal JDBC Driver Sysplex terheléskiegyenlítés javíthatja egy adatmegosztó csoport rendelkezésre állását, mivel az illesztőprogram gyakori állapotinformációkat kap az adatmegosztó csoport tagjairól. Az illesztőprogram ezeket az információkat használja annak az adatmegosztó tagnak a meghatározására, amelyhez a következő tranzakciót irányítani kell. A Sysplex terheléskiegyenlítéssel a DB2 UDB for z/OS kiszolgáló és Workload Manager for z/OS (WLM) biztosítja, hogy a munka hatékony elosztására kerül sor az adatmegosztó csoport tagjai között, és hogy egy tag meghibásodása esetén a munka az adatmegosztó csoport egy másik tagjához kerül.

A DB2 Universal JDBC Driver szállítási objektumokat és egy globális szállítási objektumtárolót használ a kapcsolatösszesítő és a Sysplex terheléskiegyenlítés támogatására. Az adatbázis-kiszolgáló minden fizikai kapcsolatához létezik egy szállítási objektum. Ha engedélyezi a kapcsolatösszesítőt és a Sysplex terheléskiegyenlítőt, az adatbázis-kiszolgáló fizikai kapcsolatainak számát bármikor beállíthatja a szállítási objektumok maximális számának beállításával.

Az illesztőprogram szintjén a DB2 Universal JDBC Driver konfigurációs tulajdonságainak segítségével állítja be a szállítási objektumok számának korlátait.

A kapcsolat szintjén a DB2 Universal JDBC Driver kapcsolatösszesítő és Sysplex terheléskiegyenlítő engedélyezésére és letiltására, valamint a szállítási objektumok számának korlátozására a DataSource tulajdonságok segítségével kerül sor.

A globális szállítási objektumterület a következő módszerekkel figyelhető meg:

A kapcsolatösszesítő és Sysplex terheléskiegyenlítő DB2 Universal JDBC Driver konfigurációs tulajdonságai

A következő konfigurációs tulajdonságok használatosak a kapcsolatösszesítőhöz és Sysplex terheléskiegyenlítőhöz

db2.jcc.dumpPool
A globális szállítási tároló eseményeihez kiírt összegző statisztikák mellett megadja a kiírt statisztikák típusát. A globális szállítási tárolót a kapcsolatösszesítő és a Sysplex terheléskiegyenlítő használja.

A db2.jcc.dumpPool adattípusa egész szám (int.). A db2.jcc.dumpPoolStatisticsOnSchedule és a db2.jcc.dumpPoolStatisticsOnScheduleFile konfigurációs tulajdonságokat be kell állítani a statisztikák írása előtt.

A db2.jcc.dumpPool tulajdonsággal a következő típusú statisztikák közül adható meg egy vagy több:

Egynél több típusú esemény nyomkövetéséhez adja össze a követni kívánt események típusainak értékét. Például tegyük fel, hogy a DUMP_GET_OBJECT és DUMP_CREATE_OBJECT eseményeket szeretné figyelni. Ezeknek az értékeknek a numerikus megfelelőjük a 2 és 16, így 18-at kell megadni a db2.jcc.dumpPool értékeként.

Az alapértelmezés 0, ami azt jelenti, hogy csak a globális szállítási tároló összegző eseményeinek kiírására kerül sor.

db2.jcc.dumpPoolStatisticsOnSchedule
Másodpercben megadja, hogy milyen gyakran kerül sor a globális szállítási tárolók statisztikáinak kiírására a db2.jcc.dumpPoolStatisticsOnScheduleFile konfigurációs tulajdonság által megadott fájlba. A globális szállítási tárolót a kapcsolatösszesítő és a Sysplex terheléskiegyenlítő használja.

Az alapértelmezés -1, ami azt jelenti, hogy a globális szállítási tároló statisztikáinak kiírására nem kerül sor.

db2.jcc.dumpPoolStatisticsOnScheduleFile
Megadja annak a fájlnak a nevét, ahová a globális szállítási tároló statisztikáit kiírja a program. A globális szállítási tárolót a kapcsolatösszesítő és a Sysplex terheléskiegyenlítő használja.

Ha a db2.jcc.dumpPoolStatisticsOnScheduleFile konfigurációs tulajdonság nincs megadva, a globális szállítási tároló statisztikáinak kiírására nem kerül sor.

db2.jcc.maxTransportObjectIdleTime
Azt az időt adja meg másodpercben, amelyet egy nem használt szállítási objektum egy globális szállítási objektumtárolóban tölt, mielőtt azt törölni lehet onnan. A szállítási objektumokat a kapcsolatösszesítő és a Sysplex terheléskiegyenlítő használja.

A db2.jcc.maxTransportObjectIdleTime konfigurációs tulajdonság alapértéke 60. Ha a db2.jcc.maxTransportObjectIdleTime értékét 0-nál kisebb értékre állítja, a nem használt szállítási objektumok törlésére a tárolóból azonnal sor kerül. Ez a művelet nem javasolt, mivel jelentős teljesítménycsökkenést eredményezhet.

db2.jcc.maxTransportObjectWaitTime
A maximális időt adja meg másodpercben, ameddig egy alkalmazás egy szállítási objektumra vár, ha a db2.jcc.maxTransportObjects értéket elérte. A szállítási objektumokat a kapcsolatösszesítő és a Sysplex terheléskiegyenlítő használja. Ha egy alkalmazás a db2.jcc.maxTransportObjectWaitTime értékénél tovább vár, a globális szállítási objektumtároló SQLException hibát ad.

A db2.jcc.maxTransportObjectWaitTime konfigurációs tulajdonság alapértéke -1. A negatív értékek azt jelentik, hogy az alkalmazás örökké vár.

db2.jcc.maxTransportObjects
A globális szállítási objektumtárolóban lévő szállítási objektumok számának felső korlátját adja meg a kapcsolatösszesítő és a Sysplex terheléskiegyenlítő számára. Ha a tárolóban a szállítási objektumok száma eléri a db2.jcc.maxTransportObjects értéket, a db2.jcc.maxTransportObjectIdleTime értékénél régebben nem használt szállítási objektumokat a program törli a tárolóból.

A db2.jcc.maxTransportObjects konfigurációs tulajdonság alapértéke -1, ami azt jelenti, hogy nincs korlátozás a globális szállítási objektumtárolóban lévő szállítási objektumok számára vonatkozóan.

db2.jcc.minTransportObjects
A globális szállítási objektumtárolóban lévő szállítási objektumok számának alsó korlátját adja meg a kapcsolatösszesítő és a Sysplex terheléskiegyenlítő számára. A JVM létrehozásakor nincsenek szállítási objektumok a tárolóban. A szállítási objektumok felvételére a tárolóba igény szerint kerül sor. Amint elérte a db2.jcc.minTransportObjects értéket, a globális szállítási objektumtárolóban lévő szállítási objektumok száma soha nem esik a db2.jcc.minTransportObjects értéke alá a JVM élettartama alatt.

A db2.jcc.minTransportObjects konfigurációs tulajdonság alapértéke 0. A nullánál nem nagyobb érték azt jelenti, hogy a globális szállítási objektumtároló üres is lehet.

A DB2 Universal JDBC Driver DataSource tulajdonságai a kapcsolatösszesítőhöz és Sysples terheléskiegyenlítőhöz

A következő DB2 Universal JDBC Driver DataSource tulajdonságok használatosak a kapcsolatösszesítőhöz és Sysplex terheléskiegyenlítőhöz:

enableConnectionConcentrator
Jelzi, hogy a DB2 Universal JDBC Driver kapcsolatösszesítő funkciója engedélyezve van-e. A kapcsolatösszesítő funkció csak a DB2 UDB for z/OS kiszolgálók kapcsolatainál elérhető.

Az enableConnectionConcentrator tulajdonság adattípusa logikai érték (boolean). Az alapértelmezés false (hamis). Ha azonban az enableSysplexWLB beállítása true (igaz), az alapértelmezés is true.

enableSysplexWLB
Jelzi, hogy a DB2 Universal JDBC Driver Sysplex terheléskiegyenlítő funkciója engedélyezve van-e. A Sysplex terheléskiegyenlítő funkció csak DB2 UDB for z/OS kiszolgálók kapcsolatainál elérhető.

Az enableSysplexWLB tulajdonság adattípusa logikai érték (boolean). Az alapértelmezés false (hamis). Ha azonban az enableSysplexWLB beállítása true (igaz), az enableConnectionConcentrator értéke is igaz lesz alapértelmezés szerint.

maxTransportObjects
Az összes kapcsolathoz a megfelelő DataSource objektummal használható szállítási objektumok maximális számát adja meg. A szállítási objektumokat a kapcsolatösszesítő és a Sysplex terheléskiegyenlítő használja. A maxTransportObjects értékét a program figyelmen kívül hagyja, ha az enableConnectionConcentrator vagy enableSysplexWLB tulajdonságok beállítása nem engedélyezi a kapcsolatösszesítő vagy a Sysplex terheléskiegyenlítés használatát.

Ennek a tulajdonságnak az adattípusa egész szám (int.).

Ha a maxTransportObjects értékét nem érte el, és szállítási objektum nem érhető el a szállítási objektumtárolóban, a tároló egy új szállítási objektumot hoz létre. Ha elérte a maxTransportObjects értékét, az alkalmazás a db2.jcc.maxTransportObjectWaitTime konfigurációs tulajdonsággal megadott ideig vár. Az idő eltelte után, ha még mindig nincs elérhető szállítási objektum a tárolóban, a tároló egy SQLException kivételt ad.

A maxTransportObjects tulajdonság nem bírálja felül a db2.jcc.maxTransportObjects konfigurációs tulajdonságot. A maxTransportObjects tulajdonság nincs hatással más DataSource objektumok kapcsolataira. Ha a maxTransportObjects értéke nagyobb, mint a db2.jcc.maxTransportObjects értéke, a maxTransportObjects nem növeli a db2.jcc.maxTransportObjects értékét.

A maxTransportObjects tulajdonság alapértéke -1, ami azt jelenti, hogy a DataSource szállítási objektumainak számát csak az illesztőprogram db2.jcc.maxTransportObjects értéke korlátozza.

Példa a DB2 Universal JDBC Driver kapcsolatösszesítő és Sysplex terheléskiegyenlítő funkciók engedélyezésére a WebSphere Application Server alkalmazásban

A következő eljárás példa a DB2 Universal JDBC Driver kapcsolatösszesítő és Sysplex terheléskiegyenlítő funkciók engedélyezésére a WebSphere(R) Application Server alkalmazással.

Előfeltételek

Kiszolgálói követelmények:

Ügyfélre vonatkozó követelmények:

Eljárás

A DB2 Universal JDBC Driver kapcsolatösszesítő és Sysplex terheléskiegyenlítő funkciók engedélyezése a WebSphere Application Server alkalmazáshoz:

  1. Ellenőrizze, hogy a DB2 Universal JDBC Driver szintje megfelelő a kapcsolatösszesítő és Sysplex terheléskiegyenlítő funkciók támogatásához a következő parancs kiadásával a parancssori feldolgozóban (z/OS) vagy a rendszerszolgáltatások ablakban (UNIX(R)):
    java com.ibm.db2.jcc.DB2Jcc -version
    A kimenetben keressen az alábbihoz hasonló sort:
    [ibm][db2][jcc] Driver: IBM DB2 JDBC Universal Driver Architecture n n
    n értékének 2.7-nek vagy nagyobbnak kell lennie.
  2. A DB2 Universal JDBC Driver konfigurációs tulajdonságok beállításával engedélyezze a kapcsolatösszesítőt és Sysplex terheléskiegyenlítőt az illesztőprogram alatt létrehozott minden DataSource példányhoz.

    Egy DB2JccConfiguration.properties fájlban állítsa be a konfigurációs tulajdonságokat.

    1. Hozzon létre egy DB2JccConfiguration.properties fájlt, vagy módosítsa a meglévő DB2JccConfiguration.properties fájlt.
    2. Állítsa be a következő konfigurációs tulajdonságokat:
      • db2.jcc.minTransportObjects
      • db2.jcc.maxTransportObjects
      • db2.jcc.maxTransportObjectWaitTime
      • db2.jcc.dumpPool
      • db2.jcc.dumpPoolStatisticsOnScheduleFile
      Kezdje az alábbihoz hasonló beállításokkal:
      db2.jcc.minTransportObjects=0
      db2.jcc.maxTransportObjects=1500
      db2.jcc.maxTransportObjectWaitTime=-1
      db2.jcc.dumpPool=0
      db2.jcc.dumpPoolStatisticsOnScheduleFile=
        /home/WAS/logs/srv1/poolstats
      
    3. Vegye fel a DB2JccConfiguration.properties könyvtárútvonalát a WebSphere Application Server DB2 Universal JDBC Driver osztályútvonalába.
  3. A DB2 Universal JDBC Driver adatforrás tulajdonságainak beállításával engedélyezze a kapcsolatösszesítő vagy Sysplex terheléskiegyenlítő funkciókat.

    A WebSphere Application Server adminisztrátori konzoljában állítsa be az alkalmazás által az adatbázis-kiszolgáló kapcsolódásához használt adatforrás következő tulajdonságait:

    • enableSysplexWLB
    • enableConnectionConcentrator
    • maxTransportObjects
    Tegyük fel, hogy a kapcsolatösszesítő és a Sysplex terheléskiegyenlítő funkciókra is szüksége van. Az alábbihoz hasonló beállításokkal kezdje:
    26. táblázat Példa az adatforrás tulajdonságainak beállításaira a DB2 Universal JDBC Driver kapcsolatösszesítő és Sysplex terheléskiegyenlítő funkciókhoz
    Tulajdonság Beállítás
    enableSysplexWLB true1
    maxTransportObjects 100
    Megjegyzések:
    1. Az enableConnectionConcentrator tulajdonság értéke alapértelmezés szerint igaz, mivel a enableSysplexWLB tulajdonság beállítása is igaz.
  4. Indítsa újra a WebSphere Application Server alkalmazást.

A DB2 Universal JDBC Driver kapcsolatösszesítő és Sysplex terheléskiegyenlítő funkciók megfigyelésének módszerei

A DB2 Universal JDBC Driver kapcsolatösszesítő és Sysplex terheléskiegyenlítő funkciók megfigyeléséhez a globális szállítási objektumtárolót kell megfigyelni. A globális szállítási objektumterület a következő módszerekkel figyelhető meg:

Konfigurációs tulajdonságok a globális szállítási objektumtároló megfigyelésére

A db2.jcc.dumpPool, db2.jcc.dumpPoolStatisticsOnSchedule és a db2.jcc.dumpPoolStatisticsOnScheduleFile konfigurációs tulajdonságok szabályozzák a globális szállítási objektumtároló nyomkövetését.

Például a konfigurációs tulajdonságok alábbi beállításainak következményeként a program minden 60 másodperc elteltével Sysplex hibaüzeneteket és a tároló hibaüzeneteit írja a /home/WAS/logs/srv1/poolstats nevű fájlba:

db2.jcc.dumpPool=DUMP_SYSPLEX_MSG|DUMP_POOL_ERROR
db2.jcc.dumpPoolStatisticsOnSchedule=60
db2.jcc.dumpPoolStatisticsOnScheduleFile=/home/WAS/logs/srv1/poolstats

A tárolási statisztikafájl egy bejegyzése így néz ki:

idő
Scheduled PoolStatistics npr:2575 nsr:2575 lwroc:439 
hwroc:1764 coc:372 aooc:362 rmoc:362 nbr:2872 tbt:857520 tpo:10

A mezők jelentése a következő:

npr
A tároló létrehozása óta a DB2 Universal JDBC Driver által a tárolóhoz intézett kérések teljes száma.
nsr
A tároló létrehozása óta a DB2 Universal JDBC Driver által a tárolóhoz intézett sikeres kérések száma. A sikeres kérés azt jelenti, hogy a tároló egy objektumot adott vissza.
lwroc
Az újrahasznosított, de a tárolóban nem talált objektumok száma. Ez akkor fordulhat elő, ha egy kapcsolatobjektum egy szállítási objektumot egy tranzakciós határnál enged el. Ha a kapcsolatobjektumnak később egy szállítási objektumra van szüksége, és az eredeti szállítási objektumot nem használta semmilyen más kapcsolatobjektum, a kapcsolatobjektum használhatja azt a szállítási objektumot.
hwroc
A tárolóból újrahasznosított objektumok száma.
coc
A tároló létrehozása óta a DB2 Universal JDBC Driver által létrehozott objektumok száma.
aooc
A db2.jcc.maxTransportObjectIdleTime konfigurációs tulajdonság által megadott tétlenségi időt túllépő, és a tárolóból törölt objektumok száma.
rmoc
A tároló létrehozása óta az onnan törölt objektumok száma.
nbr
A DB2 Universal JDBC Driver által a tárolóhoz intézett, és a tároló által a maximális kapacitás elérése miatt blokkolt kérések száma. Egy blokkolt kérés sikeres lehet, ha a db2.jcc.maxTransportObjectWaitTime konfigurációs érték túllépése és kivétel előfordulása előtt a tároló egy objektumot kap.
tbt
A tároló által blokkolt kérések teljes ideje ezredmásodpercben. Ez az idő sokkal nagyobb lehet, mint az alkalmazás eltelt végrehajtási ideje, ha az alkalmazás több szálat használ.
tpo
A jelenleg a tárolóban található objektumok száma.
Alkalmazásprogramozási felületek a globális szállítási objektumtároló megfigyelésére

A globális szállítási objektumtároló statisztikáinak gyűjtésére alkalmazások készíthetők. Ezek az alkalmazások a DB2PoolMonitor osztályból készítenek objektumokat, és hívnak meg metódusokat a tároló információinak lekérésére.

Például a következő kód egy objektumot hoz létre a globális szállítási objektumtároló figyelésére:

import com.ibm.db2.jcc.DB2PoolMonitor;
DB2PoolMonitor transportObjectPoolMonitor =  
	DB2PoolMonitor.getPoolMonitor (DB2PoolMonitor.TRANSPORT_OBJECT);

A DB2PoolMonitor objektum létrehozása után a következő metódusok használatával figyelheti meg a globális szállítási objektumtárolót.

getMonitorVersion
Formátum:
public int getMonitorVersion()

A DB2 Universal JDBC Driver mellett található DB2PoolMonitor osztály verzióját kéri le.

totalRequestsToPool
Formátum:
public int totalRequestsToPool()

A tároló létrehozása óta a DB2 Universal JDBC Driver által a tárolóhoz intézett kérések teljes számát kéri le.

successfullRequestsFromPool
Formátum:
public int successfullRequestsFromPool()

A tároló létrehozása óta a DB2 Universal JDBC Driver által a tárolóhoz intézett sikeres kérések számát kéri le. A sikeres kérés azt jelenti, hogy a tároló egy objektumot adott vissza.

numberOfRequestsBlocked
Formátum:
public int numberOfRequestsBlocked()

A DB2 Universal JDBC Driver által a tárolóhoz intézett, és a tároló által a maximális kapacitás elérése miatt blokkolt kérések számát kéri le. Egy blokkolt kérés sikeres lehet, ha a db2.jcc.maxTransportObjectWaitTime konfigurációs érték túllépése és kivétel előfordulása előtt a tároló egy objektumot kap.

totalTimeBlocked
Formátum:
public long totalTimeBlocked()

A tároló által blokkolt kérések teljes idejét kéri le ezredmásodpercben. Ez az idő sokkal nagyobb lehet, mint az alkalmazás eltelt végrehajtási ideje, ha az alkalmazás több szálat használ.

lightWeightReusedObjectCount
Formátum:
public int lightWeightReusedObjectCount()

Az újrahasznosított, de a tárolóban nem talált objektumok számát kéri le. Ez akkor fordulhat elő, ha egy kapcsolatobjektum egy szállítási objektumot egy tranzakciós határnál enged el. Ha a kapcsolatobjektumnak később egy szállítási objektumra van szüksége, és az eredeti szállítási objektumot nem használta semmilyen más kapcsolatobjektum, a kapcsolatobjektum használhatja azt a szállítási objektumot.

heavyWeightReusedObjectCount
Formátum:
public int heavyWeightReusedObjectCount()

A tárolóból újrahasznosított objektumok számát kéri le.

createdObjectCount
Formátum:
public int createdObjectCount()

A tároló létrehozása óta a DB2 Universal JDBC Driver által létrehozott objektumok számát kéri le.

agedOutObjectCount
Formátum:
public int agedOutObjectCount()

A db2.jcc.maxTransportObjectIdleTime konfigurációs tulajdonság által megadott tétlenségi időt túllépő, és a tárolóból törölt objektumok számát kéri le.

removedObjectCount
Formátum:
public int removedObjectCount()

A tároló létrehozása óta az onnan törölt objektumok számát kéri le.

totalPoolObjects
Formátum:
public int totalPoolObjects()

A jelenleg a tárolóban található objektumok száma.

OleDbReportIsLongForLongTypes CLI/ODBC konfigurációs kulcsszó

Az OleDbReportIsLongForLongTypes kulcsszót a következő adatbázis-kiszolgálók támogatják:

Kulcsszó leírása:
OLE DB jelzőjű LONG adattípust hoz létre DBCOLUMNFLAGS_ISLONG beállítással.
db2cli.ini kulcsszó szintaktika:
OleDbReportIsLongForLongTypes = 0 | 1
Egyenértékű utasítási attribútum:
SQL_ATTR_REPORT_ISLONG_FOR_LONGTYPES_OLEDB
Alapértelmezett beállítás:
A LONG típusok (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC és LONG VARGRAPHIC FOR BIT DATA) nem rendelkeznek megadott DBCOLUMNFLAGS_ISLONG jelzővel, mely az oszlopok WHERE tagmondatban történő használatát eredményezheti.
Használati megjegyzések:
 

Az OLE DB ügyfél kurzor alrendszere és az OLE DB .NET Data Provider's CommandBuilder programja frissítési (update) és törlési (delete) utasításokat hoz létre az IBM DB2 OLE DB Provider által küldött oszlopadatok alapján. Ha a létrehozott utasításban szerepel LONG típus a WHERE tagmondatban, az utasítás végrehajtása meghiúsul, mivel a LONG típusok nem használhatók egyenlőség operátorral végzett keresések során. Az OleDbReportIsLongForLongTypes kulcsszónak 1-es értéket adva az IBM DB2 OLE DB Provider jelentést készít a DBCOLUMNFLAGS_ISLONG jelzővel rendelkező LONG típusokról (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC és LONG VARGRAPHIC FOR BIT DATA). Ez kiküszöböli a hosszú oszlopok WHERE tagmondatban történő használatát.

OleDbSQLColumnsSortByOrdinal CLI/ODBC konfigurációs kulcsszó

A OleDbSQLColumnsSortByOrdinal kulcsszót a következő adatbázis-kiszolgálók támogatják:

Kulcsszó leírása:
Megszabja, hogy az OLE DB IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) adjon meg sorkészletet, az ORDINAL_POSITION oszlop szerint rendezve.
db2cli.ini kulcsszó szintaktika:
OleDbSQLColumnsSortByOrdinal = 0 | 1
Egyenértékű utasítási attribútum:
SQL_ATTR_SQLCOLUMNS_SORT_BY_ORDINAL_OLEDB
Alapértelmezett beállítás:
IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) sorkészletet ad meg a TABLE_CATALOG, a TABLE_SCHEMA, a TABLE_NAME és a COLUMN_NAME oszlop szerint rendezve.
Használati megjegyzések:
 

A Microsoft OLE DB specifikáció esetében szükséges, hogy az IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) sorkészletet adjon meg a TABLE_CATALOG, a TABLE_SCHEMA, a TABLE_NAME és a COLUMN_NAME oszlop szerint rendezve. Az IBM DB2 OLE DB Provider megfelel a specifikációnak. Ugyanakkor a Microsoft ODBC Bridge Provider (MSDASQL) terméket használó alkalmazások kódolása jellemzően az ORDINAL_POSITION szerint rendezett sorkészletek beolvasását célozza. Az OleDbSQLColumnsSortByOrdinal kulcsszó értékét 1-re állítva a szolgáltató (provider) ORDINAL_POSITION szerint rendezett sorkészletet ad meg.

A DB2 Data Source tulajdonságcsoport az IBM DB2 OLE DB Provider termékhez

Az IBM DB2 OLE DB Provider új tulajdonságcsoporttal bővült: DB2 Data Source. A DB2 Data Source tulajdonságkészlete: DBPROPSET_DB2DATASOURCE.

A tulajdonságkészlet GUID azonosítója: {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}

A DBPROPSET_DB2DATASOURCE három tulajdonsággal rendelkezik:

DB2PROP_REPORTISLONGFORLONGTYPES

#define DB2PROP_REPORTISLONGFORLONGTYPES 4
Tulajdonságcsoport: DB2 Data Source 
Tulajdonságkészlet: DB2PROPSET_DATASOURCE
Típus: VT_BOOL
Jellemző R/W: R/W
Leírás: IsLong jelentése Long (hosszú) típusok esetén

Az OLE DB ügyfél kurzor alrendszere és az OLE DB .NET Data Provider's CommandBuilder programja frissítési (update) és törlési (delete) utasításokat hoz létre az IBM DB2 OLE DB Provider által küldött oszlopadatok alapján. Ha a létrehozott utasításban szerepel LONG típus a WHERE tagmondatban, az utasítás végrehajtása meghiúsul, mivel a LONG típusok nem használhatók egyenlőség operátorral végzett keresések során.

27. táblázat DB2PROP_REPORTISLONGFORLONGTYPES értékek
Értékek Jelentés
VARIANT_TRUE Ezen érték esetén az IBM DB2 OLE DB Provider jelentést készít a DBCOLUMNFLAGS_ISLONG jelzővel rendelkező LONG típusokról (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC, and LONG VARGRAPHIC FOR BIT DATA). Ez kiküszöböli a hosszú oszlopok WHERE tagmondatban történő használatát.
VARIANT_FALSE Nincs megadva DBCOLUMNFLAGS_ISLONG a LONG VARCHAR, a LONG VARCHAR FOR BIT DATA, a LONG VARGRAPHIC és a LONG VARGRAPHIC FOR BIT DATA esetében. Ez az alapérték.
DB2PROP_RETURNCHARASWCHAR

#define DB2PROP_RETURNCHARASWCHAR 2
Tulajdonságcsoport: DB2 Data Source 
Tulajdonságkészlet: DB2PROPSET_DATASOURCE
Típus: VT_BOOL
Jellemző R/W: R/W
Leírás: Char visszaadása WChar típusként

28. táblázat DB2PROP_RETURNCHARASWCHAR értékek
Értékek Jelentés
VARIANT_TRUE Az OLE DB leírást ad a CHAR, VARCHAR, LONG VARCHAR, illetve CLOB oszlopokról: DBTYPE_WSTR. Az ISequentialStream adatfolyamban szereplő adatok kódlapja UCS-2. Ez az alapérték.
VARIANT_FALSE Az OLE DB leírást ad a CHAR, VARCHAR, LONG VARCHAR, illetve CLOB oszlopokról: DBTYPE_STR. Az ISequentialStream adatfolyamban szereplő adatok kódlapja az ügyfél helyi kódlapja.
DB2PROP_SORTBYORDINAL

#define DB2PROP_SORTBYORDINAL 3
Tulajdonságcsoport: DB2 Data Source 
Tulajdonságkészlet: DB2PROPSET_DATASOURCE
Típus: VT_BOOL
Jellemző R/W: R/W
Leírás: Rendezés Ordinal szerint

A Microsoft OLE DB specifikáció esetében szükséges, hogy az IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) sorkészletet adjon meg a TABLE_CATALOG, a TABLE_SCHEMA, a TABLE_NAME és a COLUMN_NAME oszlop szerint rendezve. Az IBM DB2 OLE DB Provider megfelel a specifikációnak. Ugyanakkor a Microsoft ODBC Bridge Provider (MSDASQL) terméket használó alkalmazások kódolása jellemzően az ORDINAL_POSITION szerint rendezett sorkészletek beolvasását célozza.

29. táblázat DB2PROP_SORTBYORDINAL értékek
Értékek Jelentés
VARIANT_TRUE A szolgáltató ORDINAL_POSITION szerint rendezett sorkészletet ad meg.
VARIANT_FALSE A szolgáltató TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME szerint rendezett sorkészletet ad meg. Ez az alapérték.

Hibás URL szintaxis a DB2Binder szintaxisdiagramban

Az "Installing the DB2 Universal JDBC Driver" ("A DB2 Universal JDBC Driver telepítése") témában a DB2Binder szintaxisdiagram hibásan adja meg a DB2 Universal JDBC Driver URL szintaxisát. A DB2Binder helyes URL szintaxisa a következő diagramon szerepel:

DB2Binder szintaxis
Szerkezeti ábra felolvasásaSzerkezeti ábra kihagyása>>-java--com.ibm.db2.jcc.DB2Binder------------------------------>
 
>---url jdbc:db2://kiszolgáló-+---------+-/adatbázis------------>
                              '-:--port-'
 
>---user felhasználói_azonosító---password jelszó--------------->
 
>--+------------------+--+---------------------------+---------->
   '--size egész_szám-'  '--collection gyűjteménynév-'
 
>--+-----------------------------------------+--+-------+------><
   |              .-,----------------------. |  '--help-'
   |              V                        | |
   '--tracelevel ---nyomkövetési_beállítás-+-'
 

DB2 Universal JDBC vezérlőjű ügyfelek átirányítása

A DB2 Universal Database (UDB) for Linux, UNIX, és Windows automatikus ügyfélátirányítási szolgáltatás lehetővé teszi az ügyfélalkalmazások számára, hogy a kiszolgálóval folytatott kommunikáció megszakadása esetén helyreállítsák a kapcsolatot, így minimális fennakadással képesek legyenek folytatni működésüket.

Ha egy kiszolgáló meghibásodik, a hozzá kapcsolódó ügyfelek mindegyike kommunikációs hibajelzést kap, megszakad a kapcsolat, és az alkalmazáshiba áll elő. Ha fontos az üzembiztonság, akkor redundáns rendszerrel vagy feladatátvételi támogatással kell rendelkezni. (A feladatátvétel a kiszolgálónak az a képessége, hogy egy másik kiszolgáló meghibásodása esetén át tudja venni annak műveleteit.) Mindkét esetben a DB2 Universal JDBC vezérlőjű ügyfél megkísérel ismét kapcsolatot létesíteni az új kiszolgálóval vagy az eredeti kiszolgálóval, amely esetleg egy feladatátvételi csomóponton fut. Amikor a kapcsolat újból létrejön, az alkalmazás SQL Exception kivételt kap, amely közli, hogy meghiúsult a tranzakció; az alkalmazás működése a következő tranzakcióval folytatódhat.

Korlátozások

Eljárás

Miután az adatbázis-adminisztrátor megadta a másodlagos kiszolgáló helyét egy adott adatbázison a kiszolgálópéldányon, kapcsolódáskor a rendszer visszaküldi az elsődleges és a másodlagos kiszolgáló helyét az ügyfélnek. A DB2 Universal JDBC vezérlő létrehozza a DB2ClientRerouteServerList hivatkozható objektum egy példányát és ideiglenes memóriájában tárolja a példányt. Ha megszakas a kommunikáció, a DB2 Universal JDBC vezérlő megkísérli újra létrehozni a kapcsolatot a kiszolgálóról kapott kiszolgálói adatok alapján.

A clientRerouteServerListJNDIName DataSource tulajdonság további ügyfélátirányítási támogatást nyújt az ügyfélnél; a clientRerouteServerListJNDIName két funkciót lát el:

Másodlagos kiszolgálói adatok érdekében a clientRerouteServerListJNDIName azonosít egy JNDI tárban található DB2ClientRerouteServerList példányra mutató JNDI hivatkozást. Az elsődleges kiszolgálóval történő sikeres kapcsolódást követően a clientRerouteServerListJNDIName által küldött másodlagos kiszolgálói információkat felülírják a kiszolgálóról kapott adatok. A DB2 Universal JDBC vezérlő feladatátvételi eseményt követően megkísérli szétküldeni a frissített információkat a JNDI tárba, ha a clientRerouteServerListJNDIName tulajdonság meg van adva. Ha a clientRerouteServerListJNDIName meg van adva, a kapcsolódáshoz a program a DB2ClientRerouteServerList kiszolgálói információit használja. Ha az elsődleges kiszolgáló nincs megadva, a rendszer az adatforráson megadott serverName (kiszolgálónév) információt használja.

A DB2ClientRerouteServerList egy sorosítható Java bean négy tulajdonsággal:

A program ezen tulajdonságok elérésének getter (beolvasási) és setter (beállítási) módjait nyújtja. A DB2ClientRerouteServerList osztály megadása a következő módon történik:

package com.ibm.db2.jcc;
public class DB2ClientRerouteServerList 
  implements java.io.Serializable,
  javax.naming.Referenceable
{
  public String[] alternateServerName;
  public synchronized void 
    setAlternateServerName(String[] alternateServer);
  public String[] getAlternateServerName();
  public int[] alternatePortNumber;
  public synchronized void 
    setAlternatePortNumber(int[] alternatePortNumberList);
  public int[] getAlternatePortNumber();
  
  public synchronized void 
    setPrimaryServerName (String primaryServerName);
  public String getPrimaryServerName ();
  public synchronized void setPrimaryPortNumber (int primaryPortNumber)
  public int getPrimaryPortNumber (); 
}

Egy újonnan létrehozott feladatátvételi kapcsolat konfigurálása az eredeti adatforrás tulajdonságai alapján történik, kivéve a kiszolgáló nevét és a portszámot. Ezen felül az eredeti kapcsolódás során módosított DB2 UDB speciális regisztereket ismét létrehozza a rendszer a feladatátvételi kapcsolódás során, a DB2 Universal Driver JDBC vezérlő segítségével.

Ha kommunikációs hiba történik, a DB2 Universal JDBC vezérlő először az elsődleges kiszolgálóval kísérli meg helyreállítani a kapcsolatot. Amennyiben ez nem sikerül, a vezérlő megkísérel csatlakozni a másodlagos helyszínhez (feladatátvétel). A kapcsolat ismételt létrehozását követően a vezérlő java.sql.SQLException kivételt küld az alkalmazásnak SQLCODE -4498 kóddal azt jelezve, hogy a kapcsolatot automatikusan létrehozta a másodlagos kiszolgálóval. Ezután az alkalmazás újra megkísérelheti a tranzakciót.

Eljárás a DB2ClientRerouteServerList állandóvá tételére

Ahhoz, hogy a tároló beállításai lehetővé egyék a DB2ClientRerouteServerList példány állandóvá tételét, hajtsa végre a következő lépéseket:

  1. Hozza létre a DB2ClientRerouteServerList egy példányát és rendelje össze ezt a példányt a JNDI címtárral. Például:
    // A névadási műveletek induló környezetének létrehozása
    InitialContext registry = new InitialContext();
    // Hozzon létre DB2ClientRerouteServerList objektumot
    DB2ClientRerouteServerList address=new DB2ClientRerouteServerList();
    
    // Adja meg az elsődleges kiszolgálóhoz tartozó portszámot és kiszolgálónevet
    address.setPrimaryPortNumber(50000);
    address.setPrimaryServerName("mvs1.sj.ibm.com");
    
    // A másodlagos kiszolgáló nevének és a portszámnak a beállítása
    int[] port = {50002};
    String[] server = {"mvs3.sj.ibm.com"};
    address.setAlternatePortNumber(port);
    address.setAlternateServerName(server);
        
    registry.rebind("serverList", address);
    
  2. Rendelje a DB2ClientRerouteServerList objektum JNDI nevét a clientRerouteServerListJNDIName nevű DataSource tulajdonsághoz. Például:
    datasource.setClientRerouteServerListJNDIName("serverList");

A DB2 Universal JDBC vezérlőkonfigurációs tulajdonságok testreszabása

A DB2 Universal JDBC vezérlőkonfigurációs tulajdonságai lehetővé teszik a teljes vezérlőre vonatkozó tulajdonságértékek megadását. Ezek a beállítások több alkalmazásra és adatforráspéldányra érvényesek. A beállítások módosíthatók az alkalmazás forráskódjának vagy az adatforrás jellemzőinek megváltoztatása nélkül.

Minden egyes DB2 Universal JDBC vezérlőkonfigurációs tulajdonság beállítása a következő formátumú:

tulajdonság=érték

Ha a konfigurációs tulajdonság így kezdődik: db2.jcc.override, akkor a tulajdonság minden kapcsolatra érvényes, és felülbírál minden olyan Kapcsolat és Adatforrás tulajdonságot, amelynek vele azonos a neve. Ha a konfigurációs tulajdonság így kezdődik: db2.jcc or db2.jcc.default, a tulajdonság értéke az alapérték. A Kapcsolat vagy Adatforrás tulajdonságok felülbírálják ezt az alapértéket.

Eljárás

A konfigurációs tulajdonságok beállítása:

Megadhatja a következő DB2 Universal JDBC vezérlőkonfigurációs tulajdonságokat. Minden tulajdonság választható (azaz nem kötelező).

db2.jcc.override.traceFile
Engedélyezi a DB2 Universal JDBC vezérlő nyomkövetését a Java vezérlő esetében, valamint megadja a nyomkövetési fájlok nevének alapjául szolgáló nevet.

Adjon meg egy teljesen meghatározott fájlnevet a db2.jcc.override.traceFile tulajdonság értékének.

A db2.jcc.override.traceFile tulajdonság felülbírálja a Kapcsolat vagy Adatforrás objektum traceFile tulajdonságát.

Ha például az alábbi értéket adja a db2.jcc.override.traceFile tulajdonságnak, akkor ezzel engedélyezi a DB2 Universal JDBC vezérlő Java kód nyomkövetését a /SYSTEM/tmp/jdbctrace nevű fájlba:

db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace

A nyomkövetési beállításokat az IBM szoftvertámogatás útmutatása alapján végezze.

db2.jcc.sqljUncustomizedWarningOrException
Megadja, hogy a DB2 Universal JDBC vezérlő milyen műveletet hajtson végre, ha nem testre szabott SQLJ alkalmazás fut. A db2.jcc.sqljUncustomizedWarningOrException az alábbi értékeket kaphatja:
0
A DB2 Universal JDBC vezérlő nem hoz létre Figyelmeztetést vagy Kivételt nem testre szabott SQLJ alkalmazás futtatása esetén. Ez az alapérték.
1
A DB2 Universal JDBC vezérlő Figyelmeztetést hoz létre, ha nem testre szabott SQLJ alkalmazás futását érzékeli.
2
A DB2 Universal JDBC vezérlő Kivételt küld, a nem testre szabott SQLJ alkalmazás futását érzékeli.

A db2secFreeToken függvény eltávolításra került

A The db2secFreeToken függvény (A jelsor által tartott szabad memória) már nem része a db2secGssapiServerAuthFunctions_1 felhasználói hitelesítési bővítő API-nak.

Telepítse az egyéni biztonsági bővítőket körültekintően

A DB2 Universal Database (UDB) telepítésének integritása sérülhet, ha a biztonsági bővítések telepítése nem megfelelő kódolás, áttekintés és/vagy tesztelés mellett zajlik. A DB2 UDB esetében elővigyázatossági lépések történtek a legtöbb szokványos hibatípus elkerülése érdekében, de ez nem szavatolhatja a teljeskörű integritást a felhasználó által írt biztonsági bővítők telepítése esetén.

Biztonsági bővítők

Ha a saját, testre szabott biztonsági bővítőjét használja, maximum 255 karakterből álló felhasználói azonosítót használhat a CLP-n vagy egy dinamikus SQL utasításon keresztül kiadott kapcsolódási utasításban.

Biztonsági bővítő API-k

A db2secGetGroupsForUser, db2secValidatePassword és db2secGetAuthIDs API-k esetén a dbname bementi paraméter null is lehet, és a hozzá tartozó dbnamelen hossz bemeneti paraméter nulla értékre lesz állítva.

Biztonsági bővítőkre vonatkozó névadási szabályok (Linux és UNIX)

A .so a jelenlegi verzióban már elfogadott fájlnév-kiterjesztés a felhasználó által írt biztonsági bővítők könyvtáraiban, minden Linux és UNIX platformon.

AIX rendszeren a biztonsági bővítők könyvtárainak kiterjesztése .a vagy .so lehet. Ha a bővítőkönyvtár mindkét változata létezik, az .a kiterjesztésű változat kerül felhasználásra.

PA-RISC platformon futó HP-UX rendszeren a biztonsági bővítők könyvtárainak kiterjesztése .sl vagy .so lehet. Ha a bővítőkönyvtár mindkét változata létezik, az .sl kiterjesztésű változat kerül felhasználásra.

Minden más Linux és UNIX platformon a .so az egyetlen támogatott fájlnév-kiterjesztés a biztonsági bővítők könyvtárai esetében.

Biztonsági bővítők könyvtáraira vonatkozó korlátozások

AIX rendszeren a biztonsági bővítők könyvtárai .a vagy .so fájlnév-kiterjesztéssel rendelkezhetnek. A bővítőkönyvtár betöltésére használt eljárás az adott kiterjesztéstől függ:

Az .a kiterjesztésű bővítőkönyvtárak
Az .a kiterjesztésű bővítőkönyvtárak olyan archívumok, amelyek megosztott objektumtagokat tartalmaznak. Ezen tagok kötelező neve shr.o (32 bit) vagy shr64.o (64 bit). Egy archívum tartalmazhat 32 bites és 64 bites tagokat is, így mindkét platformtípuson alkalmazható.

Például egy 32 bites archív stílus bővítőkönyvtár létrehozása:

  xlc_r
-qmkshrobj -o shr.o bővítő.c -bE:bővítő.exp
  ar rv bővítő.a shr.o
Az .so kiterjesztésű bővítőkönyvtárak
Az .so kiterjesztésű bővítőkönyvtárak dinamikusan betölthető megosztott objektumok. Egy ilyen objektum vagy 32 bites, vagy 64 bites; a létrehozásakor használt fordítási és összerendelési beállításoktól függően. Például egy 32 bites bővítőkönyvtár létrehozása:
  xlc_r -qmkshrobj -o bővítő.so bővítő.c -bE:bővítő.exp

Az AIX platformtól különböző bármilyen rendszer a biztonsági bővítők könyvtárait mindig dinamikusan betölthető megosztott objektumnak feltételezi.

| | |

GSS-API bedolgozó támogatás DB2 Universal JDBC |illesztőprogramhoz

|

A DB2 UDB 8.2 for Linux, UNIX, Windows kiadásával bedolgozók |(betölthető könyvtárak) formájában létrehozhatja a saját hitelesítési |mechanizmusait. A DB2 UDB alrendszer betölti és eléri ezeket a |bedolgozókat a felhasználói hitelesítés elvégzéséhez. A Java nyelven írt |ügyfél alkalmazások támogatásához a DB2 Universal JDBC illesztőprogram |biztonsági bedolgozó támogatást nyújt a 4-es javítócsomaggal ellátott DB2 |UDB 8.2-es változatához.

|

A bedolgozók hitelesítését a DB2 Universal JDBC illesztőprogrammal |végző Java alkalmazásoknál a saját bedolgozók megvalósításához a |felhasználóknak ki kell terjeszteniük a com.ibm.db2.jcc.DB2JCCPlugin |absztrakt osztályt, valamint be kell állítaniuk a következő |tulajdonságokat:

| |

Példa:

|
   java.util.Properties properties = new java.util.Properties();
|   properties.put("user", "db2admin");
|   properties.put("password", "admindb2");
|   properties.put("pluginName", "gssapi_simple");
|   properties.put("securityMechanism",
|   new String(""+com.ibm.db2.jcc.DB2BaseDataSource.PLUGIN_SECURITY+""));
|   properties.put("plugin", new JCCSimpleGSSPlugin());
|   Connection con = java.sql.DriverManager.getConnection(url, properties);

A GSS-API biztonsági bővítők nem támogatják a többfolyamatos hitelesítést

A GSS-API hitelesítésre vonatkozó korlátozás egyetlen jelsor továbbítását teszi lehetővé az ügyféltől a kiszolgálóra, és egy jelsort a kiszolgálóról az ügyfélre. Ezeket a jelsorokat a rendszer a gss_init_sec_context() szövegéből olvassa be az ügyfélen, illetve a gss_accept_sec_context() szövegéből a kiszolgálón. A további adatfolyamok küldésére kísérletet tevő GSS-API bővítők váratlan biztonsági bővítő hibát okoznak, mely meghiúsítja a kapcsolódást.

A GSS-API biztonsági bővítők nem támogatják az üzenettitkosítást és az aláírást

Az üzenetek titkosítása és az aláírás nem érhető el a GSS-API biztonsági bővítőkben.

Tranzakciók közvetett befejezése önálló alkalmazásokban

Minden alkalmazásleállás (szabályos vagy rendellenes) közvetve visszagörgeti az összes aktív vagy függőben munkaegységet, az operációs rendszertől függetlenül.

Elosztott tranzakciók támogatása

A 8.2-es verziójú DB2 Universal Database (UDB) dokumentációjának Újdonságok részében, a DB2 Universal JDBC vezérlő továbbfejlesztései szakasz Elosztott tranzakciók támogatásának adatai fejezetében téves információk szerepelnek. A szakasz utolsó mondata hibás. A helyes információ:

A 8.2-es verzióban a DB2 UDB támogatja az elosztott tranzakciókezelést, mely megfelel az XA specifikációknak. Ez a támogatás teljesíti a Java 2 Platform Enterprise Edition (J2EE), a Java Transaction Service (JTS) és a Java Transaction API (JTA) specifikációkban foglaltakat.

[ Oldal eleje |Előző oldal | Következő oldal | Tartalom ]