(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Вызов 32-bit внешних процедур из PL/SQL на Oracle 11g R2 64-bit

Источник: habrahabr
AndyBW

Сразу скажу, что теперь можно одновременно использовать как 32 так и 64 разрядные внешние процедуры, а разобравшись в проблеме конфигурирование выполняется весьма несложно.

Столкнувшись с необходимостью организовать работу библиотек используемых ранее на 32 разрядом Oracle обнаружил, что в новой версии Oracle данный аспект сильно изменен в отличие от предшествующих версий.


Конфигурирование было выполнено для следующих компонентов:
• Windows 2008 R2 64-bit
• Oracle 11g R2 64-bit
• Oracle Instant Client 11.2.0.2 32-bit

Вот перечень некоторых отличий настройки от предшествующих версий Oracle:
• extproc32.exe - теперь не используется;
• оснастку Instant Client теперь необходимо устанавливать в отдельный ORACLE_HOME;
• появился новый конфигурационный файл настройки extproc - %ORACLE_HOME%\hs\admin\extproc.ora;
• файлы логов LISTNER размещаются в - %ORACLE_HOME%\diag\tnslsnr\[hostname].

Приступим к настройке 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:

LISTENER_32 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = IPC_EXT32))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
  )

SID_LIST_LISTENER_32 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = callout32)
      (ORACLE_HOME = [диск]:\oracle\product\11.2.0\client_32)
      (PROGRAM = extproc)
    )
  )

ADR_BASE_LISTENER_32 = [диск]:\oracle

В завершении конфигурации прослушивателя необходимо сконфигурировать сервисы, выполнив, например, services.msc. Вновь созданный прослушиватель, по умолчанию не запускается автоматически, что логично будет исправить.
В том числе, нужно дополнить файл конфигурации tnsnames.ora, причем это можно сделать в основном инстансе установленной БД, например: %ORACLE_HOME%\dbhome_1\NETWORK\ADMIN\tnasnames.ora. Файл конфигурации необходимо дополнить следующей записью:

extproc_connection_data32b =
     (DESCRIPTION =
        (ADDRESS = (PROTOCOL = IPC)(KEY = IPC_EXT32))
        (CONNECT_DATA =
        (SID = callout32)
        )
     )

Последнее, о чем стоит упомянуть в описании системной конфигурации - это новый файл конфигурации extproc.ora. Данный файл необходимо сконфигурировать как в 32-bit, так и в 64-bit инстансах Oracle. Конфигурационный файл, оснащен вполне исчерпывающим описанием конфигурации, и я лишь приведу пример настройки. Самое простое, это указать значение параметра EXTPROC_DLLS=ANY; либо указать точный путь, используя опцию ONLY:[MY_PATH\my.dll].

Особенности конфигурирования библиотеки Oracle


Для 64-bit библиотек всё остается, без каких либо изменений, но для указания Oracle, какие библиотеки необходимо запустить, используя 32-bit extproc, необходимо создать символическую ссылку и переконфигурировать скрипт создания библиотеки.

Создадим символическую ссылку:

CREATE DATABASE LINK AGENT_LINK_32B USING 'extproc_connection_data32b';

Используя пример, изменим скрипт создания объекта библиотеки:
CREATE OR REPLACE LIBRARY MY_SCHEMA.MY_NAME IS '[диск]:\oracle\product\11.2.0\client_32\BIN\my.dll' AGENT "agent_link_32b";

На этом особенности конфигурировния библиотек заканчиваются.

Настройка переменных окружения


Я не выполнял тестирования с использованием переменных окружения, таких как TNS_ADMIN, ORACLE_HOME, LD_LIBRARY_PATH и прочих. В моем случае в переменных окружения они отсутствуют, а переменная окружения Path содержит последовательно путь до 64-bit инстанса базы данных, а затем до 32-bit инстанс клиента.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Oracle »
Написать редактору 
 Рекомендовать » Дата публикации: 12.11.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Personal Edition Named User Plus License
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Standard Edition 2 Processor License
Business Studio 4.2 Enterprise. Конкурентная лицензия + Business Studio Portal 4.2. Пользовательская именная лицензия.
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
СУБД Oracle "с нуля"
Краткие описания программ и ссылки на них
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Кто, что знает за карту рассрочки Совесть? (1)
Иногда требуется купить что-то очень нужное, но выделить средства нет возможности. В этом случае...
 
Access, Ключевое поле, Счетчик (10)
Подскажите пожалуйста, как изменить в Access в ключевом поле (счетчик последовательно),...
 
Решение задач на оптимизацию с помощью MS Excel (4)
Zdravstvuyte, ya pro4itala danniy material, no ne smogla ponat kakie formuli ispolzovalis v...
 
Отличается ли ДрифтКазино от беттинга? (4)
Друзья, давно заметил, что на Дрифте уже несколько месяцев во всю рекламируется и предлагается...
 
Сайт инструмент (1)
Я бывший программист пользовался 1 сайтом проверенным он мне действительно помог я блогодоря...
 
 
 



    
rambler's top100 Rambler's Top100