Perl скрипт поднимает oci.dll ошибка, DBD - PullRequest
2 голосов
/ 27 июля 2011

У меня есть сценарий perl, который подключается к базе данных Oracle, открывает текстовый файл и загружает данные из файла в таблицу базы данных. Этот сценарий отлично работает на моей машине для разработки (32-разрядная версия Windows XP), однако при загрузке Сценарий к производственному серверу (Windows 2003 64-разрядная версия) и запустить его из командной строки, он открывает perl.exe - не удается найти компонентные окна, в сообщении говорится

Это приложение не удалось запустить, потому что OCI.dll не был найден. Повторная установка приложения может решить эту проблему.

Вывод командной строки:

install_driver (Oracle) не удалось: не удается загрузить 'C: /Perl64/lib/auto/DBD/Oracle/Oracle.dll' для модуля DBD :: Oracle: load_file:% 1 не является допустимым приложением Win32 в C: /Perl64/lib/DynaLoader.pm строка 191. в (eval 14) строка 3 Компиляция failde in require в (eval 14) строке 3. Возможно, требуется общий доступ библиотека или dll не установлена, где ожидается в c: \ Гарантия \ ГарантияImport.pl строка 15

Я переустановил клиент oracle, я попытался удалить активный perl и клиент oracle, а затем установить клиент oracle перед perl, поскольку слышал, что это может вызвать проблему.

Я подумал, что это могут быть разрешения, поэтому я написал простой Perl-скрипт для открытия в oci.dll и вызвал ошибку, если не смог, он смог открыть его правильно.

Я убедился, что C: \ oracle \ product \ 10.2.0 \ client_1 \ bin находится в переменной окружения PATH.

Я могу подключиться к базе данных, используя SQLPlus

Я добавил OCI.dll в тот же каталог, что и скрипт perl.

и у меня наконец-то закончились идеи ... может кто-нибудь что-нибудь предложить, я рву свои волосы, пытаясь заставить это работать.

Подробнее Сервер работает под управлением ActivePerl 5.14.1 Build 1401 (64-разрядная версия) База данных Oracle 10 г Клиент Oracle 10.2.0

Ответы [ 2 ]

3 голосов
/ 20 января 2013

У меня была похожая проблема, но для 64-битной версии Perl.Мне удалось решить эту проблему, получив правильные клиентские библиотеки и прочитав это руководство:
http://www.pythian.com/news/11115/dbdoracle-and-windows-64bit/

По сути, я использую Oracle 11g XE R2, который поставляется только как 32-битный.Поэтому я подозревал, что он ищет 64-битные клиентские библиотеки и не находит их.Итак я скачал:
instantclient-basic-windows.x64-11.2.0.3.0.zip
instantclient-sqlplus-windows.x64-11.2.0.3.0.zip
instantclient-sdk-windows.x64-11.2.0.3.0.zip
From:
http://www.oracle.com/technetwork/topics/winx64soft-089540.html
И установлен в c: \ oraclexe \ instantclient_11_2

Я добавил их в свой путь:
C:>set PATH = c: \ oraclexe \ instantclient_11_2;% PATH%
Но, к сожалению, ошибка не исчезла: (

При проверке моего PATH:
echo% PATH%
Я мог видеть, что наборбыло проигнорировано. Я думаю, это была проблема с разрешениями.

Поэтому я отредактировал переменную системного пути и перезапустил командную строку. Это устранило проблему и позволило мне подключиться:)

1 голос
/ 27 июля 2011

Смешали ли вы 32-битные и 64-битные компоненты? Очевидно, вам нужен 64-битный Perl, 64-битный DBI и DBD :: Oracle и 64-битные dll для клиента Oracle. Я только предлагаю вам проверить, так как в сообщении об ошибке указано «не является допустимым приложением Win32 в».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...