Как мне настроить соединение ODBC с Oracle, используя FireDAC? - PullRequest
0 голосов
/ 25 июня 2018

Я могу успешно подключиться к Oracle через собственные драйверы, но не могу заставить работать соединение ODBC.Клиентское программное обеспечение Oracle 11g установлено на моем 64-разрядном компьютере с Windows 7, а также 32-разрядные драйверы ODBC, загруженные из Мгновенные клиентские загрузки для Microsoft Windows 32-разрядные .

Позвольте мнесначала опишите успешные соединения:

TNSNames.ORA содержит данные для установки Oracle 10:

# TNSNAMES.ORA Network Configuration File: C:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

VS2003-2005-10.TimeTellBV.nl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = VS2003-2005-10)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = Orclvs10)
    )
  )

Я настроил TFDConnection с помощью

DriverName := S_FD_OraId;
Params.Database := 'VS2003-2005-10';

В качестве альтернативыЯ могу обойти TNSNAMES.ORA, указав непосредственно:

DriverName := S_FD_OraId;
Params.Database := '(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = VS2012-2012.timetellbv.nl)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl12.timetellbv.nl) ))';

(Как вы можете видеть, это еще один сервер Oracle, которого нет в TNSNAMES.ORA)

Теперь неудачные попыткичерез ODBC

Установлены два 32-разрядных драйвера Oracle ODBC:

  • Microsoft ODBC для Oracle версии 6.01.7601.19135 - я думаю, что это пришло с ОС Win7
  • Oracle в instantclient_11_2 версии 11.02.00.04 - я установил это вручную из источника, упомянутого вверху (работает как администратор, как указано в Примечания к выпуску Oracle Instant Client ODBC ).

Я настроил тwo Системные уведомления о доставке через эти драйверы, но ни один из них не работает.

Драйвер ODBC версии 6 с присвоением ему имени записи TSNAMES.ORA для 'Server':

enter image description here

и версия драйвера Oracle версии 11:

enter image description here

Для этого второго я добавил еще одну запись в TNSNAMES.ORA, так какдиалоговое окно, очевидно, предполагало, что мне нужно пройти через этот файл:

VS2012-2012.TimetellBV.nl =
  (DESCRIPTION=
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = VS2012-2012)(PORT = 1521))
    )
    (CONNECT_DATA = 
      (SERVICE_NAME = orcl12.timetellbv.nl)
    )
  )  

Я настроил TFDConnection с помощью

DriverName := S_FD_ODBCId;
Params.Add('DataSource=' + lODBCName);   // The ODBC DSN Name
Params.Database := lDataSection.Values[INISTRING_DATABASENAME];

И этот код, и кнопку тестирования в 32-битном ODBCОшибка администратора с ошибкой:

Unable to connect
SQLState IM003
The specified driver could not be loaded due to system error 127: cannot find procedure<br />
(Oracle in instantclient_11_2; D:\app\jan\product\11.2.0\client_1\SQORA32.dll)

enter image description here

Эта папка, в которой установлено мое клиентское программное обеспечение Oracle, содержит SQORA32.DLL (и другие) инаходится в моем системном пути.

Я пробовал все виды изменений, включая / исключая доменное имя, имя базы данных и т. д., без успеха.

Как правильно настроить ODBCподключение для подключения к Oracle, которое будет использоваться в 32-разрядном приложении Delphi-Tokyo через FireDAC?


Что такжеot help:

  • Переустановка 32-разрядного распространяемого пакета Visual Studio 2013
  • Скопируйте файл sqora32.dll в папку Windows SysWOW64
  • Установка переменной среды ORACLE_HOME в d: \app \ jan \ product \ 11.2.0 \ client_1 \
  • Установка переменной среды TNS_ADMIN в d: \ app \ jan \ product \ 11.2.0 \ client_1 \
  • Переименование sqora32.dll в SQORA32.dll
  • Заменил c: \ windows \ syswow64 \ mfc42.dll от 11 марта 2011 года на новый из домашней папки Oracle от 27 апреля 2011 года

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Я уже сталкивался с подобной проблемой.

Я могу использовать SQLPLUS или JDBC для подключения к базе данных Oracle, но когда я пытаюсь определить соединение ODBC или соединение .Net Linq, это не работает.

Затем я изменил свой файл TNSNAMES.ora и заменил SERVER-NAME на SID , и внезапно стало возможным ODBC-соединение.

0 голосов
/ 29 июня 2018

Я не знаю, что случилось.Я нашел исполняемый файл установщика клиента (т. Е. Он отличается от «мгновенного клиента», у которого нет установщика, и чья переустановка тоже не помогла), очистил мою ВМ от всех вещей Oracle, запустил установщик с выбором «Администратор» (=все доступное программное обеспечение в пакете) и это, наконец, работает.ODBC был также установлен.

Для TFDCOnnection необходимо установить только:

DriverName := S_FD_ODBCId;
Params.Add('DataSource=' + lODBCName);

с lODBCName в качестве имени DSN системы ODBC.

(я намеревалсяоставить это в качестве комментария для пользователей 10K, а затем удалить вопрос, но это невозможно, так как сегодня я наложил на него награду. Ну, может, это кому-нибудь еще подойдет).

...