Datenzugriffsprobleme bei Oracle-Datenquellen

Dieser Artikel enthält Tipps zur Fehlerbehebung beim Zugriff auf Oracle-Datenquellen.

Ungültiger Oracle-URL angegeben

Dieser Fehler kann durch einen falsch angegebenen URL in der Eigenschaft "URL" der Zieldatenquelle ausgelöst werden.

Überprüfen Sie die Eigenschaft "URL" für das Datenquellenobjekt in der Administrationskonsole, um sicherzustellen, dass sie richtig ist.

Beispiele für Oracle-URLs:
  • Für Thin Driver: jdbc:oracle:thin:@//hostname:1521/myDatabase
  • Für Thick Driver (OCI): jdbc:oracle:oci:@tnsname1

"DSRA0080E: Vom Data Store Adapter wurde eine Ausnahme empfangen. Ziehen Sie die ursprüngliche Ausnahmenachricht zu Rate: ORA-00600"

Eine mögliche Ursache für diese Ausnahme ist, dass die Version des verwendeten Oracle-JDBC-Treibers älter ist als die Oracle-Datenbank. Möglicherweise wurden mehrere Versionen des Oracle-JDBC-Treibers in WebSphere Application Server konfiguriert.

Überprüfen Sie die Version des JDBC-Treibers. Sie können die Version über den Klassenpfad ermitteln, d. h., Sie können feststellen, in welchem Verzeichnis der Treiber sich befindet.

Falls Sie die Version auf diese Weise nicht bestimmen können, verwenden Sie das folgende Programm. Bevor Sie das Programm ausführen, setzen Sie den Klassenpfad auf das Verzeichnis Ihrer JDBC-Treiberdateien.
import java.sql.*;
     import oracle.jdbc.driver.*;
     class JDBCVersion
     {
         public static void main (String args[])
         throws SQLException
         {
             // Den Oracle-JDBC-Treiber laden
             DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
             // Eine Verbindung zur Datenbank abrufen
             Connection conn = DriverManager.getConnection
             ("jdbc:oracle:thin:@appaloosa:1521:app1","sys","change_on_install");
             // DatabaseMetaData-Objekt für Oracle erstellen
             DatabaseMetaData meta = conn.getMetaData();
             // Treiberinformationen abrufen:
             System.out.println("JDBC driver version is " + meta.getDriverVersion());
         }
     }

Sollten Treiber und Datenbank unterschiedliche Versionen haben, ersetzen Sie den JDBC-Treiber durch die richtige Version. Wenn mehrere Treiber konfiguriert sind, entfernen Sie mit der falschen Version.

DSRA8100E: {0} kann nicht aus der Datenquelle abgerufen werden. Erläuterung: Nähere Informationen finden Sie in der linkedException.

Bei Verwendung eines Oracle Thin Driver löst Oracle die Ausnahme java.sql.SQLException: invalid arguments in call aus, wenn beim Abrufen einer Verbindung kein Benutzername bzw. kein Kennwort angegeben wurde. Wird der Fehler beim Ausführen von WebSphere Application Server ausgelöst, wurde der Aliasname nicht festgelegt.

Zum Entfernen der Ausnahme definieren Sie den Aliasnamen für die Datenquelle.

"Error while trying to retrieve text for error"

Die wahrscheinliche Fehlerursache ist, dass der OCI-Treiber für Oracle verwendet wird und die Eigenschaft ORACLE_HOME nicht oder falsch definiert wurde.

Überprüfen Sie das Benutzerprofil, unter dem WebSphere Application Server ausgeführt wird, und vergewissern Sie sich, dass die Umgebungsvariable $ORACLE_HOME ordnungsgemäß gesetzt ist.

Bei der Verwendung eines Oracle-OCI-Treibers als JDBC-Treiber treten Fehler beim Klassenladeprogramm auf

Wenn Sie einen Oracle-OCI-Treiber als JDBC-Provider konfigurieren, müssen Sie den Pfad angeben, in dem die nativen Bibliotheken gespeichert sind. Geben Sie keinen nativen Bibliothekspfad an, treten Fehler im Klassenladeprogramm auf, wenn Sie das erste Mal versuchen, eine Verbindung herzustellen.

Zum Beheben dieses Problems klicken Sie in der Administrationskonsole auf Ressourcen > JDBC > JDBC-Provider, wählen Sie den Oracle-OCI-Treiber aus, und geben Sie anschließend den Pfad zu den nativen Bibliotheken im Feld Pfad der nativen Bibliothek an.

Beim Versuch, eine Verbindung zu einer Oracle-Datenquelle herzustellen oder Oracle-Klassen zu referenzieren, treten Fehler auf

Fehler vom Typ "java.lang.NullPointerException" beim Referenzieren von Oracle-Klassen oder Fehler vom Typ "internal error: oracle.jdbc.oci. OCIEnv" bei Verbindungsherstellung zu einer Oracle-Datenbank

Die Fehlerursache könnte sein, dass der OCI-Treiber auf einer AIX-Maschine verwendet wird und die Variable LIBPATH richtig, die Umgebungsvariable ORACLE_HOME jedoch nicht richtig oder gar nicht gesetzt ist. Möglicherweise wird eine Ausnahme wie die folgende angezeigt, wenn Ihre Anwendung versucht, eine Verbindung zu einer Oracle-Datenquelle herzustellen:

Überprüfen Sie das Benutzerprofil, unter dem WebSphere Application Server ausgeführt wird, und vergewissern Sie sich, dass die Umgebungsvariable $ORACLE_HOME ordnungsgemäß gesetzt ist und dass $LIBPATH die Angabe $ORACLE_HOME/lib enthält.

WSVR0016W: Der Klassenpfadeintrag für den Oracle JDBC Thin Driver enthält eine ungültige Variable

Dieser Fehler tritt auf, wenn keine Umgebungsvariable für die Eigenschaft ORACLE_JDBC_DRIVER_PATH definiert ist.

Untersuchen Sie den Fehler in der Administrationskonsole. Klicken Sie auf Umgebung > WebSphere-Variablen verwalten, um zu prüfen, ob die Variable ORACLE_JDBC_DRIVER_PATH definiert ist.

Zur Behebung des Problems klicken Sie auf Neu und definieren die Variable. Nennen Sie die Variable beispielsweise ORACLE_JDBC_DRIVER_PATH und weisen Sie ihr den Wert c:\oracle\jdbc\lib zu. Verwenden Sie einen Wert, der auf das Verzeichnis im Betriebssystem zeigt, in dem die Datei ojdbc6.jar (oder die Datei ojdbc6_g.jar für den Oracle-Trace) enthalten ist.

Fehler bei der Transaktionswiederherstellung (für XA-Datenquellen)

Problem

Wenn WebSphere Application Server versucht, Oracle-Datenbanktransaktionen wiederherzustellen, gibt der Transaktionsservice die folgende Ausnahme aus:
WTRN0037W: Der Transaktionsservice hat einen Fehler in einer Operation xa_recover festgestellt.
Die Ressource ist com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@1114a62.
Der Fehlercode ist XAER_RMERR. Traceinformationen zur Ausnahme folgen:
javax.transaction.xa.XAException
at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:726)
at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.recover(WSRdbXaResourceImpl.java:954)
at com.ibm.ws.Transaction.JTA.XARminst.recover(XARminst.java:137)
at com.ibm.ws.Transaction.JTA.XARecoveryData.recover(XARecoveryData.java:609)
at com.ibm.ws.Transaction.JTA.PartnerLogTable.recover(PartnerLogTable.java:511)
at com.ibm.ws.Transaction.JTA.RecoveryManager.resync(RecoveryManager.java:1784)
at com.ibm.ws.Transaction.JTA.RecoveryManager.run(RecoveryManager.java:2241)

Ursache

Oracle erfordert Services wie den Transaktionsservice von WebSphere Application Server, um die Sonderberechtigungen für die Ausführung der Transaktionswiederherstellung zu erhalten.

Lösung

Führen Sie als Benutzer SYS die folgenden Befehle in Ihrem Oracle-Server aus:
grant select on pending_trans$ to public;
grant select on dba_2pc_pending to public;
grant select on dba_pending_transactions to public;
grant execute on dbms_system to <Benutzer>;
Benutzer steht für eine Benutzer-ID im Anwendungsserver, die berechtigt ist, die Transaktionswiederherstellung für die XA-Datenquelle durchzuführen. Wenn Sie keine Benutzer-IDs für die Durchführung der Transaktionswiederherstellung berechtigt haben, verwendet der Anwendungsserver den Anmeldealias für die Datenquelle als Benutzer-ID.

Dieses Problem wird im Oracle-Programmfehler 3979190 erwähnt. Durch die Ausführung dieser Befehls wird das Problem gelöst.

Der Anwendungsserver empfängt einen Fehler in der Datei "SystemOut.log", wenn er die Oracle JDBC Diagnosability MBean registriert.

Der folgende Fehler wird in der Datei SystemOut.log angezeigt, wenn WebSphere Application Server versucht, eine Verbindung zu einer Oracle-Datenbank herzustellen:
E Error while registering Oracle JDBC Diagnosability MBean. javax.management.MalformedObjectNameException: Invalid character '' in value part of property

Dieser Fehler tritt während der einleitenden Verbindung zu einer Oracle-Datenbank auf, weil die Diagnose für die MBean nicht ordnungsgemäß initialisiert wird.

Dieser Fehler kann ignoriert werden. Sie können jedoch den Patch mit der Nummer 6362104 von Oracle anwenden, um künftige Vorkommen dieses Fehlers zu verhindern. Setzen Sie sich mit Oracle in Verbindung, wenn Sie andere Patches angewendet haben, da dieser Patch unter Umständen nicht mit anderen Patches funktioniert.
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.

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_dsaccess2
Dateiname:rtrb_dsaccess2.html