In diesem Abschnitt werden bekannte Probleme der im Lieferumfang enthaltenen Sun JDBC-Treiber sowie ihre Lösungen beschrieben.
Um die Isolationsebene für eine Verbindung wie gewünscht setzen zu können, muss das entsprechende Verbindungspool auf derselben Isolationsebene erstellt werden. Einzelheiten zur Konfiguration von Verbindungspools finden Sie unter Sun Java System Application Server Enterprise Edition 8.2 Administration Guide .
Wenn eine Anwendung mehr als 3000 PreparedStatement-Objekte in einer Transaktion generiert, kann folgender DB2-Fehler auftreten:
[sunm][DB2 JDBC Driver] No more available statements. Erstellen Sie Ihr Paket mit einem höheren dynamicSections-Wert neu.
Fügen Sie die folgenden Eigenschaften zur Verbindungspooldefinition hinzu, damit der Treiber DB2-Pakete mit einem größeren dynamischen Abschnittswert neu bindet:
createDefaultPackage=true replacePackage=true dynamicSections=1000
Einzelheiten zur Konfiguration von Verbindungspools finden Sie unter Sun Java System Application Server Enterprise Edition 8.2 Administration Guide .
Im Zusammenhang mit dem oben erwähnten PrepardStatement-Fehler kann folgender Fehler auftreten:
[sunm][DB2 JDBC Driver][DB2]Virtueller Speicher oder Datenbankressource steht nicht zur Verfügung.
Erhöhen Sie den Wert des Konfigurationsparameters APPLHEAPSZ des DB2-Servers. Ein geeigneter Wert ist 4096.
Isolationsebene TRANSACTION_SERIALIZABLE Wenn eine Anwendung die Isolationsebene TRANSACTION_SERIALIZABLE und einen der oben genannten Parameter verwendet, kann die Anwendung beim Verbindungsaufbau abstürzen.
Um die Isolationsebene für eine Verbindung wie gewünscht setzen zu können, muss das entsprechende Verbindungspool auf derselben Isolationsebene erstellt werden. Anweisungen finden Sie im Sun Java System Application Server Enterprise Edition 8.2 Administration Guide .
Anwendungen, die die TRANSACTION_SERIALIZABLE-Isolationsebene zusammen mit dem im Paket enthaltenen Sun-Treiber für Sybase Adaptive Server verwenden, hängen, wenn eine vorbereitete Aktualisierungsanweisung verwendet wird, die einsetzt, wenn zwei Transaktionen parallel ausgeführt werden und eine der Transaktionen rückgängig gemacht wird. Der Rollback der Verbindungen schlägt fehl und folgende Meldung wird angezeigt. Die Verbindungen, für die das Rollback durchgeführt werden sollte, können nicht mehr verwendet werden.
java.sql.SQL-Ausnahmefehler: [sunm][Sybase JDBC Driver]Request cannot be submitted due to wire contention
Die TRANSACTION_REPEATABLE_READ-Isolationsebene wird von Sybase Adaptive Server nicht unterstützt. Beim Abfragen von DatabaseMetaData gibt der Sun-Treiber jedoch an, dass diese Isolationsebene von der Datenbank unterstützt wird. Die Ausführung der Anwendungen, die diese Isolationsebene verwenden, schlägt fehl.
Anwendungen, die den mitgelieferten Sun-Treiber verwenden, können die Isolationsebene TRANSACTION_READ_UNCOMMITTED nicht festlegen. Beim Zugreifen auf DataBaseMetaData gibt die Anwendung folgenden Ausnahmefehler aus:
java.sql.SQL-Ausnahmefehler: [sunm][Sybase JDBC Driver][Sybase]Das Optimierungswerkzeug (Optimizer) konnte keinen eindeutigen Index finden, der für das Durchführen einer Suche auf Isolationsebene 0 in Tabelle 'sybsystemprocs verwendet werden könnte.dbo.spt_server_info'.
Zu diesem Zeitpunkt steht keine Lösung zur Verfügung.
Setzen Sie die folgende Eigenschaft im JDBC-Verbindungspool, wenn Sie die SUN JDBC-Oracle-Datenquelle verwenden (com.sunsql.jdbcx.oracle.OracleDataSource):
<property name="serverType" value="dedicated"/>
Der Wert der Eigenschaft hängt davon ab, wie der Listener des Oracle-Servers konfiguriert ist. Wenn er im Modus "shared" konfiguriert ist, muss der obige Wert zu "dedicated" geändert werden.