Как устранить ошибку в логах веб-сервиса, которая касается клиента Oracle и описана ниже?

Я только начал свою карьеру в администрировании и столкнулся с задачей, которую не могу решить уже три недели. У меня есть сервер с ОС Windows Server 2019, на котором работает 32-битное веб-приложение, размещенное в пуле приложений с включенной опцией "Enable 32-Bit Applications". Также имеется веб-сервис, который, как я понимаю, отвечает за конвертацию форматов документов. 

Я установил 32-разрядную версию клиента Oracle 19, с помощью которого удается подключиться к базе данных через sqlplus без проблем. Все переменные окружения настроены правильно и указывают на необходимые каталоги Oracle. Тем не менее, в логах веб-сервиса появляется ошибка "OCIEnvCreate failed with return code -1 but error message text was not available".

Я перепробовал всё, что нашел в интернете: переменные окружения и разрешения настроены корректно, и сейчас установлен только один клиент Oracle, в системе присутствует лишь oci.dll. Можете ли вы подсказать возможные причины этой проблемы?
  • 28 февраля 2025 г. 7:24
Ответы на вопрос 2
Ошибка "OCIEnvCreate failed with return code -1 but error message text was not available" указывает на то, что модуль OCI (Oracle Call Interface) не может создать окружение, необходимое для работы с базой данных Oracle. Это может быть вызвано несколькими факторами. Вот несколько рекомендаций, которые могут помочь вам устранить эту проблему:

1. **Проверка переменных окружения**:
   - Убедитесь, что переменные окружения `ORACLE_HOME`, `TNS_ADMIN`, `PATH` и `LD_LIBRARY_PATH` (если это применимо) правильно настроены. Важно, чтобы они указывали на соответствующие директории 32-разрядной версии клиента Oracle.
   - Проверьте, что в переменной `PATH` первой идет директория с oci.dll.

2. **Правильная установка клиента**:
   - Убедитесь, что вы установили 32-разрядную версию клиента Oracle и она корректно настроена. Попробуйте переустановить клиент, точно выбрав 32-разрядную версию.

3. **Права доступа**:
   - Убедитесь, что у учетной записи, под которой выполняется веб-сервис, есть достаточные права для доступа к каталогу с клиентом Oracle и его файлам. Иногда причина может заключаться в недостаточных разрешениях на чтение.

4. **Зависимости**:
   - Убедитесь, что все необходимые зависимости для работы клиента Oracle, такие как Microsoft Visual C++ Redistributable, установлены. Для некоторых версий клиента Oracle нужны специфические версии библиотек.

5. **Проверка конфигурации случая**:
   - Если вы используете конфигурацию TNS, убедитесь, что файл `tnsnames.ora` корректно настроен и находится в директории, указанной в переменной `TNS_ADMIN`.

6. **Дебаггинг**:
   - Чтобы получить более подробные данные об ошибке, вы можете включить отладку для OCI. Для этого добавьте следующее в реестр:
     - `HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\Client<Ваш клиент>\`
     - Создайте строковое значение `EnableTracing` и установите его в `TRUE`.
     - Перезапустите веб-сервис и посмотрите на журналы отладки.

7. **Альтернативные решения**:
   - Если проблема сохраняется, попробуйте протестировать работу через другой инструмент или приложение (например, через приложение на Python или C#), чтобы выяснить, проблема в коде вашего приложения или в конфигурации клиента.

8. **Обновление клиента**:
   - Рассмотрите возможность обновления клиента Oracle до более свежей версии, если такая доступна. Иногда в новых версиях исправляют известные ошибки.

Если указанные шаги не помогли, попробуйте обратиться на форумы или к технической поддержке Oracle с описанием вашей проблемы и информации о конфигурации системы.
А эта версия сертифицирована для Windows Server 2019? Раз ошибки пошли после переноса c 2008-го, чую, проблема именно в версии. 

Attempt to load Oracle client libraries threw BadImageFormatException

Вот это тоже похоже. Раньше в заголовке PE бывала версия 6.x, а потом внезапно стала 10. Или даже не знаю, сколько там у Server 2019.
Похожие вопросы