Как настроить ODBC-соединение с Oracle с помощью FireDAC?

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

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

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

# TNSNAMES.ORA Network Configuration File: C:oracleora92
etworkadmin	nsnames.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-разрядных драйвера ODBC Oracle:

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

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

Драйвер ODBC версии 6, дающий ему имя записи TSNAMES.ORA для «Server»:

введите описание изображения здесь

и идентификатор драйвера Oracle версии 11:

введите описание изображения здесь

Для этого второго я добавил еще одну запись 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:appjanproduct11.2.0client_1SQORA32.dll)

введите описание изображения здесь

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

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

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


Что также не помогло:

  • Переустановка 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 г.

oracle,delphi,odbc,firedac,delphi-10.2-tokyo,

5

Ответов: 2


Что также не помогло:

  • Переустановка 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 г.
25
2 принят

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

Единственное, что нужно установить для TFDCOnnection:

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

с lODBCNameименем DSN системы ODBC.

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


1

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

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

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

оракул, Дельфы, ODBC, firedac, Дельфы-10,2-Токио,
Похожие вопросы