La connessione di Oracle a SQL Server è uno dei casi d'uso più comuni per il driver ODBC di Easysoft SQL Server. Supportare questa combinazione non significa solo fornire assistenza per impostare il nostro autista. Significa anche aiutare a risolvere i problemi di configurazione di Oracle che impediscono a Oracle Heterogeneous Services di arrivare fino al caricamento del nostro driver.
Di recente, un cliente di un driver ODBC di SQL Server ci ha segnalato il seguente errore:
ORA-28513: internal error in heterogeneous remote agent
Il cliente è stato in grado di fornirci un registro di traccia DG4ODBC, che ci ha detto due cose:
- I file di configurazione Oracle (.ora) sono stati impostati correttamente. Se questi file contengono un errore (ad es. una parentesi mancante o estranea), non verrebbe generato alcun registro di traccia DG4ODBC.
- DG4ODBC non stava nemmeno tentando di caricare unixODBC Driver Manager.
In situazioni come queste in cui il log Oracle DG4ODBC non identifica il problema (normalmente conterrà sempre più informazioni rispetto all'errore ORA-NNNNN segnalato dall'applicazione) e la registrazione ODBC non è ancora possibile, si cerca strace
o truss
. Ad esempio:
- Avvia due sessioni di shell come utente Oracle.
- Nella shell 1, arresta il listener Oracle.
- Avvia il listener con questo comando:
strace -f -o /tmp/easysoft.log -s 512 lsnrctl start
—Oppure—
truss -wall -rall -o /tmp/easysoft.log lsnrctl start
- Nella shell 2, avvia SQL*PLus ed esegui un'istruzione SQL sul collegamento al database DG4ODBC / SQL Server.
- Nella shell 2, arresta il listener Oracle.
Tuttavia lo strumento di tracciamento della libreria di sistema (truss
nel caso del cliente) non ha ancora rivelato la causa del problema.
Alla fine, si è scoperto che il cliente stava impostando il ORA_NLS10
variabile di ambiente e un effetto collaterale di questa operazione è stato quello di impedire il funzionamento di DG4ODBC. Poiché non era necessario impostare la variabile su questa macchina, disimpostarla e rimuoverla da un file di profilo è stata la soluzione al problema del cliente.