Vývoj aplikací: Programování klientských aplikací

| | |

Připojitelnost ovladače DB2 Universal JDBC typu 4 k produktu DB2 for VM/VSE není podporována

|

Pro ovladač DB2 Universal JDBC není podporována připojitelnost typu 4 s databázemi DB2 |for VM/VSE. V tématech "Setting up the Windows Java environment" (Konfigurace prostředí Java v systému Windows) a "Installing the DB2 Universal JDBC Driver" (Instalace ovladače DB2 Universal JDBC) v příručce Development Guide: Programming Client Applications a v Informačním centru DB2 UDB je nesprávně uvedeno, že ovladač DB2 Universal JDBC podporuje připojitelnost typu 4 s databázemi DB2 for VM/VSE.

Koncentrátor připojení ovladače JDBC produktu DB2 Universal a vyvažování zátěže komplexu subsystémů

Aplikace Java, které používají ovladač Připojitelnost ovladače DB2 Universal JDBC Type 4 pro přístup k produktu DB2 UDB pro servery z/OS(R) mohou využívat výhod funkcí koncentrátoru připojení a vyvažování zátěže komplexu subsystémů.

Tyto funkce jsou podobné funkcím koncentrátoru připojení a vyvažování zátěže komplexu subsystémů produktu DB2 Connect.

Koncentrátor připojení Ovladač DB2 Universal JDBC může omezit prostředky, které databázové servery DB2 UDB for z/OS(R) vyžadují pro podporu velkého počtu klientských aplikací tím, že množství objektů připojení může využívat stejné fyzické připojení, což snižuje celkový počet fyzických připojení k databázovému serveru.

Vyvažování zátěže komplexu subsystémů Ovladač DB2 Universal JDBC umožňuje zlepšit dostupnost skupiny sdílení dat, protože ovladač získává časté informace o stavu členů skupiny sdílení dat. Ovladač pomocí těchto informací určí člena sdílení dat, ke kterému má být směrována následující transakce. Server DB2 UDB for z/OS a správce WLM pro systém z/OS pomocí vyvažování zátěže komplexu subsystémů zajišťují, aby byla zátěž efektivně rozdělována mezi členy skupiny sdílení dat a přenesena na jiného člena této skupiny, pokud dojde k selhání jednoho člena skupiny.

Ovladač Ovladač DB2 Universal JDBC podporuje koncentrátor připojení a vyvažování zátěže komplexu subsystémů pomocí transportních objektů a globálního fondu transportních objektů. Pro každé fyzické připojení k databázovému serveru existuje jeden transportní objekt. Při povolení koncentrátoru připojení a vyvažování zátěže komplexu subsystémů určíte nastavením maximálního počtu transportních objektů maximální počet fyzických připojení k databázovému serveru v libovolném časovém okamžiku.

Na úrovni ovladače nastavíte omezení transportních objektů pomocí vlastností konfigurace Ovladač DB2 Universal JDBC.

Na úrovni připojení povolíte nebo zakážete koncentrátor připojení a vyvažování zátěže komplexu subsystémů Ovladač DB2 Universal JDBC a nastavíte omezení počtu transportních objektů pomocí vlastností zdroje dat.

Globální fond transportních objektů lze monitorovat některým z následujících způsobů:

Vlastnosti konfigurace Ovladač DB2 Universal JDBC pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů

Pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů se používají následující vlastnosti konfigurace:

db2.jcc.dumpPool
Určuje typ statistiky, která je kromě souhrnné statistiky zapsána pro události globálního fondu transportu. Globální fond transportu se používá pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů.

Datový typ vlastnosti db2.jcc.dumpPool je celé číslo. Před zápisem statistiky musí být nastaveny vlastnosti konfigurace db2.jcc.dumpPoolStatisticsOnSchedule a db2.jcc.dumpPoolStatisticsOnScheduleFile.

Společně s vlastností db2.jcc.dumpPool můžete zadat jeden nebo několik následujících typů statistiky:

Chcete-li trasovat více než jeden typ události, přidejte hodnoty pro typy událostí, které chcete trasovat. Předpokládejme, že chcete trasovat například události DUMP_GET_OBJECT a DUMP_CREATE_OBJECT. Číselné ekvivalenty těchto hodnot jsou 2 a 16, proto jako hodnotu db2.jcc.dumpPool zadáte číslo 18.

Výchozí hodnota je 0, což znamená, že pro globální fond transportu je zapsána pouze souhrnná statistika.

db2.jcc.dumpPoolStatisticsOnSchedule
Určuje, jak často (v sekundách) je statistika globálního fondu transportu zapisována do souboru určeného vlastností konfigurace db2.jcc.dumpPoolStatisticsOnScheduleFile. Globální fond transportu se používá pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů.

Výchozí hodnota je 1, při které není statistika globálního fondu transportu zapisována.

db2.jcc.dumpPoolStatisticsOnScheduleFile
Určuje název souboru, do kterého je zapisována statistika globálního fondu transportu. Globální fond transportu se používá pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů.

Pokud není vlastnost konfigurace db2.jcc.dumpPoolStatisticsOnScheduleFile zadána, není statistika globálního fondu transportu zapisována.

db2.jcc.maxTransportObjectIdleTime
Určuje dobu v sekundách, po kterou zůstane nepoužitý transportní objekt v globálním fondu transportních objektů, než bude z fondu odstraněn. Transportní objekty se používají pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů.

Výchozí hodnota vlastnosti konfigurace db2.jcc.maxTransportObjectIdleTime je 60. Při nastavení vlastnosti db2.jcc.maxTransportObjectIdleTime na hodnotu menší než 0 budou nepoužité transportní objekty odstraněny z fondu okamžitě. Tato akce není doporučena, protože může způsobit výrazné snížení výkonu.

db2.jcc.maxTransportObjectWaitTime
Určuje dobu v sekundách, po kterou aplikace čeká na transportní objekt, pokud bylo dosaženo hodnoty db2.jcc.maxTransportObjects. Transportní objekty se používají pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů. Pokud aplikace čeká delší dobu než určuje hodnota db2.jcc.maxTransportObjectWaitTime, předá globální fond transportních objektů výjimku SQL.

Výchozí hodnota vlastnosti konfigurace db2.jcc.maxTransportObjectWaitTime je -1. Při jakékoli záporné hodnotě čekají aplikace neomezeně dlouho.

db2.jcc.maxTransportObjects
Určuje horní mezní hodnotu počtu transportních objektů v globálním fondu transportních objektů pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů. Pokud počet transportních objektů ve fondu dosáhne hodnoty db2.jcc.maxTransportObjects, jsou transportní objekty, které nebyly použity po dobu delší než je hodnota db2.jcc.maxTransportObjectIdleTime, odstraněny z fondu.

Výchozí hodnota pro vlastnost konfigurace db2.jcc.maxTransportObjects je -1, při které není počet transportních objektů v globálním fondu transportů omezen.

db2.jcc.minTransportObjects
Určuje dolní mezní hodnotu počtu transportních objektů v globálním fondu transportních objektů pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů. Při vytvoření prostředí JVM nejsou ve fondu žádné transportní objekty. Transportní objekty se do fondu přidávají podle potřeby. Po dosažení hodnoty db2.jcc.minTransportObjects neklesne po dobu života prostředí JVM počet transportních objektů v globálním fondu transportních objektů nikdy pod hodnotu db2.jcc.minTransportObjects.

Výchozí hodnota vlastnosti konfigurace db2.jcc.minTransportObjects je 0. Jakákoli hodnota menší nebo rovna 0 znamená, že se globální fond transportních objektů může vyprázdnit.

Vlastnosti zdroje dat Ovladač DB2 Universal JDBC pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů

Pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů se používají následující vlastnosti zdroje dat Ovladač DB2 Universal JDBC:

enableConnectionConcentrator
Označuje, zda je povolena funkce koncentrátoru připojení Ovladač DB2 Universal JDBC. Funkce koncentrátoru připojení je k dispozici pouze pro připojení k serverům DB2 UDB for z/OS.

Datový typ vlastnosti enableConnectionConcentrator je booleovský. Výchozí hodnota je false. Pokud je však vlastnost enableSysplexWLB nastavena na hodnotu true, je výchozí hodnota true.

enableSysplexWLB
Označuje, zda je povolena funkce vyvažování zátěže komplexu subsystémů Ovladač DB2 Universal JDBC. Funkce vyvažování zátěže komplexu subsystémů je k dispozici pouze pro připojení k serverům DB2 UDB for z/OS.

Datový typ vlastnosti enableSysplexWLB je booleovský. Výchozí hodnota je false. Pokud je však vlastnost enableSysplexWLB nastavena na hodnotu true, je ve výchozím nastavení vlastnost enableConnectionConcentrator nastavena na hodnotu true.

maxTransportObjects
Určuje maximální počet transportních objektů, které lze použít pro všechna připojení s přidruženým objektem zdroje dat. Transportní objekty se používají pro koncentrátor připojení a vyvažování zátěže komplexu subsystémů. Hodnota maxTransportObjects je ignorována, pokud nejsou koncentrátor připojení nebo vyvažování zátěže komplexu subsystémů povoleny nastavením vlastností enableConnectionConcentrator nebo enableSysplexWLB.

Datový typ této vlastnosti je celé číslo.

Pokud nebylo dosaženo hodnoty maxTransportObjects a v globálním fondu transportních objektů není k dispozici žádný transportní objekt, vytvoří fond nový transportní objekt. Pokud bylo dosaženo hodnoty maxTransportObjects, čeká aplikace po dobu určenou vlastností konfigurace db2.jcc.maxTransportObjectWaitTime. Pokud po uplynutí této doby není ve fondu stále k dispozici žádný transportní objekt, předá fond výjimku SQL.

Vlastnost maxTransportObjects nepřepisuje vlastnost konfigurace db2.jcc.maxTransportObjects. Vlastnost maxTransportObjects nemá žádný vliv na připojení z jiných objektů zdroje dat. Pokud je hodnota maxTransportObjects větší než hodnota db2.jcc.maxTransportObjects, vlastnost maxTransportObjects nezvýší hodnotu db2.jcc.maxTransportObjects.

Výchozí hodnota vlastnosti maxTransportObjects je -1, při které je počet transportních objektů pro zdroj dat omezen pouze hodnotou vlastnosti db2.jcc.maxTransportObjects pro ovladač.

Příklad povolení funkcí koncentrátoru připojení a vyvažování zátěže komplexu subsystémů Ovladač DB2 Universal JDBC v produktu WebSphere Application Server

V následujícím postupu je uveden příklad povolení funkcí koncentrátoru připojení a vyvažování zátěže komplexu subsystémů Ovladač DB2 Universal JDBC u produktu WebSphere(R) Application Server.

Předpoklady

Požadavky na server:

Požadavky na klienta:

Postup

Při povolení funkcí koncentrátoru připojení a vyvažování zátěže komplexu subsystémů Ovladač DB2 Universal JDBC u produktu WebSphere Application Server postupujte takto:

  1. Zadáním následujícího příkazu v příkazovém procesoru systému z/OS nebo v systémových službách systému UNIX(R) ověřte, zda máte k dispozici správnou verzi ovladače Ovladač DB2 Universal JDBC pro podporu funkcí koncentrátoru připojení a vyvažování zátěže komplexu subsystémů:
    java com.ibm.db2.jcc.DB2Jcc -version
    Ve výstupu vyhledejte řádek podobný následujícímu:
    [ibm][db2][jcc] Driver: IBM DB2 JDBC Universal Driver Architecture n n
    n by měla být verze 2.7 nebo vyšší.
  2. Nastavením vlastností konfigurace ovladače Ovladač DB2 Universal JDBC povolte koncentrátor připojení a vyvažování zátěže komplexu subsystémů pro všechny instance zdroje dat, které jsou vytvořeny v rámci tohoto ovladače.

    Nastavte následující vlastnosti v souboru DB2JccConfiguration.properties.

    1. Vytvořte nový soubor DB2JccConfiguration.properties nebo upravte stávající soubor DB2JccConfiguration.properties.
    2. Nastavte následující vlastnosti konfigurace:
      • db2.jcc.minTransportObjects
      • db2.jcc.maxTransportObjects
      • db2.jcc.maxTransportObjectWaitTime
      • db2.jcc.dumpPool
      • db2.jcc.dumpPoolStatisticsOnScheduleFile
      Začněte s následujícím nastavením:
      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. Do cesty ke třídám ovladače Ovladač DB2 Universal JDBC produktu WebSphere Application Server přidejte cestu k adresáři se souborem DB2JccConfiguration.properties.
  3. Nastavením vlastností zdroje dat Ovladač DB2 Universal JDBC povolte funkce koncentrátoru připojení nebo vyvažování zátěže komplexu subsystémů.

    V administrační konzole produktu WebSphere Application Server nastavte následující vlastnosti pro zdroj dat, který aplikace používají pro připojení k databázovému serveru:

    • enableSysplexWLB
    • enableConnectionConcentrator
    • maxTransportObjects
    Předpokládejme, že požadujete funkce koncentrátoru připojení i vyvažování zátěže komplexu subsystémů. Začněte s následujícím nastavením:
    Tabulka 26. Příklad nastavení vlastností zdroje dat pro funkce koncentrátoru připojení a vyvažování zátěže komplexu subsystémů pro Ovladač DB2 Universal JDBC
    Vlastnost Nastavení
    enableSysplexWLB true1
    maxTransportObjects 100
    Poznámky:
    1. Vlastnost enableConnectionConcentrator je ve výchozím nastavení nastavena na hodnotu true, protože vlastnost enableSysplexWLB je nastavena na hodnotu true.
  4. Restartujte produkt WebSphere Application Server.

Metody monitorování funkcí koncentrátoru připojení a vyvažování zátěže komplexu subsystémů Ovladač DB2 Universal JDBC

Chcete-li monitorovat funkce koncentrátoru připojení a vyvažování zátěže komplexu subsystémů Ovladač DB2 Universal JDBC, je nutné monitorovat globální fond transportních objektů. Globální fond transportních objektů lze monitorovat některým z následujících způsobů:

Vlastnosti konfigurace pro monitorování globálního fondu transportních objektů

Trasování globálního fondu transportních objektů lze řídit pomocí vlastností konfigurace db2.jcc.dumpPool, db2.jcc.dumpPoolStatisticsOnSchedule a db2.jcc.dumpPoolStatisticsOnScheduleFile.

Při nastavení následující sady vlastností konfigurace budou například chybové zprávy komplexu subsystémů a fondu výpisu paměti zapisovány každých 60 sekund do souboru s názvem /home/WAS/logs/srv1/poolstats:

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

Položka v souboru statistiky fondu může vypadat takto:

čas Naplánováno - PoolStatistics npr:2575 nsr:2575 lwroc:439 
hwroc:1764 coc:372 aooc:362 rmoc:362 nbr:2872 tbt:857520 tpo:10

Význam jednotlivých polí je následující:

npr
Celkový počet požadavků, které ovladač Ovladač DB2 Universal JDBC odeslal do fondu od vytvoření fondu.
nsr
Počet úspěšných požadavků, které ovladač Ovladač DB2 Universal JDBC odeslal do fondu od vytvoření fondu. Úspěšný požadavek znamená, že fond vrátil objekt.
lwroc
Počet objektů, které byly opětovně použity, ale nebyly ve fondu. K tomu může dojít, pokud objekt připojení uvolní transportní objekt na rozhraní transakce. Pokud objekt připojení potřebuje transportní objekt později, přičemž původní transportní objekt nebyl použit žádným jiným objektem připojení, může objekt připojení použít tento transportní objekt.
hwroc
Počet objektů, které byly opětovně použity z fondu.
coc
Počet objektů, které ovladač Ovladač DB2 Universal JDBC vytvořil od vytvoření fondu.
aooc
Počet objektů, jejichž doba nečinnosti přesáhla hodnotu určenou vlastností konfigurace db2.jcc.maxTransportObjectIdleTime, a byly proto odstraněny z fondu.
rmoc
Počet objektů, které byly z fondu odstraněny od vytvoření fondu.
nbr
Počet požadavků, které ovladač Ovladač DB2 Universal JDBC odeslal do fondu, jež byly fondem zablokovány, protože fond dosáhl své maximální kapacity. Blokovaný požadavek může být úspěšný, pokud je do fondu vrácen objekt dříve, než je překročena konfigurační hodnota db2.jcc.maxTransportObjectWaitTime a předána výjimka.
tbt
Celková doba v milisekundách pro požadavky blokované fondem. Pokud aplikace používá několik podprocesů, může být tato doba mnohem delší než uplynulá doba provedení aplikace.
tpo
Počet objektů, které jsou aktuálně ve fondu.
Rozhraní API pro monitorování globálního fondu transportních objektů

Můžete vytvořit aplikace, které shromažďují statistiku globálního fondu transportních objektů. Tyto aplikace vytvářejí objekty ve třídě DB2PoolMonitor a vyvolávají metody pro načítání informací o fondu.

Následující kód například vytvoří objekt pro monitorování globálního fondu transportních objektů:

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

Po vytvoření objektu DB2PoolMonitor můžete globální fond transportních objektů monitorovat pomocí následujících metod.

getMonitorVersion
Formát:
public int getMonitorVersion()

Načte verzi třídy DB2PoolMonitor, která je dodána s ovladačem Ovladač DB2 Universal JDBC.

totalRequestsToPool
Formát:
public int totalRequestsToPool()

Načte celkový počet požadavků, které ovladač Ovladač DB2 Universal JDBC odeslal do fondu od vytvoření fondu.

successfullRequestsFromPool
Formát:
public int successfullRequestsFromPool()

Načte počet úspěšných požadavků, které ovladač Ovladač DB2 Universal JDBC odeslal do fondu od vytvoření fondu. Úspěšný požadavek znamená, že fond vrátil objekt.

numberOfRequestsBlocked
Formát:
public int numberOfRequestsBlocked()

Načte počet požadavků, které ovladač Ovladač DB2 Universal JDBC odeslal do fondu, jež byly fondem zablokovány, protože fond dosáhl své maximální kapacity. Blokovaný požadavek může být úspěšný, pokud je do fondu vrácen objekt dříve, než je překročena konfigurační hodnota db2.jcc.maxTransportObjectWaitTime a předána výjimka.

totalTimeBlocked
Formát:
public long totalTimeBlocked()

Načte celkovou dobu v milisekundách pro požadavky blokované fondem. Pokud aplikace používá několik podprocesů, může být tato doba mnohem delší než uplynulá doba provedení aplikace.

lightWeightReusedObjectCount
Formát:
public int lightWeightReusedObjectCount()

Načte počet objektů, které byly opětovně použity, ale nebyly ve fondu. K tomu může dojít, pokud objekt připojení uvolní transportní objekt na rozhraní transakce. Pokud objekt připojení potřebuje transportní objekt později, přičemž původní transportní objekt nebyl použit žádným jiným objektem připojení, může objekt připojení použít tento transportní objekt.

heavyWeightReusedObjectCount
Formát:
public int heavyWeightReusedObjectCount()

Načte počet objektů, které byly opětovně použity z fondu.

createdObjectCount
Formát:
public int createdObjectCount()

Načte počet objektů, které ovladač Ovladač DB2 Universal JDBC vytvořil od vytvoření fondu.

agedOutObjectCount
Formát:
public int agedOutObjectCount()

Načte počet objektů, jejichž doba nečinnosti přesáhla hodnotu určenou vlastností konfigurace db2.jcc.maxTransportObjectIdleTime, a byly proto odstraněny z fondu.

removedObjectCount
Formát:
public int removedObjectCount()

Načte počet objektů, které byly z fondu odstraněny od vytvoření fondu.

totalPoolObjects
Formát:
public int totalPoolObjects()

Počet objektů, které jsou aktuálně ve fondu.

Klíčové slovo OleDbReportIsLongForLongTypes konfigurace rozhraní CLI/ODBC

Klíčové slovo OleDbReportIsLongForLongTypes je podporováno následujícími databázovými servery:

Popis klíčového slova:
Vytváří datové typy LONG s příznakem OLE DB s parametrem DBCOLUMNFLAGS_ISLONG.
Syntaxe v souboru db2cli.ini:
OleDbReportIsLongForLongTypes = 0 | 1
Odpovídající atribut příkazu:
SQL_ATTR_REPORT_ISLONG_FOR_LONGTYPES_OLEDB
Výchozí nastavení:
Typy LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC a LONG VARGRAPHIC FOR BIT DATA) neobsahují sadu příznaků DBCOLUMNFLAGS_ISLONG, což může způsobit, že budou sloupce použity v klauzuli WHERE.
Poznámky k použití:
 

Stroj kurzoru klienta OLE DB a modul CommandBuilder Poskytovatele dat OLE DB .NET vygenerují aktualizaci a odstraní příkazy založené na informacích sloupce dodané Poskytovatelem rozhraní IBM DB2 OLE DB. Pokud generovaný příkaz obsahuje typ LONG v klauzuli WHERE, dojde k selhání příkazu, protože typy LONG nelze použít ve vyhledávání s operátorem rovnosti. Nastavení klíčového slova OleDbReportIsLongForLongTypes na hodnotu 1 způsobí, že Poskytovatel rozhraní IBM DB2 OLE DB opatří typy LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC a LONG VARGRAPHIC FOR BIT DATA) sadou příznaků DBCOLUMNFLAGS_ISLONG. Tím budou slupce typu LONG chráněny před použitím v klauzuli WHERE.

Klíčové slovo OleDbSQLColumnsSortByOrdinal konfigurace rozhraní CLI/ODBC

Klíčové slovo OleDbSQLColumnsSortByOrdinal je podporováno následujícími databázovými servery:

Popis klíčového slova:
Zajistí, aby příkaz produktu OLE DB IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) vrátil sadu řádků seřazenou podle sloupce ORDINAL_POSITION.
Syntaxe v souboru db2cli.ini:
OleDbSQLColumnsSortByOrdinal = 0 | 1
Odpovídající atribut příkazu:
SQL_ATTR_SQLCOLUMNS_SORT_BY_ORDINAL_OLEDB
Výchozí nastavení:
IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) vrátí sadu řádků seřazenou podle sloupců TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME.
Poznámky k použití:
 

Specifikace produktu Microsoft OLE DB vyžaduje, aby příkaz IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) vracel sadu řádků seřazenou podle sloupců TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Poskytovatel rozhraní IBM DB2 OLE DB je této specifikaci přizpůsoben. Aplikace používající modul Microsoft ODBC Bridge provider (MSDASQL) byly ovšem typicky kódovány tak, aby přijímaly sadu řádků seřazenou podle položky ORDINAL_POSITION. Nastavením klíčového slova OleDbSQLColumnsSortByOrdinal na hodnotu 1 zajistí, aby poskytovatel vracel sadu řádků seřazenou podle položky ORDINAL_POSITION.

Skupina vlastností zdroje dat DB2 pro Poskytovatele rozhraní IBM DB2 OLE DB

Poskytovatel rozhraní IBM DB2 OLE DB byl rozšířen o novou skupinu vlastností: Zdroj dat DB2. Sada vlastností pro Zdroj dat DB2 je DBPROPSET_DB2DATASOURCE.

Položka GUID pro sadu vlastností má hodnotu {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}

Sada DBPROPSET_DB2DATASOURCE obsahuje tři vlastnosti:

DB2PROP_REPORTISLONGFORLONGTYPES

#define DB2PROP_REPORTISLONGFORLONGTYPES 4
Property group: DB2 Data Source 
Property set: DB2PROPSET_DATASOURCE
Type: VT_BOOL
Typical R/W: R/W
Description: Report IsLong for Long Types

Stroj kurzoru klienta OLE DB a modul CommandBuilder Poskytovatele dat OLE DB .NET vygenerují aktualizaci a odstraní příkazy založené na informacích sloupce dodané Poskytovatelem rozhraní IBM DB2 OLE DB. Pokud generovaný příkaz obsahuje typ LONG v klauzuli WHERE, dojde k selhání příkazu, protože typy LONG nelze použít ve vyhledávání s operátorem rovnosti.

Tabulka 27. Hodnoty DB2PROP_REPORTISLONGFORLONGTYPES
Hodnoty Význam
VARIANT_TRUE Způsobí, že Poskytovatel rozhraní IBM DB2 OLE DB opatří typy LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC a LONG VARGRAPHIC FOR BIT DATA) sadou příznaků DBCOLUMNFLAGS_ISLONG. Tím budou slupce typu LONG chráněny před použitím v klauzuli WHERE.
VARIANT_FALSE Parametr DBCOLUMNFLAGS_ISLONG není nastaven pro typy LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC a LONG VARGRAPHIC FOR BIT DATA. Toto nastavení je výchozí.
DB2PROP_RETURNCHARASWCHAR

#define DB2PROP_RETURNCHARASWCHAR 2
Property group: DB2 Data Source 
Property set: DB2PROPSET_DATASOURCE
Type: VT_BOOL
Typical R/W: R/W
Description: Return Char as WChar

Tabulka 28. Hodnoty DB2PROP_RETURNCHARASWCHAR
Hodnoty Význam
VARIANT_TRUE Modul OLE DB popisuje sloupce typu CHAR, VARCHAR, LONG VARCHAR, nebo CLOB jako DBTYPE_WSTR. Kódová stránka dat obsažená v položce ISequentialStream bude mít hodnotu UCS-2. Toto nastavení je výchozí.
VARIANT_FALSE Modul OLE DB popisuje sloupce typu CHAR, VARCHAR, LONG VARCHAR, nebo CLOB jako DBTYPE_STR. Kódová stránka dat obsažená v položce ISequentialStream bude lokální kódovou stránkou klienta.
DB2PROP_SORTBYORDINAL

#define DB2PROP_SORTBYORDINAL 3
Property group: DB2 Data Source 
Property set: DB2PROPSET_DATASOURCE
Type: VT_BOOL
Typical R/W: R/W
Description: Sort By Ordinal

Specifikace produktu Microsoft OLE DB vyžaduje, aby příkaz IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) vracel sadu řádků seřazenou podle sloupců TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Poskytovatel rozhraní IBM DB2 OLE DB je této specifikaci přizpůsoben. Aplikace používající modul Microsoft ODBC Bridge provider (MSDASQL) byly ovšem typicky kódovány tak, aby přijímaly sadu řádků seřazenou podle položky ORDINAL_POSITION.

Tabulka 29. Hodnoty DB2PROP_SORTBYORDINAL
Hodnoty Význam
VARIANT_TRUE Zajistí, aby poskytovatel vracel sadu řádků seřazenou podle položky ORDINAL_POSITION.
VARIANT_FALSE Zajistí, aby poskytovatel vracel sadu řádků seřazenou podle položek TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Toto nastavení je výchozí.

Nesprávná syntaxe adresy URL v diagramu syntaxe DB2Binder

V tématu "Instalace ovladače DB2 Universal JDBC" diagram syntaxe DB2Binder nesprávně definuje syntaxi URL pro ovladače DB2 Universal JDBC. Správná reprezentace syntaxe URL pro diagram DB2Binder je uvedena v následujícím diagramu:

Syntaxe DB2Binder
Číst syntaktický diagramVynechat zobrazení syntaktického diagramu>>-java--com.ibm.db2.jcc.DB2Binder------------------------------>
 
>---url jdbc:db2://server-+---------+-/databáze----------------->
                          '-:--port-'
 
>---user jméno-uživatele---password heslo----------------------->
 
>--+------------------+--+---------------------------+---------->
   '--size celé-číslo-'  '--collection jméno-kolekce-'
 
>--+----------------------------------+--+-------+-------------><
   |              .-,---------------. |  '--help-'
   |              V                 | |
   '--tracelevel ---volba-trasování-+-'
 

Přesměrování klientů ovladače DB2 Universal JDBC

Funkce automatické přesměrování klientů v produktu DB2 Universal Database (UDB) pro systémy Linux, UNIX, a Windows umožňuje klientským aplikacím zotavit se z přerušení komunikace se serverem. Aplikace proto mohou pokračovat v práci s minimálním přerušením.

Kdykoli se server uzamkne, obdrží každý klient připojený k tomuto serveru chybu komunikace, která ukončí připojení a vyústí v chybu aplikace. V případech, kdy záleží na dostupnosti, byste měli mít redundantní nastavení nebo podporu překonání selhání. (Překonání selhání je schopnost serveru převzít operace při selhání jiného serveru.) Klient ovladače DB2 Universal JDBC se vždy pokusí znovu navázat připojení k novému serveru nebo k serveru původnímu, který může být spuštěn na uzlu překonání selhání. Po novém navázání připojení obdrží aplikace výjimku SQLException, která informuje o selhání transakce. Aplikace ale může pokračovat další transakcí.

Omezení

Postup

Poté, co administrátor databáze zadá v konkrétní databázi na instanci serveru umístění alternativního serveru, bude umístění primárního a alternativního serveru vráceno v čase připojení zpět klientovi. Ovladač DB2 Universal JDBC vytvoří instanci odkazovatelného objektu DB2ClientRerouteServerList a uloží tuto instanci do své dočasné paměti. Pokud je komunikace přerušena, pokusí se ovladač DB2 Universal JDBC znovu navázat připojení, a to pomocí informací o serveru, které byly ze serveru vráceny.

Vlastnost zdroje dat clientRerouteServerListJNDIName poskytuje na klientovi další podporu přesměrování klienta. Parametr clientRerouteServerListJNDIName má dvě funkce:

Vlastnost clientRerouteServerListJNDIName označuje referenci JNDI do instance DB2ClientRerouteServerList v úložišti JNDI v informacích alternativního serveru. Po úspěšném připojení k primárnímu serveru budou informace alternativního serveru, udávané vlastností clientRerouteServerListJNDIName, přepsány informacemi z tohoto serveru. Je-li definována vlastnost clientRerouteServerListJNDIName, ovladač DB2 Universal JDBC se po překonání selhání pokusí předat aktualizované informace do úložiště JNDI. Pokud je definována vlastnost clientRerouteServerListJNDIName, použijí se pro připojení informace primárního serveru zadané ve vlastnosti DB2ClientRerouteServerList. Není-li primární server určen, použijí se informace o jménu serveru zadané ve zdroji dat.

Položka DB2ClientRerouteServerList je serializovatelný modul Java Bean se čtyřmi vlastnostmi:

Pro přístup k těmto vlastnostem jsou k dispozici metody pro příjem a ukládání. Definice třídy DB2ClientRerouteServerList je následující:

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 (); 
}

Nově navázané připojení po překonání selhání je konfigurováno s původními vlastnostmi zdroje dat, až na jméno serveru a číslo portu. Kromě toho všechny speciální registry DB2 UDB, které byly během původního připojení změněny, budou během připojení prostřednictvím ovladače DB2 Universal JDBC po překonání selhání znovu nastaveny.

Dojde-li k chybě komunikace, pokusí se ovladač DB2 Universal JDBC nejdříve zotavit primární server. Dojde-li k selhání, pokusí se ovladač připojit k alternativnímu umístění (překonání selhání). Po navázání připojení předá ovladač aplikaci výjimku java.sql.SQLException s kódem SQLCODE -4498, která aplikaci upozorní, že došlo k automatickému novému připojení k alternativnímu serveru. Aplikace pak může pokus o transakci zopakovat.

Postup při trvalém nastavení vlastnosti DB2ClientRerouteServerList

Chcete-li nastavit úložný prostor rak, aby nastavil vlastnost DB2ClientRerouteServerList trvale, postupujte takto:

  1. Vytvořte instanci položky DB2ClientRerouteServerList a vytvořte vazbu této instance na registr JNDI. Příklad:
    // Create a starting context for naming operations
    InitialContext registry = new InitialContext();
    // Create a DB2ClientRerouteServerList object
    DB2ClientRerouteServerList address=new DB2ClientRerouteServerList();
    
    // Set the port number and server name for the primary server
    address.setPrimaryPortNumber(50000);
    address.setPrimaryServerName("mvs1.sj.ibm.com");
    
    // Set the port number and server name for the alternate server
    int[] port = {50002};
    String[] server = {"mvs3.sj.ibm.com"};
    address.setAlternatePortNumber(port);
    address.setAlternateServerName(server);
        
    registry.rebind("serverList", address);
    
  2. Přiřaďte jméno JNDI objektu DB2ClientRerouteServerList vlastnosti zdroje dat clientRerouteServerListJNDIName. Příklad:
    datasource.setClientRerouteServerListJNDIName("serverList");

Přizpůsobení vlastností konfigurace ovladače DB2 Universal JDBC

Vlastnosti konfigurace ovladače DB2 Universal JDBC umožňují nastavit hodnoty vlastností týkajících se ovladače. Tato nastavení budou platit pro všechny aplikace a instance DataSource. Nastavení je možné změnit, aniž byste museli měnit zdrojový kód aplikace nebo charakteristiku zdroje dat.

Všechna nastavení vlastností konfigurace ovladače DB2 Universal JDBC mají následující tvar:

vlastnost=hodnota

Pokud vlastnost konfigurace začíná řetězcem db2.jcc.override, bude tato vlastnost použitelná pro všechna připojení a přepíše všechny vlastnosti připojení a zdrojů dat se stejným jménem vlastnosti. Jestliže vlastnost konfigurace začíná řetězcem db2.jcc or db2.jcc.default, je hodnota vlastnosti konfigurace standardní. Nastavení vlastností zdrojů dat nebo připojení tuto hodnotu přepíší.

Postup

Chcete-li nastavit vlastnosti konfigurace, postupujte takto:

Lze nastavit následující vlastnosti konfigurace ovladače DB2 Universal JDBC. Všechny vlastnosti jsou nepovinné.

db2.jcc.override.traceFile
Povoluje ovladači DB2 Universal JDBC trasovat kód ovladače Java a určit jméno, od kterého jsou odvozena jména trasovacích souborů.

Zadejte úplné jméno souboru pro hodnotu vlastnosti db2.jcc.override.traceFile.

Vlastnost db2.jcc.override.traceFile přepíše vlastnost traceFile pro objekty Connection nebo DataSource.

Například následující zadání vlastnosti db2.jcc.override.traceFile povoluje trasování kódu Java ovladače DB2 Universal JDBC do souboru jménem /SYSTEM/tmp/jdbctrace :

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

Vlastnosti trasování byste měli nastavovat podle pokynů softwarové podpory společnosti IBM.

db2.jcc.sqljUncustomizedWarningOrException
Určuje akci, kterou podnikne ovladač DB2 Universal JDBC při spuštění nepřizpůsobené aplikace SQLJ. Vlastnost db2.jcc.sqljUncustomizedWarningOrException může mít následující hodnoty:
0
Ovladač DB2 Universal JDBC při spuštění nepřizpůsobené aplikace SQLJ negeneruje varování ani výjimku. Toto nastavení je výchozí.
1
Ovladač DB2 Universal JDBC při spuštění nepřizpůsobené aplikace SQLJ generuje varování.
2
Ovladač DB2 Universal JDBC při spuštění nepřizpůsobené aplikace SQLJ generuje výjimku.

Odebrána funkce db2secFreeToken

Funkce db2secFreeToken (volná paměť držená prvkem) již není součástí rozhraní API modulu plug-in ověření uživatele db2secGssapiServerAuthFunctions_1.

Pečlivě implementujte vlastní moduly plug-in zabezpečení

Integrita instalace produktu DB2 Universal Database (UDB) může být ohrožena, není-li implementace modulů plug-in zabezpečení odpovídajícím způsobem kódována, kontrolována a testována. Produkt DB2 UDB obsahuje opatření proti mnoha běžným typům selhání, ale nemůže zajistit úplnou integritu při implementaci uživatelem vytvořených modulů plug-in zabezpečení.

Moduly plug-in zabezpečení

Používáte-li vlastní přizpůsobené moduly plug-in zabezpečení, můžete v příkazu připojení zadaném pomocí příkazového procesoru nebo v dynamickém příkazu SQL použít jméno uživatele až o 255 znacích.

Rozhraní API modulu plug-in zabezpečení

Pro rozhraní API db2secGetGroupsForUser, db2secValidatePassword a db2secGetAuthIDs může mít vstupní parametr dbname hodnotu NULL a odpovídající vstupní parametr délky dbnamelen bude nastaven na hodnotu 0.

Konvence při pojmenovávání modulů plug-in (Linux a UNIX)

Přípona .so je nyní přijímána jako přípona jména souboru pro uživatelské knihovny modulů plug-in zabezpečení, a to ve všech platformách Linux and UNIX.

Na platformě AIX mají knihovny zabezpečení typu plug-in příponu .a nebo .so. Pokud obě verze knihovny modulu plug-in již existují, bude použita verze .a.

V prostředí HP-UX na procesorech PA-RISC mohou mít knihovny modulů plug-in zabezpečení příponu .sl nebo .so. Pokud obě verze knihovny modulu plug-in již existují, bude použita verze .sl.

Na všech ostatních platformách Linux a UNIX je přípona .so jedinou podporovanou příponou jména souboru pro knihovny modulů plug-in zabezpečení.

Omezení v knihovnách modulů plug-in zabezpečení

V systému AIX mohou mít knihovny modulů plug-in zabezpečení příponu .a nebo .so. Mechanismus pro načítání knihoven modulů plug-in závisí na použité příponě:

Knihovny modulů plug-in s příponou jména souboru .a
Knihovny modulů plug-in s příponou jména souboru .a jsou pokládány za archivy obsahující členy sdílených objektů. Tito členové se musí jmenovat shr.o (32bitová verze) nebo shr64.o (64bitová verze). Samostatný archiv může obsahovat 32bitové i 64bitové členy a implementovat je v obou typech platforem.

Chcete-li například sestavit knihovnu modulů plug-in stylu 32bitového archivu, postupujte takto:

  xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp
  ar rv MyPlugin.a shr.o
Knihovny modulů plug-in s příponou jména souboru .so
Knihovny modulů plug-in s příponou jména souboru .so jsou pokládány za dynamicky načítatelné sdílené objekty. Takový objekt je buď 32bitový, nebo 64bitový, v závislosti na volbách kompilátoru a sestavovacího programu použitých při jeho sestavení. Chcete-li například sestavit 32bitovou knihovnu modulů plug-in, postupujte takto:
  xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp

Na všech ostatních platformách, jiných než AIX, jsou knihovny modulů plug-in vždy pokládány za dynamicky načítatelné sdílené objekty.

| | |

Podpora modulu plug-in GSS-API pro ovladač DB2 Universal JDBC

|

Ve vydání produktu DB2 UDB verze 8.2 pro systémy Linux, UNIX a Windows můžete vytvářet vlastní mechanismy pro ověřování ve formě modulů plug-in (knihoven s možností načtení). Načítání těchto modulů plug-in a přístup k nim za účelem ověřování uživatelů provádí jádro produktu DB2 UDB. Za účelem podpory zákaznických aplikací napsaných v jazyce Java je v produktu DB2 UDB verze 8.2 s opravnou sadou FixPak 4 poskytována ovladačem DB2 Universal JDBC podpora modulů plug-in pro zabezpečení.

|

Pro aplikace jazyka Java používající ovladač DB2 Universal JDBC k ověřování prostřednictvím modulu plug-in musí uživatelé implementovat vlastní modul plug-in rozšířením abstraktní třídy com.ibm.db2.jcc.DB2JCCPlugin a nastavením následujících vlastností:

| |

Seznamte se s následujícím příkladem:

|
   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);

Moduly plug-in zabezpečení GSS-API nepodporují ověřování prostřednictvím více toků

Ověřování GSS-API je omezeno na tok jednoho prvku z klienta na server a jednoho prvku ze serveru na klienta. Tyto prvky se získávají z parametru gss_init_sec_context() na klientovi a gss_accept_sec_context() na serveru. Moduly plug-in GSS-API, které se pokusí o práci s dalšími toky, vygenerují neočekávanou chybu modulu plug-in zabezpečení a způsobí tak selhání připojení.

Moduly plug-in zabezpečení GSS-API nepodporují šifrování zpráv a podepisování

Šifrování zpráv a podepisování není v modulech plug-in zabezpečení GSS-API podporováno.

Implicitní ukončení transakcí v samostatných aplikacích

Všechna ukončení aplikací (běžná i nestandardní) implicitně odvolají nevyřízené transakce, a to bez závislosti na operačním systému.

Podpora distribuovaných transakcí

V dokumentaci Novinky produktu DB2 Universal Database (UDB) verze 8.2 jsou v sekci týkající se vylepšení ovladače DB2 Universal JDBC o podporu distribuovaných transakcí uvedeny chybné informace. Poslední věta této sekce je nesprávná. Správná informace je následující:

Od verze 8.2 nabízí produkt DB2 UDB podporu zpracování distribuovaných transakcí, která odpovídá specifikaci XA. Tato podpora implementuje specifikace Java 2 Platform Enterprise Edition (J2EE), Java Transaction Service (JTS) a  Java Transaction API (JTA).

[ Začátek stránky |Předchozí stránka | Další stránka | Obsah ]