Свързването на Oracle към SQL Server е един от най-често срещаните случаи на използване на Easysoft SQL Server ODBC драйвер. Поддържането на тази комбинация включва не само предоставяне на помощ при настройката на нашия драйвер. Това също означава да помогнем за разрешаването на проблеми с конфигурацията на Oracle, които пречат на Oracle Heterogeneous Services да стигнат до зареждането на нашия драйвер.
Наскоро клиент на ODBC драйвер на SQL Server ни съобщи следната грешка:
ORA-28513: internal error in heterogeneous remote agent
Клиентът успя да ни предостави дневник за проследяване на DG4ODBC, който ни каза две неща:
- Конфигурационните файлове на Oracle (.ora) бяха настроени правилно. Ако тези файлове съдържат грешка (напр. липсваща или външна скоба), няма да се генерира регистрационен файл за проследяване на DG4ODBC.
- DG4ODBC дори не се опитваше да зареди мениджъра на драйвери unixODBC.
В ситуации като тези, при които регистрационният файл на Oracle DG4ODBC не идентифицира проблема (обикновено винаги ще съдържа повече информация от грешката ORA-NNNNN, съобщена от приложението) и регистрирането на ODBC все още не е възможно, ние посягаме към straceкод> или
фермер
. Например:
- Стартирайте две сесии на обвивката като потребител на Oracle.
- В обвивка 1 спрете слушателя на Oracle.
- Стартирайте слушателя с тази команда:
strace -f -o /tmp/easysoft.log -s 512 lsnrctl start
—Или—
truss -wall -rall -o /tmp/easysoft.log lsnrctl start
- В обвивка 2 стартирайте SQL*PLus и изпълнете SQL оператор срещу връзката към базата данни DG4ODBC/SQL Server.
- В обвивка 2 спрете слушателя на Oracle.
Но инструментът за проследяване на системната библиотека (truss
в случая на клиента) все още не разкри причината за проблема.
В крайна сметка се оказа, че клиентът задава ORA_NLS10
променлива на средата и страничен ефект от това е да попречи на DG4ODBC да работи. Тъй като променливата не трябваше да се задава на тази машина, премахването й от настройката и премахването й от файл с профил беше решението на проблема на клиента.