Установка Oracle OLE DB Provider 32 бит в Win Server 2012 для работы с 1С:8

Опубликовал Александр Биттиров (alex_bitti) в раздел Администрирование - Системное

В статье приводится описание установки драйвера Oracle OLE DB(OraOLEDB11.dll) для подключения к базе из 1С8.

Идея написать заметку про установку драйвера на данном ресурсе возникла после того, как, столкнувшись с необходимостью подобной установки, не нашел четкого описания возможных проблем при установке ни на профильных сайтах по базам данных, ни на 1С-ных. Я специализируюсь на 1С и, при наличии базовых знаний по администрированию, оказался в сложной ситуации. Целью данной публикации ставлю сэкономить пару тройку часов своим коллегам.

Итак, постановка задачи: через внешний драйвер OLE DB кодключиться к базе Oracle по ADO.  

  Соединение = Новый  COMObject("ADODB.Connection");
    СтрокаПодключения  = "Provider=OraOLEDB.Oracle.1;Password=;Persist Security Info=TRUE;User ID=;Data Source=;";    
    
    Попытка
        Соединение.Open(СтрокаПодключения);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;

Данный код в 1С работает только в случае правильно установленного драйвера. В противном случе получите описание ошибки в исключении, если заранее об этом позаботитесь в коде 1С.

В моем распоряжении оказался дистрибутив клиента версии 10.2, в файле tnsnames строка

# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora 

Распаковав архив, меня интересовал OraOLEDB11.dll, для установки  потребовался шаблон ключа реестра, конфигурационный батник из прочего содержимого дистрибутива потребовалось еще редактировать файл tnsnames.ora . 

Далее опишу последовательность своих действий.

Настраиваю tnsnames.ora, открыв в текстовике,  

<MyHome> =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = <MySvrName>)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = <MyHome>)
      (SERVER = DEDICATED)
    )
  )

У меня он выглядет приблизительно так. Где <MyHome>, <MySvrName>  я заменил реальные названия.

Далее при помощи запуска  configure.bat с ключом oledb <MyHome> ,   при этом шаблон ключа key.reg должен скопироваться в реестр вашего компьютера (ниже еще будут описаны конкретно ветки где это все находится).

В самом конце я через regsvr32 зарегал сам OraOLEDB11.dll.

Казалось бы, о чем заметка. Делалось все на Windows Server 2012 R2. Итак, проблема в том, что сначала у меня ничего не получилось. Проблема крылась в том, что это драйвер 32 бит, и Толстый 1С тоже, а вот нажав WIN+R, вы откроете совсем не ту консоль, которая вам нужна, это 64-битная консоль, которая вносит изменения в 64-битный REGEDIT(!) . 

Многие знают, что консоль 64-бита и 32 уже лет 10 как, но что REGEDIT тоже бывает двух видов, для меня было откровением, т.к. это по сути по нашему 1С-ному тоже клиент и фактически смотрит совсем не в ТОТ реестр, в который надо. Правильная наша 32-битная консоль находится C:\Windows\SysWOW64\cmd.exe, и только из нее нужно смотреть regedit, должна появиться ветка в HKEY_LOCAL_MACHINE SOFTWARE Oracle KEY <ваш ключ> (внутри всякие нужные ORACLE HOME ). 

Надеюсь, статья найдет своего читателя, потому что я всего этого собранного в одном месе не нашел. Спасибо.

p.s. в 32-битной системе была возможность протестировать соединение через udl,  в 2012 r2 не нашел в списке драйверов этого файла.

См. также

PowerTools от 1 000
Комментарии
1. Дмитрий Иванчура (Dmitryiv) 105 30.11.16 10:18 Сейчас в теме
...и не только редактор реестра двухформатный. Оснстка ODBC - аналогично. Интерпретатор VBS тоже.