Problemi di accesso ai dati per le origini dati Oracle

Utilizzare i suggerimenti per la risoluzione dei problemi per accedere alle origini dati Oracle .

Quale errore viene visualizzato quando si tenta di accedere all'origine dati basata su Oracle?

È stato specificato un URL Oracle non valido

Questo errore potrebbe essere causato da un URL non correttamente specificato nella proprietà URL dell'origine dati di destinazione.

Esaminare la proprietà URL dell'oggetto origine dati nella console amministrativa per verificare che sia corretta.

Esempi di URL Oracle :
  • Per il driver thin: jdbc:oracle:thin:@//hostname:1521/myDatabase
  • Per il driver thick (OCI): jdbc:oracle:oci:@tnsname1

DSRA0080E: È stata ricevuta un'eccezione dall'adattatore dell'archivio dati. Vedere il messaggio di eccezione originale: ORA-00600

Un motivo possibile per questa eccezione è che la versione del programma di controllo Oracle JDBC utilizzata è precedente al database Oracle . È possibile che su WebSphere® Application Serversia configurata più di una versione del driver Oracle JDBC .

Esaminare la versione del driver JDBC . A volte è possibile determinare la versione esaminando il percorso di classe per determinare in quale directory si trova il driver.

Se non è possibile determinare la versione in questo modo, utilizzare il seguente programma per determinare la versione. Prima di eseguire il programma, impostare il percorso classe sull'ubicazione dei file del driver JDBC .
import java.sql.*;
     import oracle.jdbc.driver.*;
     class JDBCVersion
     {
         public static void main (String args[])
         throws SQLException
         {
             // Load the Oracle JDBC driver
             DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
             // Get a connection to a database
             Connection conn = DriverManager.getConnection
             ("jdbc:oracle:thin:@appaloosa:1521:app1","sys","change_on_install");
             // Create Oracle DatabaseMetaData object
             DatabaseMetaData meta = conn.getMetaData();
             // gets driver info:
             System.out.println("JDBC driver version is"  + meta.getDriverVersion());
         }
     }

Se il driver e il database si trovano su versioni differenti, sostituire il driver JDBC con la versione corretta. Se sono configurati più driver, rimuovere quelli che si verificano al livello non corretto.

DSRA8100E: Impossibile ottenere un {0} dall'origine dati. Spiegazione: consultare linkedException per ulteriori informazioni.

Quando si utilizza un driver thin oracle, Oracle crea unjava.sql.SQLException: invalid arguments in callerrore se non viene specificato alcun nome utente o parola d'ordine durante il richiamo di una connessione. Se questo errore viene visualizzato durante l'esecuzione di WebSphere Application Server, l'alias non viene impostato.

Per eliminare l'eccezione, definire l'alias sull'origine dati.

Errore durante il tentativo di richiamare il testo per l'errore

La causa probabile di questo errore è che il driver OCI Oracle venga utilizzato con una proprietà ORACLE_HOME che non è impostata o non è impostata correttamente.

Per correggere l'errore, esaminare il profilo utente sotto il quale è in esecuzione WebSphere Application Server per verificare che la variabile di ambiente $ORACLE_HOME sia impostata correttamente.

Gli errori del programma di caricamento classe si verificano quando si utilizza un driver OCI Oracle come provider JDBC

Quando si configura un driver OCI Oracle come provider JDBC , è necessario specificare il percorso in cui sono memorizzate le librerie native. Se non è stato specificato un percorso di libreria nativa, la prima volta che si tenta di connettersi utilizzando questo fornitore, si verificano errori del programma di caricamento classi.

Per risolvere questo problema, fare clic su Risorse > JDBC > JDBC Provider, selezionare il programma di controllo OCI Oracle , quindi specificare il percorso delle librerie native nel campo Percorso libreria nativa .

Gli errori si verificano quando si fa riferimento alle classi Oracle o quando ci si connette a un'origine dati Oracle

Ricevere gli errori java.lang.NullPointerException quando si fa riferimento alle classi Oracle oppureinternal error: oracle.jdbc.oci. OCIEnverrori durante la connessione a una origine dati Oracle

Il problema potrebbe essere che il driver OCI viene utilizzato su una macchina AIX® , LIBPATH è impostato correttamente, ma la variabile di ambiente ORACLE_HOME non è impostata o non è impostata correttamente. È possibile che si verifichi un'eccezione simile a quella riportata di seguito quando l'applicazione tenta di connettersi a un'origine dati Oracle :

Per risolvere il problema, esaminare il profilo utente sotto cui è in esecuzione WebSphere Application Server per verificare che la variabile di ambiente $ORACLE_HOME sia impostata correttamente e che $LIBPATH includa $ORACLE_HOME/lib.

WSVR0016W: La voce del percorso classe per il driver Thin Oracle JDBC ha una variabile non valida

Questo errore si verifica quando non è definita alcuna variabile di ambiente per la proprietà, ORACLE_JDBC_DRIVER_PATH.

Verificare questo problema nella console di gestione. Andare a Ambiente > Gestisci WebSphere per verificare che la variabile ORACLE_JDBC_DRIVER_PATH sia definita.

Per risolvere il problema, fare clic su Nuovo e definire la variabile. Ad esempio, nome: ORACLE_JDBC_DRIVER_PATH, valore: c:\oracle\jdbc\lib. Utilizzare un valore che denomi la directory nel sistema operativo che contiene il file ojdbc6.jar (o il file ojdbc6_g.jar per abilitare la traccia Oracle ).

Errore di ripristino della transazione (per le origini dati XA)

Problema

Quando WebSphere Application Server tenta di ripristinare transazioni del database Oracle , il servizio transazioni emette la seguente eccezione:
WTRN0037W: The transaction service encountered an error on an xa_recover operation. 
The resource was com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@1114a62. 
The error code was XAER_RMERR. The exception stack trace follows: 
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)

Causa

Oracle richiede servizi come il servizio di transazioni WebSphere Application Server per disporre di autorizzazioni speciali per l'esecuzione dei recuperi delle transazioni.

Soluzione

Come utente SYS, eseguire i seguenti comandi sul proprio server Oracle :
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 <user>;
Utente è un ID utente nel server delle applicazioni autorizzato ad eseguire il recupero delle transazioni per l'origine dati XA. Se non è stato autorizzato alcun ID utente ad eseguire il ripristino della transazione, il server delle applicazioni utilizza l'alias di login per l'origine dati come ID utente.

Questo problema è menzionato in Oracle bug: 3979190. L'esecuzione dei precedenti comandi risolve il problema.

Il server delle applicazioni riceve un errore nel file SystemOut.log quando registra l'MBean di diagnostica Oracle JDBC

Il seguente messaggio di errore viene visualizzato nel file SystemOut.log quando WebSphere Application Server tenta di connettersi a un database Oracle :
E Error while registering Oracle JDBC Diagnosability MBean. 
javax.management.MalformedObjectNameException: Invalid character '' in value part of property

Questo errore si verifica durante la connessione iniziale ad un database Oracle poiché la diagnosi per l'MBean non è inizializzata correttamente.

È possibile ignorare questo errore. Tuttavia, è possibile applicare la patch numero 6362104 da Oracle per evitare future ricorrenze di questo errore. Verificare con Oracle se sono state applicate altre patch, poiché questa patch potrebbe non funzionare con altre patch.
Nota: questo argomento fa riferimento a uno o più file di log del server delle applicazioni. Come alternativa consigliata, è possibile configurare il server per utilizzare l'infrastruttura di traccia e di log HPEL (High Performance Extensible Logging) invece di utilizzare i file SystemOut.log , SystemErr.log, trace.loge activity.log su sistemi distribuiti e IBM® i . È anche possibile utilizzare HPEL insieme alle funzioni di registrazione z/OS® native. Se si utilizza HPEL, è possibile accedere a tutte le informazioni di log e di traccia utilizzando lo strumento della riga comandi LogViewer dalla directory bin del profilo del server. Per ulteriori informazioni sull'utilizzo di HPEL, consultare le informazioni sull'utilizzo di HPEL per la risoluzione dei problemi delle applicazioni.