Probleme beim Datenzugriff

Die Diagnosetools von WebSphere Application Server stellen Services bereit, die Sie bei der Behebung von Problemen in der Datenbankverbindung unterstützen. Außerdem werden auf der IBM® Website flexible Suchfunktionen bereitgestellt, mit denen Sie nach dokumentierten Lösungen für datenbankspezifische Verbindungsprobleme suchen können.

Anmerkung: Dieser Artikel referenziert eine oder mehrere Protokolldateien des Anwendungsservers. Alternativ dazu wird empfohlen, den Server so zu konfigurieren, dass er die HPEL-Protokoll- und -Traceinfrastruktur (High Performance Extensible Logging) verwendet und nicht die Dateien SystemOut.log , SystemErr.log, trace.log und activity.log auf verteilten oder IBM i-Systemen. Sie können HPEL auch in Verbindung mit Ihren nativen z/OS-Protokolleinrichtungen verwenden. Wenn Sie HPEL verwenden, können Sie mit dem Befehlszeilentool LogViewer im Verzeichnis "bin" des Serverprofils auf alle Ihre Protokoll- und Tracedaten zugreifen. Weitere Informationen zur Verwendung von HPEL finden Sie in der Dokumentation zum Einsatz von HPEL für die Fehlerbehebung in Anwendungen.

Mit den folgenden Schritten können Sie Konnektivitätsprobleme schnell eingrenzen.

  1. Suchen Sie in den Protokolldateien des Anwendungsservers nach Hinweisen.

    [z/OS]Weitere Informationen finden Sie im Artikel "Fehlerprotokoll konfigurieren".

    [AIX Solaris HP-UX Linux Windows][IBM i]Weitere Informationen finden Sie im Artikel "JVM-Protokolle anzeigen". Standardmäßig sind diese Dateien Stammverzeichnis_des_Anwendungsservers/Servername/SystemErr.log und SystemOut.log.
    Anmerkung: Dieser Artikel referenziert eine oder mehrere Protokolldateien des Anwendungsservers. Alternativ dazu wird empfohlen, den Server so zu konfigurieren, dass er die HPEL-Protokoll- und -Traceinfrastruktur (High Performance Extensible Logging) verwendet und nicht die Dateien SystemOut.log , SystemErr.log, trace.log und activity.log auf verteilten oder IBM i-Systemen. Sie können HPEL auch in Verbindung mit Ihren nativen z/OS-Protokolleinrichtungen verwenden. Wenn Sie HPEL verwenden, können Sie mit dem Befehlszeilentool LogViewer im Verzeichnis "bin" des Serverprofils auf alle Ihre Protokoll- und Tracedaten zugreifen. Weitere Informationen zur Verwendung von HPEL finden Sie in der Dokumentation zum Einsatz von HPEL für die Fehlerbehebung in Anwendungen.
  2. Vergewissern Sie sich, dass die Eigenschaft für die Helper-Klasse der Datenquelle ordnungsgemäß definiert und im Klassenpfad von WebSphere Application Server enthalten ist. Unerwartete Fehler bzw. unerklärliches Verhalten kann auf den fehlenden bzw. ungültigen Namen einer Helper-Klasse zurückzuführen sein. Wenn WebSphere Application Server die angegebene Klasse nicht laden kann, verwendet er eine Helper-Standardklasse, die mit Ihrem Datenbankmanager möglicherweise nicht ordnungsgemäß funktioniert.
  3. Vergewissern Sie sich, dass der JNDI-Name (Java™ Naming and Directory Interface) der Datenquelle mit dem Namen übereinstimmt, den der Client verwendet, wenn er versucht, auf die Datenquelle zuzugreifen. Wenn Fehlernachrichten anzeigen, dass das Problem auf die Benennung zurückzuführen ist, z. B. ein Verweis auf den Namensserver oder Namensservice, oder Fehler-IDs enthalten, die mit NMSV beginnen, lesen Sie die Artikel "Fehler bei der Benennung" und "Fehler des Namensservice beheben" zu.
  4. Aktivieren Sie die Traceerstellung für den Ressourcenadapter mit der Tracespezifikation "RRA=all=enabled". Befolgen Sie die Anweisungen, anhand derer Sie einen Speicherauszug der Traceausgabe erstellen und diese Ausgabe durchsuchen können, um die Fehlerursache einzugrenzen. Weitere Informationen finden Sie im Artikel zum Aktivieren der Traceerstellung.

Eine umfassende Liste datenbankspezifischer Tipps zur Fehlerbehebung finden Sie auf der Produktunterstützungsseite für WebSphere Application Server. (Sie finden den Link am Ende dieses Artikels.) Geben Sie im Feld "Search Support" den Namen eines Datenbanklieferanten zusammen mit Ihren Suchbegriffen ein. Wählen Sie Solve a problem aus, und klicken Sie anschließend auf Search.

Referenzinformationen zur Unterstützung finden Sie im Artikel zur Hilfe bei der Fehlerbehebung von IBM in diesem Information Center.

Derzeit enthält dieses Information Center nur eine begrenzte Anzahl von Fehlerbehebungstipps für die folgenden Datenbanken:

IllegalConnectionUseException

Eine mögliche Ursache für diesen Fehler ist, dass eine Verbindung, die von einer WAS40-Datenquelle abgerufen wurde, für mehrere Threads verwendet wird. Dieser Umstand stellt eine Verletzung des J2EE-1.3-Programmiermodells dar und löst, wenn er auf dem Server ermittelt wird, eine Ausnahme aus. Dieser Fehler tritt auf bei Benutzern, die über Servlets oder BMP-Enterprise-Beans (Bean-Managed Persistence) auf eine Datenquelle zugreifen.

Überprüfen Sie zur Bestätigung dieses Problems den Code für gemeinsame Benutzung von Verbindungen. Wenn die Empfehlungen des Programmiermodells nicht befolgt werden, kann der Code "versehentlich" die gemeinsame Benutzung aktivieren. Dies kann z. B. der Fall sein, wenn der Code die Verbindung in der Instanzvariable eines Servlets speichert und die Verbindung für mehrere Threads gleichzeitig verwendet wird.

WTRN0062E: Es wurde versucht, mehrere einphasige Ressourcen in einer globalen Transaktion zu verwenden.

Mögliche Fehlerursachen:
  • Es wurde versucht, eine einphasige Verbindung gemeinsam zu nutzen, aber die getConnection-Aufrufe verwenden nicht alle dieselben Verbindungseigenschaften, wie z. B. AccessIntent.
  • Es wurde versucht, mehrere Verbindungen, die nicht gemeinsam benutzt werden können, in eine globale Transaktion einzubeziehen, wenn die Datenquelle keine XA-Ressource ist.
  • Es wurde versucht, eine einphasige Ressource in eine globale Transaktion einzubeziehen, obwohl eine XA-Ressource oder eine andere einphasige Ressource bereits in diese globale Transaktion einbezogen wurde. Die folgenden Informationen können Ihnen möglicherweise helfen festzustellen, warum die Fehlerbedingung eintritt:
    • Wenn Sie eine Nicht-XA-Datenquelle verwenden und die gemeinsame Nutzung einer Verbindung erwarten, setzen Sie alle relevanten Ressourcenreferenzen (resource-ref) auf gemeinsam nutzbar (shareable). Wenn Sie keine Ressourcenreferenz verwenden, werden standardmäßig nicht gemeinsam nutzbare Verbindungen verwendet.
    • Ihre Verbindung wird nicht gemeinsam genutzt, wenn Sie nicht in allen Verbindungsanforderungen dieselben Verbindungseigenschaften, wie z. B. IsolationLevel oder AccessIntent, verwenden.
    • Ihre Verbindungen werden unter Umständen nicht gemeinsam genutzt, wenn Sie CMP-Beans verwenden, die möglicherweise unterschiedliche AccessIntent-Einstellungen verwenden. Weitere Informationen zu CMP-Beans, die eine Verbindung mit Nicht-CMP-Komponenten gemeinsam nutzen, finden Sie in der Dokumentation zu den Erweiterungen für Datenzugriffs-APIs.
Gehen Sie wie folgt vor, um diesen Fehler zu beheben:
  • Prüfen Sie, welche Daten der Clientcode mit seinen getConnection-Anforderungen übergibt, und vergewissern Sie sich, dass die Anforderungen untereinander konsistent sind.
  • Überprüfen Sie den Umfang der gemeinsamen Nutzung der Verbindungen in der Ressourcenbindung mit einem Assembliertool. Weitere Informationen finden Sie im Artikel "Assembliertools".
    • Wenn Sie einen nicht gemeinsam nutzbaren Verbindungsbereich ausführen, vergewissern Sie sich, dass die Datenquelle eine XA-Datenquelle ist.
    • Wenn Sie einen gemeinsam benutzbaren Verbindungsbereich verwenden, vergewissern Sie sich, das alle Verbindungseigenschaften, wie z. B. AccessIntent und andere Eigenschaften (z. B. userid), gemeinsam benutzt werden können.
  • Überprüfen Sie die Implementierungsklasse des JDBC-Providers in der Anzeige "JDBC-Ressource verwalten" der Administrationskonsole, um sicherzustellen, dass diese Klasse XA-Transaktionen unterstützt.

ConnectionWaitTimeoutException beim Zugriff auf eine Datenquelle oder einen Ressourcenadapter

Wenn Ihre Anwendung beim Versuch, auf eine WebSphere Application Server-Datenquelle oder einen JCA-kompatiblen Ressourcenadapter zuzugreifen, eine Ausnahme des Typs com.ibm.websphere.ce.cm.ConnectionWaitTimeoutException oder com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutException empfängt, sind folgende Ursachen möglich:
  • Die maximale Anzahl der Verbindungen für einen bestimmten Pool ist auf "Niedrig" eingestellt. Die Nachfrage nach der gemeinsamen Benutzung von Verbindungen ist größer als der konfigurierte Maximalwert für den Verbindungspool. Ein Hinweis darauf, dass ein zu niedriger Wert die Ursache des Problems ist, liegt vor, wenn Sie diese Ausnahmen regelmäßig empfangen, die CPU-Auslastung jedoch nicht hoch ist. Ist dies der Fall, sind zu wenige Verbindungen verfügbar, um die Threads auf dem Server auszulasten.
  • Die Wartezeit für die Verbindung ist zu niedrig. Die aktuelle Nachfrage nach Verbindungen ist so hoch, dass manchmal kurzzeitig keine Verbindung verfügbar ist. Wenn der Wert der Wartezeit für die Verbindung zu niedrig ist, überschreiten Sie möglicherweise ein Zeitlimit, kurz bevor ein Benutzer eine Verbindung in den Pool zurückgibt. Durch Anpassung der Wartezeit können Sie dieses Problem lösen. Ein Hinweis darauf, dass ein zu niedriger Wert die Ursache des Problems ist, liegt vor, wenn Sie über einen längeren Zeitraum nahezu die Maximalanzahl der Verbindungen verwenden und diese Fehlernachricht regelmäßig empfangen.
  • Sie schließen einige Verbindungen nicht, oder Sie geben die Verbindungen langsam in den Pool zurück. Das kann leicht geschehen, wenn Sie bei Verwendung nicht gemeinsam benutzbarer Verbindungen vergessen, die Verbindungen zu schließen, oder wenn Sie die Verbindungen erst lange, nachdem Sie sie benutzt haben, schließen und dadurch verhindern, dass sie zur erneuten Verwendung in den Pool zurückgegeben werden. Der Pool wird schnell geleert, und alle Anwendungen empfangen Ausnahmen des Typs "ConnectionWaitTimeoutException". Ein Hinweis darauf, dass nicht geschlossene Verbindungen die Ursache des Problems sind, liegt vor, wenn Sie nicht genügend Verbindungen im Verbindungspool haben und Sie diesen Fehler bei den meisten Anforderungen empfangen.
  • Sie verursachen mehr Arbeitslast, als der Server oder das Back-End-System Ressourcen zur Verarbeitung bereitstellen kann. In diesem Fall müssen Sie angeben, von welchen Ressourcen Sie eine größere Menge benötigen und Konfigurationen oder Hardware an die geänderte Bedarfssituationen anpassen. Ein Hinweis darauf, dass dies die Ursache des Problems ist, liegt vor, wenn der Anwendungsserver oder der Datenbankserverprozessor zu nahezu 100 % ausgelastet ist.
Gehen Sie wahlweise wie folgt vor, um diesen Fehler zu beheben:
  • Legen Sie fest, dass eine Anwendung weniger Verbindungen benutzen soll.
  • Schließen Sie die Verbindungen ordnungsgemäß.
  • Ändern Sie die Pooleinstellungen von MaxConnections oder ConnectionWaitTimeout.
  • Passen Sie die Ressourcen und deren Konfigurationen an.

com.ibm.websphere.ce.cm.StaleConnectionException: [IBM][CLI Driver] SQL1013N The database alias name or database name "NULL" could not be found

com.ibm.websphere.ce.cm.StaleConnectionException: [IBM][CLI Driver] SQL1013N The database alias name or database name "NULL" could not be found. SQLSTATE=42705. Dieser Fehler tritt auf, wenn eine Datenquelle zwar definiert, das Attribut databaseName und der entsprechende Wert jedoch nicht den angepassten Eigenschaften hinzugefügt wurden.

Gehen Sie wie folgt vor, um die Eigenschaft databaseName hinzuzufügen:
  1. Klicken Sie in der Administrationskonsole auf Ressourcen > JDBC-Provider verwalten.
  2. Wählen Sie den JDBC-Provider aus, der die fehlerhafte Datenquelle unterstützt.
  3. Wählen Sie Datenquellen und anschließend die fehlerhafte Datenquelle aus.
  4. Klicken Sie unter Weitere Eigenschaften auf Angepasste Eigenschaften.
  5. Wählen Sie die Eigenschaft databaseName aus, oder fügen eine Eigenschaft, falls nicht vorhanden, hinzu, und geben Sie den tatsächlichen Datenbanknamen als Wert ein.
  6. Klicken Sie auf Anwenden oder OK, und wählen Sie dann in der Aktionsleiste die Option Speichern aus.
  7. Versuchen Sie erneut, auf die Datenquelle zuzugreifen.

java.sql.SQLException: java.lang.UnsatisfiedLinkError

Dieser Fehler zeigt an, dass das Verzeichnis, das die Binärbibliotheken zur Unterstützung einer Datenbank enthält, nicht in der Umgebungsvariable LIBPATH der Umgebung, in der WebSphere Application Server gestartet wird, enthalten sind.

Der Pfad, der die Bibliotheken des DBM-Herstellers enthält, variiert je nach DBM. Eine Möglichkeit, die Binärbibliotheken zu finden, besteht darin, nach der fehlenden Bibliothek, die in der Fehlernachricht angegeben ist, zu suchen. Anschließend kann in der Variable LIBPATH das fehlende Verzeichnis angegeben werden. Sie können das Verzeichnis entweder in der .profile-Datei des Accounts, mit dem WebSphere Application Server gestartet wird, angeben oder eine Anweisung in einer .sh-Datei hinzufügen, die dann das Programm startServer ausführt.

[z/OS]Konfigurieren Sie die Java-Eigenschaft LIBPATH (java.library.path) mit der Variablen "Domäne_region_libpath environment", z. B. control_region_libpath, server_region_libpath oder adjunct_region_libpath. Anweisungen zum Festlegen der libpath-Variablen für die Region finden Sie im Artikel zum Ändern der Variablen, die in BBOM0001I-Nachrichten referenziert werden.

Fehler J2CA0030E in Fehler WTRN0063E eingeschlossen

Beim Versuch, eine Transaktion auszuführen, ist der Fehler "J2CA0030E: Die Methode enlist hat java.lang.IllegalStateException abgefangen" im Fehler "WTRN0063E: Es wurde versucht, eine einphasige Ressource mit zweiphasigen Ressourcen zu registrieren. Dieser Vorgang ist ungültig." eingeschlossen. Dieser Fehler kann auftreten, wenn die Unterstützung für den letzten Teilnehmer (Last Participant Support, LPS) nicht vorhanden oder inaktiviert ist. Die Unterstützung für den letzten Teilnehmer ermöglicht das Auflisten einer einphasigen und einer zweiphasigen Ressource in derselben Transaktion.

Diese Unterstützung ist nur verfügbar, wenn die folgenden Bedingungen zutreffen:
  • WebSphere Application Server Programming Model Extensions (PME) ist installiert. PME ist im Produkt Application Server Integration Server enthalten.
  • Die Option Additional Integration Server Extensions wird bei der Installation von PME aktiviert. Wenn Sie eine typische Installation durchführen, ist diese Option standardmäßig aktiviert. Wenn Sie eine angepasste Installation durchführen, können Sie diese Funktion inaktivieren und auf diese Weise die Unterstützung für den letzten Teilnehmer inaktivieren.
  • Die Anwendung, die die einphasige Ressource auflistet, wurde mit der aktivierten Option Risiko heuristischer Verfahren akzeptieren implementiert. Diese Implementierung wird mit einem Assembliertool durchgeführt.

Beim Versuch, eine Datenbankoperation auszuführen, wurde der Fehler "J2CA0114W: Es wurde kein Aliasname für die containergesteuerte Authentifizierung für die Verbindungsfactory oder Datenquelle Datenquelle gefunden" angezeigt

Dieser Fehler kann in der Datei SystemOut.log auftreten, wenn Sie nach der Erstellung der Datenquelle mit dem JACL-Script eine Anwendung ausführen, um auf eine Datenquelle zuzugreifen.

Die Fehlernachricht tritt auf, da das JACL-Script für die CMP-Verbindungsfactory keinen Aliasnamen für die containergesteuerte Authentifizierung festgelegt hat. Im JACL-Script fehlt die folgende Zeile:
$AdminConfig create MappingModule $cmpConnectorFactory  "{mappingConfigAlias 
DefaultPrincipalMapping} {authDataAlias $authDataAlias}

Fügen Sie die fehlende Zeile zum JACL-Script hinzu, und führen Sie das Script erneut aus. Ein Beispiel-JACL-Script finden Sie im Artikel "Beispiel: Mit der JMX-API und dem Scripting-Tool einen JDBC-Provider und eine Datenquelle erstellen".

Ein Fehler tritt auf, wenn Sie den Befehl "ws_ant" verwenden, um die Datenbankanpassung für SQLJ auf HP-Plattformen durchzuführen

Wenn Sie den Befehl ws_ant verwenden, um auf HP-Plattformen eine Datenbankanpassung an die Structured Query Language in Java (SQLJ) durchzuführen, kann ein Fehler wie der folgende angezeigt werden:
[java] [ibm][db2][jcc][sqlj]
[java] [ibm][db2][jcc][sqlj] Begin customization
[java] [ibm][db2][jcc][sqlj] encoding not supported!!
Dieser Fehler kann auftreten, wenn die Datenbanken mit dem Standardzeichensatz von HP erstellt wurden. Der JCC-Treiber (Java Common Client) ist bei der Konvertierung von Codepages vom Software Development Kit abhängig. Das mit diesem Produkt bereitgestellte SDK unterstützt die HP-Standard-Codepage jedoch nicht.
Sie müssen Sie die Variable "LANG" auf die richtige ISO-Locale setzen, bevor Sie die Datenbanken erstellen. Beispiel:
export LANG=en_US.iso88591
Aktuelle technische Hinweise zu DB2 finden Sie auf der IBM Support Site zur Software für das Informationsmanagement.

Mit CMP (Container-Managed Persistence, über Container realisierte Transaktionspersistenz) kann die definierte Datenbankzugriffsfunktion nicht abgerufen werden

Wenn WebSphere Application Server bestimmten generierten Code, auf den in der Datenbank der Verbindungsfactory zugegriffen wird, zwischenspeichert und Änderungen in der JAR-Datei die Neugenerierung des Datenbankzugriffs erfordern, werden die Änderungen erst aktiv, wenn Sie den Server stoppen und erneut starten.

Beispiele für das Auftreten dieses Fehlers:
  • Es wird eine angepasste Finder-Methode zur Enterprise-Bean hinzugefügt. Es wird eine Ausnahme vom Typ NullPointerException erstellt.
  • Es wird eine angepasste Finder-Methode in der Enterprise-Bean aktualisiert. Die neue SQL-Anweisung wird nicht ausgeführt.
  • Die Schemazuordnung wird geändert. Die neue SQL-Anweisung wird nicht ausgeführt.

Zusammenfassend gesagt, wenn Sie eine angepasste Finder-Methode zu einer Enterprise-Bean hinzufügen oder eine Enterprise-Bean mit einer angepassten Finder-Methode aktualisieren, müssen Sie den Server stoppen und anschließend erneut starten.


Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_dsaccess
Dateiname:rtrb_dsaccess.html