Applikasjonsutvikling: Programmere klientapplikasjoner

| | |

DB2 Universal JDBC-styreprogram Type 4-tilknytning til DB2 for VM/VSE støttes ikke

|

DB2 Universal JDBC-styreprogram støtter ikke type 4-tilknytning til DB2 |for VM/VSE-databaser. I emnene "Setting up the Windows Java environment" |og "Installing the DB2 Universal JDBC Driver" i boken Application |Development Guide: Programming Client Applications, og DB2 UDB Informasjonssenter |står det feilaktig at DB2 Universal JDBC-styreprogram støtter type |4-tilknytning til DB2 for VM/VSE-databaser.

DB2 Universal JDBC-styreprogrammets tilkoblingskonsentrator og balansering av Sysplex-arbeidsbelastning

Java-applikasjoner som bruker DB2 Universal JDBC Driver type 4 connectivity for å få tilgang til DB2 UDB for z/OS-tjenere, kan dra nytte av tilkoblingskonsentratoren og funksjonene for banalsering av Sysplex-arbeidsbelastning.

Disse funksjonene likner på tilkoblingskonsentratoren og funksjonene for balansering av Sysplex-arbeidsbelastning i DB2 Connect.

DB2 Universal JDBC-styreprogram-tilkoblingskonsentratoren kan redusere ressursene DB2 UDB for z/OS-databasetjenere trenger for å støtte et stort antall klientapplikasjoner, ved å la mange tilkoblingsobjekter bruke den samme fysiske tilkoblingen, slik at antall fysiske tilkoblinger til databasetjeneren reduseres.

Balansering av DB2 Universal JDBC-styreprogram Sysplexarbeidsbelastning kan gi bedre tilgjengelighet for en datadelingsgruppe, fordi styreprogrammet henter statusinformasjon om medlemmene i en datadelingsgruppe ofte. Styreprogrammet bruker denne informasjonen til å avgjøre hvilken datadelingsmedlem den neste transaksjonen skal rutes til. Med balansering av Sysplex-arbeidsbelastning sikrer DB2 UDB for z/OS-tjeneren og Workload Manager for z/OS (WLM) at arbeid blir distribuert effektivt blant medlemmer i datadelingsgruppe, og at arbeid blir overført til et annet medlem i en datadelingsgruppe hvis det oppstår en feil hos et medlem.

DB2 Universal JDBC-styreprogram bruker transportobjekter og en globalt transportobjektgruppe til å støtte tilkoblingskonsentratoren og balansering av Sysplex-arbeidsbelastning. Det er ett transportobjekt for hver fysiske tilkobling til databasetjeneren. Når du aktiverer tilkoblingskonsentratoren og balansering av Sysplex-arbeidsbelastning, definerer du det maksimale antall fysiske tilkoblinger til databasetjeneren som kan finnes på samme tid, ved å definere det maksimale antall transportobjekter.

På styreprogramnivå definerer du grenser for antall transportobjekter ved hjelp av konfigurasjonsegenskapene for DB2 Universal JDBC-styreprogram.

På tilkoblingsnivå aktiverer eller deaktiverer du DB2 Universal JDBC-styreprogram-tilkoblingskonsentratoren og balansering av Sysplex-arbeidsbelastning og definerer grenser for antall transportobjekter som bruker DataSource-egenskaper.

Du kan overvåke den globale transportobjektgruppen på disse måtene:

DB2 Universal JDBC-styreprogram-konfigurasjonsegenskaper for tilkoblingskonsentrator og balansering av Sysplex-arbeidsbelastning

Konfigurasjonsegenskapene nedenfor blir brukt til tilkoblingskonsentratoren og banalsering av Sysplex-arbeidsbelastning

db2.jcc.dumpPool
Specifies the types of statistics that are written for global transport pool events, in addition to the summary statistics that are written. The global transport pool is used for the connection concentrator and Sysplex workload balancing.

The data type of db2.jcc.dumpPool is integer (int.). The db2.jcc.dumpPoolStatisticsOnSchedule and db2.jcc.dumpPoolStatisticsOnScheduleFile configuration properties must also be set for writing statistics before any statistics are written.

You can specify one or more of the following types of statistics with the db2.jcc.dumpPool property:

To trace more than one type of event, add the values for the types of events that you want to trace. For example, suppose that you want to trace DUMP_GET_OBJECT and DUMP_CREATE_OBJECT events. The numeric equivalents of these values are 2 and 16, so you specify 18 for the db2.jcc.dumpPool value.

The default is 0, which means that only summary statistics for the global transport pool are written.

db2.jcc.dumpPoolStatisticsOnSchedule
Specifies how often, in seconds, global transport pool statistics are written to the file that is specified by the db2.jcc.dumpPoolStatisticsOnScheduleFile configuration property. The global transport pool is used for the connection concentrator and Sysplex workload balancing.

The default is -1, which means that global transport pool statistics are not written.

db2.jcc.dumpPoolStatisticsOnScheduleFile
Specifies the name of the file to which global transport pool statistics are written. The global transport pool is used for the connection concentrator and Sysplex workload balancing.

If the db2.jcc.dumpPoolStatisticsOnScheduleFile configuration property is not specified, global transport pool statistics are not written.

db2.jcc.maxTransportObjectIdleTime
Specifies the amount of time, in seconds, that an unused transport object stays in a global transport object pool before it can be deleted from the pool. Transport objects are used for the connection concentrator and Sysplex workload balancing.

The default value for the db2.jcc.maxTransportObjectIdleTime configuration property is 60. Setting db2.jcc.maxTransportObjectIdleTime to a value less than 0 causes unused transport objects to be deleted from the pool immediately. This action is not recommended because it can cause severe performance degradation.

db2.jcc.maxTransportObjectWaitTime
Specifies the maximum amount of time, in seconds, that an application waits for a transport object if the db2.jcc.maxTransportObjects value has been reached. Transport objects are used for the connection concentrator and Sysplex workload balancing. When an application waits for longer than the db2.jcc.maxTransportObjectWaitTime value, the global transport object pool throws an SQLException.

The default value for the db2.jcc.maxTransportObjectWaitTime configuration property is -1. Any negative value means that applications wait forever.

db2.jcc.maxTransportObjects
Specifies the upper limit for the number of transport objects in a global transport object pool for the connection concentrator and Sysplex workload balancing. When the number of transport objects in the pool reaches the db2.jcc.maxTransportObjects value, transport objects that have not been used for longer than the db2.jcc.maxTransportObjectIdleTime value are deleted from the pool.

The default value for the db2.jcc.maxTransportObjects configuration property is -1, which means that there is no limit to the number of transport objects in the global transport object pool.

db2.jcc.minTransportObjects
Specifies the lower limit for the number of transport objects in a global transport object pool for the connection concentrator and Sysplex workload balancing. When a JVM is created, there are no transport objects in the pool. Transport objects are added to the pool as they are needed. After the db2.jcc.minTransportObjects value is reached, the number of transport objects in the global transport object pool never goes below the db2.jcc.minTransportObjects value for the lifetime of that JVM.

The default value for the db2.jcc.minTransportObjects configuration property is 0. Any value less than or equal to 0 means that the global transport object pool can become empty.

DB2 Universal JDBC-styreprogram DataSource-egenskaper for tilkoblingskonsentrator og balansering av Sysplex-arbeidsbelastning

DB2 Universal JDBC-styreprogram DataSource-egenskapene nedenfor blir brukt til tilkoblingskonsentratoren og banalsering av Sysplex-arbeidsbelastning

enableConnectionConcentrator
Indicates whether the connection concentrator function of the DB2 Universal JDBC-styreprogram is enabled. The connection concentrator function is available only for connections to DB2 UDB for z/OS servers.

The data type of the enableConnectionConcentrator property is boolean. The default is false. However, if enableSysplexWLB is set to true, the default is true.

enableSysplexWLB
Indicates whether the Sysplex workload balancing function of the DB2 Universal JDBC-styreprogram is enabled. The Sysplex workload balancing function is available only for connections to DB2 UDB for z/OS servers.

The data type of the enableSysplexWLB property is boolean. The default is false. However, if enableSysplexWLB is set to true, enableConnectionConcentrator is set to true by default.

maxTransportObjects
Specifies the maximum number of transport objects that can be used for all connections with the associated DataSource object. Transport objects are used for the connection concentrator and Sysplex workload balancing. The maxTransportObjects value is ignored if the enableConnectionConcentrator or enableSysplexWLB properties are not set to enable the use of the connection concentrator or Sysplex workload balancing.

The data type of this property is integer (int.).

If the maxTransportObjects value has not been reached and a transport object is not available in the global transport objects pool, the pool creates a new transport object. If the maxTransportObjects value has been reached, the application waits for the amount of time that is specified by the db2.jcc.maxTransportObjectWaitTime configuration property. After that amount of time has elapsed, if there is still no available transport object in the pool, the pool throws an SQLException.

The maxTransportObjects property does not override the db2.jcc.maxTransportObjects configuration property. The maxTransportObjects property has no effect on connections from other DataSource objects. If the maxTransportObjects value is larger than the db2.jcc.maxTransportObjects value, maxTransportObjects does not increase the db2.jcc.maxTransportObjects value.

The default value for the maxTransportObjects property is -1, which means that the number of transport objects for the DataSource is limited only by the db2.jcc.maxTransportObjects value for the driver..

Eksempel på aktivering av funksjonene for DB2 Universal JDBC-styreprogram-tilkoblingskonsentrator og balansering av Sysplex-arbeidsbelastning i WebSphere Application Server

Prosedyren nedenfor er et eksempel på hvordan du aktiverer funksjonene for DB2 Universal JDBC-styreprogram-tilkoblingskonsentrator og balansering av Sysplex-arbeidsbelastning med WebSphere Application Server.

Forutsetninger

Krav til tjener:

Krav til klient:

Fremgangsmåte

Slik aktiverer du funksjonene for DB2 Universal JDBC-styreprogram-tilkoblingskonsentrator og balansering av Sysplex-arbeidsbelastning med WebSphere Application Server:

  1. Kontroller at DB2 Universal JDBC-styreprogram er på riktig nivå for å støtte funksjonene for tilkoblingskonsentrator og balansering av Sysplex-arbeidsbelastning ved å utføre denne kommandoen i kommandolinjebehandleren på z/OS, eller i System Services på UNIX:
    java com.ibm.db2.jcc.DB2Jcc -version
    Finn en linje i utdataene som ser omtrent slik ut:
    [ibm][db2][jcc] Driver: IBM DB2 JDBC Universal Driver Architecture n n
    n skal være 2.7 eller senere.
  2. Definer DB2 Universal JDBC-styreprogram-konfigurasjonsegenskapene for å aktivere tilkoblingskonsentratoren eller balansering av Sysplex-arbeidsbelastning for alle DataSource-forekomster som blir opprettet under styreprogrammet.

    Definer konfigurasjonsegenskapene i en DB2JccConfiguration.properties-fil.

    1. Opprett en DB2JccConfiguration.properties-fil eller rediger den eksisterende DB2JccConfiguration.properties-filen.
    2. Definer disse konfigurasjonsegenskapene:
      • db2.jcc.minTransportObjects
      • db2.jcc.maxTransportObjects
      • db2.jcc.maxTransportObjectWaitTime
      • db2.jcc.dumpPool
      • db2.jcc.dumpPoolStatisticsOnScheduleFile
      Start med innstillinger som dette:
      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. Tilføy katalogbanen for DB2JccConfiguration.properties til klassebanen for WebSphere Application Server DB2 Universal JDBC-styreprogram.
  3. Definer datakildegenskapene for DB2 Universal JDBC-styreprogram slik funksjonen for tilkoblingskonsentratoren eller funksjonen for balansering av Sysplex-arbeidsbelastning aktiveres.

    I administrasjonskonsollen for WebSphere Application Server definerer du følgende egenskaper for datakilden som applikasjonen din bruker til å koble seg til databasetjeneren:

    • enableSysplexWLB
    • enableConnectionConcentrator
    • maxTransportObjects
    La oss tenke oss at du vil at du vil ha både funksjonen for tilkoblingskonsentratoren og funksjonen for balansering av Sysplex-arbeidsbelastning. Start med innstillinger som dette:
    Tabell 26. Eksempel på egenskapsinnstillinger for datakilde for funksjonene for DB2 Universal JDBC-styreprogram-tilkoblingskonsentrator og balansering av Sysplex-arbeidsbelastning
    Egenskap Innstilling
    enableSysplexWLB true1
    maxTransportObjects 100
    Merknader:
    1. Egenskapen enableConnectionConcentrator er satt til true som standard fordi egenskapen enableSysplexWLB property er satt til true.
  4. Start WebSphere Application Server på nytt.

Metoder for å overvåke DB2 Universal JDBC-styreprogram-tilkoblingskonsentratoren og funksjonene for balansering av Sysplex-arbeidsbelastning

Hvis du skal overvåke DB2 Universal JDBC-styreprogram-tilkoblingskonsentratoren og funksjonene for balansering av Sysplex-arbeidsbelastning, må du overvåke den globale transportobjektgruppen (global transport objects pool). Du kan overvåke den globale transportobjektgruppen på disse måtene:

Konfigurasjonsegenskaper for overvåking av den globale transportobjektgruppen

Konfigurasjonsegenskapene db2.jcc.dumpPool, db2.jcc.dumpPoolStatisticsOnSchedule og db2.jcc.dumpPoolStatisticsOnScheduleFile styrer sporingen av den globale transportobjektgruppen.

Hvis du for eksempel definerer følgende konfigurasjonsegenskaper, blir Sysplex-feilmeldinger og dump pool-feilmeldinger skrevet hvert 60. sekund til filen /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

En oppføring i gruppestatistikkfilen ser slik ut:

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

Feltene har følgende betydning:

npr
Totalt antall forespørsler som DB2 Universal JDBC-styreprogram har gjort til gruppen siden gruppen ble opprettet.
nsr
Antall vellykkede forespørsler som DB2 Universal JDBC-styreprogram har gjort til gruppen siden gruppen ble opprettet. En vellykket forespørsel betyr at gruppen returnerte et objekt.
lwroc
Antall objekter som ble gjenbrukt, men som ikke var i gruppen. Dette kan oppstå hvis et tilkoblingsobjekt frigir et transportobjekt ved en transaksjonsgrense. Hvis tilkoblingsobjektet trenger et transportobjekt senere, og det opprinnelige transportobjektet ikke er brukt av et annet tilkoblingsobjekt, kan tilkoblingsobjektet bruke det transportobjektet.
hwroc
Antall objekter som ble gjenbrukt fra gruppen.
coc
Antall objekter som DB2 Universal JDBC-styreprogram har opprettet siden gruppen ble opprettet.
aooc
Antall objekter som overskred den uvirksomme tiden som er angitt av konfigurasjonsegenskapen db2.jcc.maxTransportObjectIdleTime og ble slettet fra gruppen.
rmoc
Antall objekter som er slettet fra gruppen siden gruppen ble opprettet.
nbr
Antall forespørsler som DB2 Universal JDBC-styreprogram har gjort til gruppen, som gruppen blokkerte fordi gruppen har nådd maksimumskapasiteten sin. En blokkert forespørsel kan bli vellykket hvis et objekt blir returnert til grupen før verdien for konfigurasjonsegenskapen db2.jcc.maxTransportObjectWaitTime blir overskredet slik at det genereres et unntak.
tbt
Den totale tiden i millisekunder for forespørsler som ble blokkert av gruppen. Denne tiden kan være mye større enn den medgåtte utføringstiden for applikasjonen hvis applikasjonen bruker flere tråder.
tpo
Antall objekter som finnes i gruppen for øyeblikket.
Programmeringsgrensesnitt for overvåking av den globale transportobjektgruppen

Du kan skrive applikasjoner for å samle inn statistikk på den globale transportobjektgruppen. Disse applikasjonene oppretter objekter i DB2PoolMonitor-klassen og starter metoder for å hente informasjon om gruppen.

For eksempel oppretter den følgende koden et objekt for overvåking av den globale transportobjektgruppen:

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

Etter at du har opprettet DB2PoolMonitor-objektet, kan du bruke disse metodene til å overvåke den globale transportobjektgruppen.

getMonitorVersion
Format:
public int getMonitorVersion()

Henter den versjonen av DB2PoolMonitor-klassen som leveres med DB2 Universal JDBC-styreprogram.

totalRequestsToPool
Format:
public int totalRequestsToPool()

Henter det totale antall forespørsler som DB2 Universal JDBC-styreprogram har gjort til gruppen siden gruppen ble opprettet.

successfullRequestsFromPool
Format:
public int successfullRequestsFromPool()

Henter antall vellykkede forespørsler som DB2 Universal JDBC-styreprogram har gjort til gruppen siden gruppen ble opprettet. En vellykket forespørsel betyr at gruppen returnerte et objekt.

numberOfRequestsBlocked
Format:
public int numberOfRequestsBlocked()

Henter antall forespørsler som DB2 Universal JDBC-styreprogram har gjort til gruppen, som gruppen blokkerte fordi gruppen har nådd maksimumskapasiteten sin. En blokkert forespørsel kan bli vellykket hvis et objekt blir returnert til grupen før verdien for konfigurasjonsegenskapen db2.jcc.maxTransportObjectWaitTime blir overskredet slik at det genereres et unntak.

totalTimeBlocked
Format:
public long totalTimeBlocked()

Henter den totale tiden i millisekunder for forespørsler som ble blokkert av gruppen. Denne tiden kan være mye større enn den medgåtte utføringstiden for applikasjonen hvis applikasjonen bruker flere tråder.

lightWeightReusedObjectCount
Format:
public int lightWeightReusedObjectCount()

Henter antall objekter som ble gjenbrukt, men som ikke var i gruppen. Dette kan oppstå hvis et tilkoblingsobjekt frigir et transportobjekt ved en transaksjonsgrense. Hvis tilkoblingsobjektet trenger et transportobjekt senere, og det opprinnelige transportobjektet ikke er brukt av et annet tilkoblingsobjekt, kan tilkoblingsobjektet bruke det transportobjektet.

heavyWeightReusedObjectCount
Format:
public int heavyWeightReusedObjectCount()

Henter antall objekter som ble gjenbrukt fra gruppen.

createdObjectCount
Format:
public int createdObjectCount()

Henter antall objekter som DB2 Universal JDBC-styreprogram har opprettet siden gruppen ble opprettet.

agedOutObjectCount
Format:
public int agedOutObjectCount()

Henter antall objekter som overskred den uvirksomme tiden som er angitt av konfigurasjonsegenskapen db2.jcc.maxTransportObjectIdleTime og ble slettet fra gruppen.

removedObjectCount
Format:
public int removedObjectCount()

Henter antall objekter som er slettet fra gruppen siden gruppen ble opprettet.

totalPoolObjects
Format:
public int totalPoolObjects()

Antall objekter som finnes i gruppen for øyeblikket.

CLI/ODBC-konfigurasjonsnøkkelordet OleDbReportIsLongForLongTypes

Nøkkelordet OleDbReportIsLongForLongTypes støttes av følgende databasetjenere:

Beskrivelse av nøkkelordet:
Får OLE DB til å flagge LONG-datatyper med DBCOLUMNFLAGS_ISLONG.
Syntaks for db2cli.ini-nøkkelordet:
OleDbReportIsLongForLongTypes = 0 | 1
Tilsvarende setningsattributt:
SQL_ATTR_REPORT_ISLONG_FOR_LONGTYPES_OLEDB
Standardverdier:
LONG-typer (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC og LONG VARGRAPHIC FOR BIT DATA) har ikke aktivert DBCOLUMNFLAGS_ISLONG-flagget, noe som kan føre til at kolonnene kan bli brukt i WHERE-leddet.
Merknader om bruk:
 

OLE DBs Client Cursor Engine og OLE DB .NET Data Providers CommandBuilder genererer oppdaterings- og slettesetninger basert på kolonneinformasjonen som blir gitt av IBM DB2 OLE DB Provider. Hvis den genererte setningen inneholder en LONG-type i WHERE-leddet, vil setningen mislykkes fordi LONG-typer ikke kan brukes i et søk med en likhetsoperator. Hvis nøkkelordet OleDbReportIsLongForLongTypes settes til 1, vil IBM DB2 OLE DB Provider rapportere LONG-typer (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC og LONG VARGRAPHIC FOR BIT DATA) med DBCOLUMNFLAGS_ISLONG-flagget definert. Dette vil hindre at LONG-kolonnene blir brukt i WHERE-leddet.

CLI/ODBC-konfigurasjonsnøkkelordet OleDbSQLColumnsSortByOrdinal

Nøkkelordet OleDbSQLColumnsSortByOrdinal støttes av følgende databasetjenere:

Beskrivelse av nøkkelordet:
Får OLE DBs IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) til å returnere et radsett sortert etter ORDINAL_POSITION-kolonnen.
Syntaks for db2cli.ini-nøkkelordet:
OleDbSQLColumnsSortByOrdinal = 0 | 1
Tilsvarende setningsattributt:
SQL_ATTR_SQLCOLUMNS_SORT_BY_ORDINAL_OLEDB
Standardverdier:
IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) returnerer radsettet sortert etter kolonnene TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME.
Merknader om bruk:
 

Microsoft OLE DB-spesifikasjonen krever at IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) returnerer radsettet sortert etter kolonnene TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. IBM DB2 OLE DB Provider følger denne spesifikasjonen. Applikasjoner som bruker Microsoft ODBC Bridge Provider (MSDASQL), er imidlertid vanligvis kodet for å hente radsettet sortert etter ORDINAL_POSITION. Hvis nøkkelordet OleDbSQLColumnsSortByOrdinal settes til 1, vil Provider returnere et radsett sortert etter ORDINAL_POSITION.

Egenskapsgruppen DB2 Data Source for IBM DB2 OLE DB Provider

IBM DB2 OLE DB Provider har fått en ny egenskapsgruppe: DB2 Data Source. Egenskapssettet for DB2 Data Source er DBPROPSET_DB2DATASOURCE.

GUID for egenskapssettet er {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}

DBPROPSET_DB2DATASOURCE har tre egenskaper:

DB2PROP_REPORTISLONGFORLONGTYPES

#define DB2PROP_REPORTISLONGFORLONGTYPES 4
Egenskapsgruppe: DB2 Data Source 
Egenskapssett: DB2PROPSET_DATASOURCE
Type: VT_BOOL
Vanlig R/W: R/W
Beskrivelse: Rapporter IsLong for Long-typer

OLE DBs Client Cursor Engine og OLE DB .NET Data Providers CommandBuilder genererer oppdaterings- og slettesetninger basert på kolonneinformasjonen som blir gitt av IBM DB2 OLE DB Provider. Hvis den genererte setningen inneholder en LONG-type i WHERE-leddet, vil setningen mislykkes fordi LONG-typer ikke kan brukes i et søk med en likhetsoperator.

Tabell 27. DB2PROP_REPORTISLONGFORLONGTYPES-verdier
Verdier Betydning
VARIANT_TRUE Gjør at IBM DB2 OLE DB Provider rapporterer LONG-typer (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC og LONG VARGRAPHIC FOR BIT DATA) med DBCOLUMNFLAGS_ISLONG-flagget definert. Dette vil hindre at LONG-kolonnene blir brukt i WHERE-leddet.
VARIANT_FALSE DBCOLUMNFLAGS_ISLONG er ikke definert for LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC og LONG VARGRAPHIC FOR BIT DATA. Dette er standardverdien.
DB2PROP_RETURNCHARASWCHAR

#define DB2PROP_RETURNCHARASWCHAR 2
Egenskapsgruppe: DB2 Data Source 
Egenskapssett: DB2PROPSET_DATASOURCE
Type: VT_BOOL
Vanlig R/W: R/W
Beskrivelse: Returner Char som WChar

Tabell 28. DB2PROP_RETURNCHARASWCHAR-verdier
Verdier Betydning
VARIANT_TRUE OLE DB beskriver kolonner av typen CHAR, VARCHAR, LONG VARCHAR, eller CLOB som DBTYPE_WSTR. Kodesettet med data i forbindelse med ISequentialStream vil være UCS-2. Dette er standardverdien.
VARIANT_FALSE OLE DB beskriver kolonner av typen CHAR, VARCHAR, LONG VARCHAR, eller CLOB som DBTYPE_STR. Kodesettet med data i forbindelse med ISequentialStream vil være det lokale kodesettet til klienten.
DB2PROP_SORTBYORDINAL

#define DB2PROP_SORTBYORDINAL 3
Egenskapsgruppe: DB2 Data Source 
Egenskapssett: DB2PROPSET_DATASOURCE
Type: VT_BOOL
Vanlig R/W: R/W
Beskrivelse: Sorter etter ordenstall

Microsoft OLE DB-spesifikasjonen krever at IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) returnerer radsettet sortert etter kolonnene TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. IBM DB2 OLE DB Provider følger denne spesifikasjonen. Applikasjoner som bruker Microsoft ODBC Bridge Provider (MSDASQL), er imidlertid vanligvis kodet for å hente radsettet sortert etter ORDINAL_POSITION.

Tabell 29. DB2PROP_SORTBYORDINAL-verdier
Verdier Betydning
VARIANT_TRUE Gjør at Provider returnerer et radsett sortert etter ORDINAL_POSITION.
VARIANT_FALSE Gjør at Provider returnerer et radsett sortert etter TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Dette er standardverdien.

Feil URL-syntaks i DB2Binder-syntaksdiagrammet

I emnet "Installere DB2 Universal JDBC-styreprogrammet" har DB2Binder-syntaksdiagrammet en feil definisjon av URL-syntaksen for DB2 Universal JDBC-styreprogrammet. Dette er riktig URL-syntaks for DB2Binder:

DB2Binder-syntaks
Les syntaksdiagramHopp over syntaksdiagram>>-java--com.ibm.db2.jcc.DB2Binder------------------------------>
 
>---url jdbc:db2://tjener-+---------+-/database----------------->
                          '-:--port-'
 
>---user bruker-ID---password passord--+---------------+-------->
                                       '--size heltall-'
 
>--+--------------------------+--------------------------------->
   '--collection samlingsnavn-'
 
>--+------------------------------------+--+-------+-----------><
   |              .-,-----------------. |  '--help-'
   |              V                   | |
   '--tracelevel ---sporingsparameter-+-'
 

Omdirigere DB2 Universal JDBC-styreprogramklienter

Funksjonen for automatisk klientomdirigering i DB2 Universal Database (UDB) for Linux, UNIX, og Windows gjør det mulig for klientapplikasjoner å gjenopprette kommunikasjonen etter å ha mistet forbindelsen med tjeneren, slik at de kan fortsette uten lengre avbrudd.

Når en tjener låser seg, mottar klientene som er koblet til tjeneren en kommunikasjonsfeil som avslutter forbindelsen og resulterer i en applikasjonsfeil. Når tilgjengelighet er viktig, bør du ha et reserveoppsett eller failover-støtte. (Failover gjør at tjeneren kan ta over operasjonene når en annen tjener ikke fungerer.) I alle tilfeller prøver DB2 Universal JDBC-styreprogramklienten å gjenopprette forbindelsen til en ny tjener eller til den opprinnelige tjeneren som kanskje kjører på en failover-node. Når forbindelsen er gjenopprettet, mottar applikasjonen et SQL-unntak (exception) som informerer om transaksjonsfeilen, men applikasjonen kan fortsette med den neste transaksjonen.

Begrensninger

Fremgangsmåte

Når den databaseansvarlige har oppgitt plasseringen til den alternative tjeneren på en bestemt database på tjenerforekomsten, blir plasseringen til den primære og alternative tjeneren returnert til klienten ved tilkobling. DB2 Universal JDBC-styreprogrammet oppretter en forekomst av Referenceable-objektet DB2ClientRerouteServerList og lagrer den forekomsten i sitt midlertidige minne. Hvis kommunikasjonen blir brutt, kan DB2 Universal JDBC-styreprogrammet gjenopprette forbindelsen ved hjelp av tjenerinformasjonen som blir returnert fra tjeneren.

Egenskapen clientRerouteServerListJNDIName DataSource sørger for utvidet støtte for klientomdirigering på klienten. clientRerouteServerListJNDIName har to funksjoner:

Egenskapen clientRerouteServerListJNDIName identifiserer en JNDI-referanse til en DB2ClientRerouteServerList-forekomst i et JNDI-datalager for opplysninger om alternative tjenere. Når forbindelsen til den primære tjeneren er opprettet, blir opplysningene om den alternative tjeneren som er gitt av clientRerouteServerListJNDIName overskrevet av opplysningene fra tjeneren. DB2 Universal JDBC-styreprogrammet prøver å propagere den oppdaterte informasjonen til JNDI-lageret etter en failover hvis egenskapen clientRerouteServerListJNDIName er definert. Hvis clientRerouteServerListJNDIName er oppgitt, vil informasjonen for den primære tjeneren som er oppgitt i DB2ClientRerouteServerList, bli brukt for tilkoblingen. Hvis den primære tjeneren ikke er oppgitt, brukes serverName-informasjonen som er oppgitt på datakilden.

DB2ClientRerouteServerList er en seriell Java-bønne med fire egenskaper:

Det finnes getter- og setter-metoder for å bruke disse egenskapene. Definisjonen av DB2ClientRerouteServerList-klassen er slik:

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

En failover-forbindelse som nettopp er opprettet, konfigureres med de opprinnelige DataSource-egenskapene bortsett i fra tjenernavnet og portnummeret. I tillegg blir eventuelle DB2 UDB-spesialregistre som ble endret under den opprinnelige forbindelsen, gjenopprettet i failover-forbindelsen av DB2 Universal Driver JDBC-styreprogrammet.

Når det oppstår en kommunikasjonsfeil, prøver først DB2 Universal JDBC-styreprogrammet en gjenoppretting mot den primære tjeneren. Hvis dette mislykkes, prøver styreprogrammet å koble til den alternative plasseringen (failover). Når forbindelsen er gjenopprettet, sender styreprogrammet en java.sql.SQLException til applikasjonen med SQLCODE -4498, for å fortelle applikasjonen at forbindelsen er automatisk gjenopprettet til den alternative tjeneren. Applikasjonen kan deretter prøve å utføre transaksjonen på nytt.

Prosedyre for å gjøre DB2ClientRerouteServerList fast (persistent)

Slik gjør du DB2ClientRerouteServerList fast (persistent):

  1. Opprett en forekomst av DB2ClientRerouteServerList, og bind forekomsten til JNDI-registeret. For eksempel:
    // 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. Tildel JNDI-navnet på DB2ClientRerouteServerList-objektet til DataSource-egenskapen clientRerouteServerListJNDIName. For eksempel:
    datasource.setClientRerouteServerListJNDIName("serverList");

Tilpasse konfigurasjonsegenskaper for DB2 Universal JDBC-styreprogrammet

Konfigurasjonsegenskapene for DB2 Universal JDBC-styreprogrammet gjør at du kan definere verdier som gjelder for hele styreprogrammet. Innstillingene gjelder på tvers av applikasjoner og DataSource-forekomster. Du kan endre innstillingene uten å endre kildekode for applikasjoner eller DataSource-egenskaper.

Konfigurasjonsegenskapene for DB2 Universal JDBC-styreprogrammet har dette formatet:

egenskap=verdi

Hvis konfigurasjonsegenskapen begynner med db2.jcc.override, gjelder den for alle forbindelser og overstyrer alle Connection- eller DataSource-egenskaper med samme egenskapnavn. Hvis konfigurasjonsegenskapen begynner med db2.jcc eller db2.jcc.default, er den en standardverdi. Innstillingene for Connection- og DataSource-egenskaper overstyrer denne verdien.

Fremgangsmåte

Slik definerer du konfigurasjonsegenskaper:

Du kan definere disse konfigurasjonsegenskapene for DB2 Universal JDBC-styreprogrammet: Alle egenskapene er valgfrie.

db2.jcc.override.traceFile
Aktiverer sporing av Java-styreprogramkode for DB2-styreprogrammet og spesifiserer navnet som sporingsfilnavnene er basert på.

Oppgi et fullstendig filnavn for verdien til egenskapen db2.jcc.override.traceFile.

Egenskapen db2.jcc.override.traceFile overstyrer traceFile-egenskapen for et Connection- eller DataSource-objekt.

Hvis du for eksempel oppgir denne innstillingen for db2.jcc.override.traceFile, aktiveres sporing av Java-koden for DB2 Universal JDBC-styreprogrammet til en fil med navnet /SYSTEM/tmp/jdbctrace:

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

Du bør definere sporingsegenskapene i følge instruksjoner fra IBM Kundeservice.

db2.jcc.sqljUncustomizedWarningOrException
Oppgir handlingen som DB2 Universal JDBC-styreprogrammet skal utføre når en SQLJ-applikasjon som ikke er tilpasset kjøres. db2.jcc.sqljUncustomizedWarningOrException kan ha disse verdiene:
0
DB2 Universal JDBC-styreprogrammet genererer ikke advarsler eller unntak når en SQLJ-applikasjon som ikke er tilpasset kjøres. Dette er standardverdien.
1
DB2 Universal JDBC-styreprogrammet genererer en advarsel når en SQLJ-applikasjon som ikke er tilpasset kjøres.
2
DB2 Universal JDBC-styreprogrammet genererer et unntak når en SQLJ-applikasjon som ikke er tilpasset kjøres.

Funksjonen db2secFreeToken er fjernet

Funksjonen db2secFreeToken (ledig minne holdt av symbol) er ikke lenger en del av brukerautentiseringstilleggsmodul-APIen db2secGssapiServerAuthFunctions_1.

Vær varsom når du tar i bruk tilpassede tilleggsmoduler for sikkerhet

Integriteten til DB2 Universal Database-installasjonen kan bli skadet hvis koding, kontroll og testing ikke er tilfredsstillende utført før man tar i bruk en tilleggsmodul for sikkerhet. DB2 UDB har beskyttelse mot mange vanlige typer feil, men det er ikke mulig å garantere ubrutt integritet når det tas i bruk en egenutviklet tilleggsmodul for sikkerhet i systemet.

Tilleggsmoduler for sikkerhet

Hvis du bruker din egen tilpassede tilleggsmodul for sikkerhet, kan du bruke bruker-IDer på opptil 255 tegn i en tilkoblingssetning som blir sendt gjennom kommandolinjebehandleren (CLP) eller en dynamisk SQL-setning.

APIer for tilleggsmoduler for sikkerhet

For APIene db2secGetGroupsForUser, db2secValidatePassword og db2secGetAuthIDs kan inndataparameteren dbname være null, og den tilsvarende inndataparameteren dbnamelen for lengden blir da satt til 0.

Navngivningsregler for tilleggsmoduler for sikkerhet (Linux og UNIX)

.so blir nå godtatt som filtype for brukerskrevne biblioteker for sikkerhetstilleggsmoduler på alle Linux- og UNIX-plattformer.

På AIX kan bibliotekene for sikkerhetstilleggsmoduler ha filtypen .a eller .so. Hvis begge versjonene av biblioteket finnes, brukes biblioteket som har filtypen .a.

For HP-UX på PA-RISC kan bibliotekene for sikkerhetstilleggsmoduler ha filtypen .sl eller .so. Hvis begge versjonene av biblioteket finnes, brukes biblioteket som har filtypen .sl.

På alle andre Linux- og UNIX-plattformer er .so den eneste filtypen som er støttet for biblioteker for sikkerhetstilleggsmoduler.

Begrensninger for biblioteker for sikkerhetsmoduler

På AIX kan bibliotekene for sikkerhetstilleggsmoduler ha filtypen .a eller .so. Mekanismen som brukes til å laste inn tilleggsmodulbiblioteket er avhengig av hvilken filtype som brukes:

Tilleggsmodulbiblioteker med filtypen .a
Tilleggsmodulbiblioteker med filtypen .a behandles som arkiver som inneholder felles objektmedlemmer. Disse medlemmene må ha navnet shr.o (32-biters) eller shr64.o (64-biters). Et enkelt arkiv kan inneholde både 32- og 64-bitsmedlemmer, slik at det kan distribueres på begge typer plattformer.

Hvis du for eksempel vil bygge et 32-biters tilleggsmodulbibliotek av arkivtypen, oppgir du:

  xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp
  ar rv MyPlugin.a shr.o
Tilleggsmodulbiblioteker med filtypen .so
Tilleggsmodulbiblioteker med filtypen .so behandles som dynamisk lastbare felles objekter. Slike objekter er enten 32-biters eller 64-biters, avhengig av kompilatoren og lenkealternativene som ble brukt når de ble bygget. Hvis du for eksempel vil bygge et 32-biters tilleggsmodulbibliotek, oppgir du:
  xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp

På alle andre plattformer enn AIX behandles alltid bibliotekene for sikkerhetsmoduler som dynamisk lastbare felles objekter.

| | |

Støtte av GSS-API-tilleggsmodul for DB2 Universal JDBC-styreprogram

|

Fra og med DB2 UDB versjon 8.2 for Linux, UNIX og Windows, kan du opprette egne |autentiseringsmekanismer i form av tilleggsmoduler (lastbare biblioteker). DB2 UDB-programmet laster |inn og tar i bruk disse tilleggsmodulene for å utføre brukerautentisering. For å støtte kundeapplikasjoner som |er skrevet i Java, har DB2 Universal JDBC-styreprogram støtte for sikkerhetstilleggsmoduler i DB2 UDB |V8.2, opprettingspakke 4.

|

For Java-applikasjoner som bruker DB2 Universal JDBC-styreprogram til å utføre autentisering med |en tilleggsmodul, må brukerne implementere sin egen tilleggsmodul ved å utvide (extend) |abstraktklassen com.ibm.db2.jcc.DB2JCCPlugin og definere følgende egenskaper:

| |

Eksempel:

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

GSS-API-tilleggsmoduler for sikkerhet støtter ikke Multiple-Flow-autentisering

GSS-API-autentisering er begrenset til å flytte (flow) ett symbol (token) fra klienten til tjeneren og ett symbol fra tjeneren til klienten. Disse symbolene blir hentet fra gss_init_sec_context() på klienten og fra gss_accept_sec_context() på tjeneren. GSS-API-tilleggsmoduler som prøver på flere flytinger (flows) vil generere en uventet feil for sikkerhetsmodulen, slik at tilkoblingen brytes.

GSS-API-tilleggsmoduler for sikkerhet støtter ikke meldingskryptering og -signering

Meldingskryptering og -signering er ikke tilgjengelig i GSS-API-tilleggsmoduler for sikkerhet.

Implisitt avslutning av transaksjoner i frittstående applikasjoner

Alle applikasjonsavslutninger (normale og unormale) tilbakestiller implisitt alle utestående arbeidsenheter, uansett operativsystem.

Distribuert transaksjonsstøtte

I dokumentet Nyheter for DB2 Universal Database (UDB) versjon 8.2 har avsnittet om forbedringer i distribuert transaksjonsstøtte for DB2 Universal JDBC-styreprogrammet feil informasjon. Den siste setningen i dette avsnittet er feil. Dette er riktig informasjon:

Fra og med versjon 8.2 har DB2 UDB støtte for distribuert transaksjonsbehandling som følger XA-spesifikasjonen. Denne støtten implementerer Java 2 Platform, Enterprise Edition (J2EE) Java Transaction Service (JTS) og Java Transaction API (JTA)-spesifikasjoner.

[ Øverst på siden |Forrige side | Neste side | Innhold ]