|
|
|||||||||||||||||||||||||||||
|
Вызов 32-bit внешних процедур из PL/SQL на Oracle 11g R2 64-bitИсточник: habrahabr AndyBW
Сразу скажу, что теперь можно одновременно использовать как 32 так и 64 разрядные внешние процедуры, а разобравшись в проблеме конфигурирование выполняется весьма несложно. Столкнувшись с необходимостью организовать работу библиотек используемых ранее на 32 разрядом Oracle обнаружил, что в новой версии Oracle данный аспект сильно изменен в отличие от предшествующих версий.
Вот перечень некоторых отличий настройки от предшествующих версий Oracle:
Приступим к настройке OracleПервое, что необходимо сделать - выполнить выборочную установку 32-bit Oracle Instant Client. Достаточно выбрать для установки: Oracle Database Utilities и Oracle Net Listener. В качестве пути установки я установил: [диск]:\oracle\product\11.2.0\client_32. В завершении установки автоматически будет запущен Net Configuration Assistant - которым, рекомендуется воспользоваться, что бы избежать впоследствии возможных ошибок, как например использование утилиты netca, которая будет запущена для конфигурирования прослушивателя (LISTNER) из ORACLE_HOME по умолчанию, а он окажется 64-разрядный.
Опишу процесс настройки нового прослушивателя через Net Configuration Assistant:• В окне конфигурации выбрать пункт: Listener configuration и далее • Выбрать Add и далее • Задать имя LISTENER_32 и далее • Из колонки Selected Protocols убрать протокол TCP и добавить протокол IPC и далее • Ввести в поле IPC Key value: IPC_EXT32 и далее • Отказаться от конфигурирования другого прослушивателя и далее, далее, готово После завершения работы Net Configuration Assistant, можно проверить сформировавшийся файл конфигурации прослушивателя %ORACLE_HOME%\client_32\NETWORK\ADMIN\listener.ora, выглядеть он должен так, как указано в примере, разве что за исключением пути до директории Oracle:
В завершении конфигурации прослушивателя необходимо сконфигурировать сервисы, выполнив, например, services.msc. Вновь созданный прослушиватель, по умолчанию не запускается автоматически, что логично будет исправить.
Последнее, о чем стоит упомянуть в описании системной конфигурации - это новый файл конфигурации extproc.ora. Данный файл необходимо сконфигурировать как в 32-bit, так и в 64-bit инстансах Oracle. Конфигурационный файл, оснащен вполне исчерпывающим описанием конфигурации, и я лишь приведу пример настройки. Самое простое, это указать значение параметра EXTPROC_DLLS=ANY; либо указать точный путь, используя опцию ONLY:[MY_PATH\my.dll].
Особенности конфигурирования библиотеки OracleДля 64-bit библиотек всё остается, без каких либо изменений, но для указания Oracle, какие библиотеки необходимо запустить, используя 32-bit extproc, необходимо создать символическую ссылку и переконфигурировать скрипт создания библиотеки. Создадим символическую ссылку:
Используя пример, изменим скрипт создания объекта библиотеки:
На этом особенности конфигурировния библиотек заканчиваются.
Настройка переменных окруженияЯ не выполнял тестирования с использованием переменных окружения, таких как TNS_ADMIN, ORACLE_HOME, LD_LIBRARY_PATH и прочих. В моем случае в переменных окружения они отсутствуют, а переменная окружения Path содержит последовательно путь до 64-bit инстанса базы данных, а затем до 32-bit инстанс клиента. Ссылки по теме
|
|