Att ansluta Oracle till SQL Server är ett av de vanligaste användningsfallen för Easysoft SQL Server ODBC-drivrutinen. Att stödja denna kombination innebär inte bara att ge hjälp med att ställa in vår förare. Det innebär också att vi hjälper till att lösa Oracle-konfigurationsproblem som hindrar Oracle Heterogeneous Services från att komma så långt som att ladda vår drivrutin.
Nyligen rapporterade en SQL Server ODBC-drivrutinskund följande fel till oss:
ORA-28513: internal error in heterogeneous remote agent
Kunden kunde förse oss med en DG4ODBC-spårningslogg, som berättade två saker:
- Oracles konfigurationsfiler (.ora) hade ställts in korrekt. Om dessa filer innehåller ett fel (t.ex. en saknad eller ovidkommande hakparentes) kommer ingen DG4ODBC-spårningslogg att genereras.
- DG4ODBC försökte inte ens ladda unixODBC Driver Manager.
I situationer som dessa där Oracle DG4ODBC-loggen inte identifierar problemet (den kommer normalt alltid att innehålla mer information än ORA-NNNNN-felet som rapporterats av applikationen), och ODBC-loggning ännu inte är möjlig, når vi efter strace eller
truss
. Till exempel:
- Starta två skalsessioner som Oracle-användare.
- Stoppa Oracle-lyssnaren i skal 1.
- Starta lyssnaren med det här kommandot:
strace -f -o /tmp/easysoft.log -s 512 lsnrctl start
—Eller—
truss -wall -rall -o /tmp/easysoft.log lsnrctl start
- I skal 2, starta SQL*PLus och kör en SQL-sats mot DG4ODBC / SQL Server-databaslänken.
- Stoppa Oracle-lyssnaren i skal 2.
Men spårningsverktyget för systembiblioteket (truss
i kundens fall) avslöjade fortfarande inte orsaken till problemet.
Till slut visade det sig att kunden ställde in ORA_NLS10
miljövariabel, och en bieffekt av att göra detta var att förhindra DG4ODBC från att fungera. Eftersom variabeln inte behövde ställas in på den här maskinen, var lösningen på kundens problem att avaktivera den och ta bort den från en profilfil.