Połączenie Oracle z SQL Server jest jednym z najczęstszych przypadków użycia sterownika ODBC Easysoft SQL Server. Wsparcie tego połączenia to nie tylko pomoc w ustawieniu naszego sterownika. Oznacza to również pomoc w rozwiązywaniu problemów z konfiguracją Oracle, które uniemożliwiają Oracle Heterogenous Services dotarcie do załadowania naszego sterownika.
Ostatnio klient sterownika ODBC SQL Server zgłosił nam następujący błąd:
ORA-28513: internal error in heterogeneous remote agent
Klient był w stanie dostarczyć nam dziennik śledzenia DG4ODBC, który powiedział nam dwie rzeczy:
- Pliki konfiguracyjne Oracle (.ora) zostały poprawnie skonfigurowane. Jeśli te pliki zawierają błąd (np. brakujący lub obcy nawias), nie zostanie wygenerowany żaden dziennik śledzenia DG4ODBC.
- DG4ODBC nawet nie próbował załadować menedżera sterowników unixODBC.
W sytuacjach takich jak te, w których log Oracle DG4ODBC nie identyfikuje problemu (zwykle zawsze będzie zawierał więcej informacji niż zgłaszany przez aplikację błąd ORA-NNNNN), a logowanie ODBC nie jest jeszcze możliwe, sięgamy po strace lub
kratownica
. Na przykład:
- Rozpocznij dwie sesje powłoki jako użytkownik Oracle.
- W powłoce 1 zatrzymaj program nasłuchujący Oracle.
- Uruchom odbiornik za pomocą tego polecenia:
strace -f -o /tmp/easysoft.log -s 512 lsnrctl start
—Lub—
truss -wall -rall -o /tmp/easysoft.log lsnrctl start
- W powłoce 2 uruchom SQL*PLus i uruchom instrukcję SQL względem łącza bazy danych DG4ODBC / SQL Server.
- W powłoce 2 zatrzymaj nasłuchiwanie Oracle.
Jednak narzędzie do śledzenia biblioteki systemowej (truss
w przypadku klienta) nadal nie ujawnił przyczyny problemu.
W końcu okazało się, że klient ustawiał ORA_NLS10
zmienna środowiskowa, a efektem ubocznym tego było uniemożliwienie działania DG4ODBC. Ponieważ zmienna nie musiała być ustawiana na tym komputerze, usunięcie jej i usunięcie z pliku profilu było rozwiązaniem problemu klienta.