:: Visual Foxpro, Foxpro for DOS
Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Всем привет.

Как подсоединиться FOXom к ORACLE 12C (версия 2, т.е. самая новая) используя SQLSTRINGCONNECT( ) зная?:

1: host ip: 192.168.131.125
2: port: 1521
3: SID: "orcl"
4: username: "имя"
5: password: "пароль"

Не будет ли у кого примера такого рода соединения?



Исправлено 5 раз(а). Последнее : AdamAry, 22.06.17 15:03
Ratings: 0 negative/0 positive
Re: Строка подсоединения к Oracle
Grin

Сообщений: 1083
Откуда: Kiev
Дата регистрации: 05.12.2000
SQLSTRINGCONNECT('Driver=Oracle in OraClient10g_home1;uid=имя;pwd=пароль;DBQ=orcl')
Ratings: 0 negative/1 positive
Re: Строка подсоединения к Oracle
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Смотря какой ODBC драйвер используется, смотря как настроен Oracle-клиент...
Например:
ln1 = SQLSTRINGCONNECT("Driver=Oracle in instantclient_12_1;uid=имя;pwd=пароль;DBQ=192.168.131.125:1521/orcl")
Работает если в sqlnet.ora включен ezconnect способ разрешения имён. порт 1251 можно не указывать, т.к. это стандартный номер для оракла.
Или
ln1 = SQLSTRINGCONNECT("Driver=Oracle in instantclient_12_1;uid=имя;pwd=пароль;DBQ=MyTNS.SomeDomain.com")
Если в файле tnsnames.ora прописан идентификатор соединения "MyTNS.SomeDomain.com"
Формат его прописывания:
MyTNS.SomeDomain.com =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.131.125)(PORT = 1521))
    (CONNECT_DATA = (SERVICE_NAME = orcl))
  )
Для MS драйвера можно прямо в строке соединения весь этот длинный (DESCRIPTION=... указывать, однако я бы не советовал использовать MS драйвер без ОЧЕНЬ веских на то причин (т.к. он ОЧЕНЬ старый и кривой - местами до невозможности).
P.S. Использовать непосредственно IP (а не DNS имя машины) для такого рода настроек - это раскладывать грабли на своём пути - ну или обеспечивать себя тупой работой, что тоже может быть необходимо порой


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
У меня версия ORACLE 12.2

1: Откуда берётся "instantclient_12_1" после "in" ?
2: В sqlnet.ora прописано:
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
Значит ли это что включен ezconnect способ разрешения имён и порт 1521 можно не указывать?

3: а в tnsnames.ora:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = compname.AA.BB.RU)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.AA.BB.RU)
)
)
Тогда для строки подключения для использования Server SID использовать следующее?:

Driver={Oracle in OraDB12Home1};Server=serverSID;Uid=myUsername;Pwd=myPassword; // OraClient11g_home1

4:
Цитата:
однако я бы не советовал использовать MS драйвер без ОЧЕНЬ веских на то причин (т.к. он ОЧЕНЬ старый и кривой - местами до невозможности
Что использовать вместо него?



Исправлено 6 раз(а). Последнее : AdamAry, 19.06.17 15:46
Ratings: 0 negative/0 positive
Re: Строка подсоединения к Oracle
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
AdamAry
1: Откуда берётся "instantclient_12_1" после "in" ?
Это просто название драйвера. Может быть совершенно произвольным - вообще ВСЁ, не только "часть после in" - как в реестре установщик пропишет, так оно и будет называться. А то как он прописывает - зависит от того какой Oracle клиент установлен. "Полные" пишут имя %OraHome%, instant - имя папки в которой развёрнут этот клиент... Это совершенно не принципиально.
Список зарегистрированных ODBC драйверов можно посмотреть в утилите odbcad32.exe - только для x64 систем и фокса следует запускать утилиту из папки SYSWOW64, т.к. по умолчанию запускаемая из папки SYSTEM32 утилита показывает 64-битный драйверы, а фокс 32-разрядный и может использовать только 32-разрядные драйвера.
AdamAry
2: В sqlnet.ora прописано:
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
Значит ли это что включен ezconnect способ разрешения имён и порт 1251 можно не указывать?
Да, это значит что EZCONNECT разрешён. Порт можно не указывать если он 1251 - это "умолчание" оракла.
AdamAry
3: а в tnsnames.ora:
ORCL =
(DESCRIPTION =....
Тогда какова строка подключения?
Такая же, но с элементом DBQ=ORCL;

AdamAry
Что использовать вместо него?
Оракловский драйвер. Только ознакомится с особенностями его работы - в частности с NLS настройками влияющими на то запятую или точку пропишет фокс в поля типа N(x,y) - с дробной частью. Иначе будут "пропадать копейки".


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 19.06.17 14:31
Ratings: 0 negative/1 positive
Re: Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
1:
Igor Korolyov
Такая же, но с элементом DBQ=ORCL;
А почему появилось "DBQ=...." и что это за птица?
Почему настройки которые я показал развернули именно в сторону использования "DBQ"?
Что конкретно из
tnsnames.ora:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = compname.AA.BB.RU)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.AA.BB.RU)
)
)
повлияло на то чтобы использовать "DBQ"?
2:
Igor Korolyov
Оракловский драйвер. Только ознакомится с особенностями его работы - в частности с NLS настройками влияющими на то запятую или точку пропишет фокс в поля типа N(x,y) - с дробной частью. Иначе будут "пропадать копейки".
Где и в какой директории OS Windows 10 располагается Оракловский драйвер и каковы особенности работы с ним в фоксе?
3:
Цитата:
в частности с NLS настройками влияющими на то запятую или точку пропишет фокс в поля типа N(x,y) - с дробной частью. Иначе будут "пропадать копейки"
В каком файле эти настройки хранятся и что надо изменить?


Исправлено 4 раз(а). Последнее : AdamAry, 19.06.17 15:33
Ratings: 1 negative/0 positive
Re: Строка подсоединения к Oracle
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
AdamAry, что вам мешает настроить DSN и прекратить мучения?
Цитата:
SQLConnect(DSNOra,UserOra,PassOra)

DSNOra - имя вашего настроенного источника DSN
UserOra - ваш "логин"
PassOra - ваш пароль

И всё...

Из хелпа -
Цитата:
Устанавливает подключение к источнику данных. Есть две версии синтаксиса.
SQLCONNECT([nStatementHandle])


SQLCONNECT([cConnectionName | cDataSourceName [, cUserID [, cPassword ]][, lShared]])


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 19.06.17 18:34
Ratings: 0 negative/1 positive
Re: Строка подсоединения к Oracle
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
AdamAry
А почему появилось "DBQ=...." и что это за птица?
Параметр строки подключения указывающий имя источника данных.
docs.oracle.com
AdamAry
Почему настройки которые я показал развернули именно в сторону использования "DBQ"?
Потому что именно через этот параметр задаётся имя источника данных для ODBC драйвера от оракла.
AdamAry
Что конкретно из ... повлияло на то чтобы использовать "DBQ"?
Ничего.
AdamAry
Где и в какой директории OS Windows 10 располагается Оракловский драйвер и каковы особенности работы с ним в фоксе?
Он не располагается в "директории OS Windows 10". Его файлы лежат в структуре папок оракловского клиента. Список файлов и их назначение есть по ссылке выше. Никакого особого значения для работы с драйвером это не имеет.
"Особенности работы" обсуждались на форуме - потрудись уж сам поискать соответствующие темы.
AdamAry
В каком файле эти настройки хранятся и что надо изменить?
Ни в каком файле они не хранятся. Могут задаваться параметрами строки подключения (для новых версий драйвера, 12-й в том числе). Могут меняться командами ALTER SESSION SET ... посылаемыми на сервер после установления соединения. По умолчанию они определяются исходя из параметра NLS_LANG прописанного в реестре для "полных" установок оракл-клиента, или через одноименную переменную окружения (это работает и для Instant версий клиента).
Подробнее про "глобализацию", или, говоря иначе, "поддержку многоязычности" следует читать в документации. Начав с вот этой книги docs.oracle.com.
Я, естественно, не собираюсь пересказывать всё содержание 100500 книг описывающих работу с ораклом


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Igor, при попытке создать появляется:
[attachment 27861 4dsn.GIF]
[attachment 27860 dsn.GIF]



Исправлено 1 раз(а). Последнее : AdamAry, 20.06.17 16:00
Ratings: 0 negative/0 positive
Re: Строка подсоединения к Oracle
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Значит MS драйвер не может найти оракловского клиента. Что не понятно то в сообщении об ошибке?
Это и к лучшему, т.к. этот драйвер использовать не нужно.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Igor Korolyov
Это и к лучшему, т.к. этот драйвер использовать не нужно.
Цитата:
однако я бы не советовал использовать MS драйвер без ОЧЕНЬ веских на то причин (т.к. он ОЧЕНЬ старый и кривой - местами до невозможности).
1. Понял Igor. Драйвер MS использовать не будем. Тогда как подцепиться из фокса к ORACLEскому: HOME\bin\oracler12.dll
HOME это у меня d:\app\WindowsUserName\virtual\product\12.2.0\dbhome_1\

Если конечно я правильно указал HOME\bin\oracler12.dll.
oracler12.dll надо регистрировать или можно просто прописав к нему путь использовать напрямую dll без регистрации?

2. Вот из ораклового SQL Developer я подключаюсь к базе нормально как sys:
[attachment 27863 sqldeveloper4.GIF]
Причём этих семи параметров (всё выделенное жёлтым) достаточно для успешного подключения к базе данных.

Или вот подключаюсь успешно к созданному пользователю таким образом через SQL Developer:
[attachment 27864 sqldeveloper6.GIF]

Интересно, что использует SQL Developer для подключения?



Исправлено 5 раз(а). Последнее : AdamAry, 21.06.17 07:34
Ratings: 0 negative/0 positive
Re: Строка подсоединения к Oracle
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Пока у вас тут драйвер правильный не появится: %WINDIR%\SYSWOW64\odbcad32.exe - бесполезно строки соединений придумывать.

Если у вас ось 64х-битная.
Ratings: 0 negative/1 positive
Re: Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
У меня OS Windows 10 Enterprise 64 bit.
Ratings: 0 negative/0 positive
Re: Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Вот пример, но опять же Igor это работа если не ошибаюсь через ODBC драйвер MS:
aleksandr.ru

А как же к фоксу приноровить родную оракловую dll?



Исправлено 1 раз(а). Последнее : AdamAry, 21.06.17 09:06
Ratings: 0 negative/0 positive
Re: Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Вот wow:
support.microsoft.com



Исправлено 1 раз(а). Последнее : AdamAry, 21.06.17 09:03
Ratings: 0 negative/0 positive
Re: Строка подсоединения к Oracle
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
AdamAry
Тогда как подцепиться из фокса к ORACLEскому
Установить его - не просто "клиента" а именно компонент ODBC-драйвер. При том именно 32-разрядного (естественно для этого и сам клиент тоже должен быть 32-разрядным).
AdamAry
HOME\bin\oracler12.dll
HOME это у меня d:\app\WindowsUserName\virtual\product\12.2.0\dbhome_1\
Если конечно я правильно указал HOME\bin\oracler12.dll.
Неправильно. dll ODBC драйвера это файл sqora32.dll (даже для 64-разрядного драйвера имя файла такое). Плюс к нему используется несколько других файлов - их список есть в документации на которую я давал ссылку. Расположен он может быть где угодно - это зависит от того какой вариант оракл-клиента используется. Полный, с установкой, или Instant - где просто разворачиваются файлы из архива и прописываются некоторые переменные среды.
Использовать dll драйвера "напрямую" НЕЛЬЗЯ НИКАК. Она используется исключительно подсистемой ODBC винды (а уже её может использовать прикладная программа). Опять же всё это есть в приведенной документации - даже с картинками.
AdamAry
2. Вот из ораклового SQL Developer
Он не использует для работы ODBC драйвер. Есть много разных способов работы с сервером - ODBC драйвер, ADO провайдер, ADO.NET провайдер, JDBC драйвер (или провайдер, не в курсе явовской терминологии), прямые вызовы АПИ функций библиотеки oci.dll
Для фокса наиболее удобным и естественным является ODBC драйвер.
AdamAry
Интересно, что использует SQL Developer для подключения?
JDBC - либо "тонкий", либо "полновесный" вариант драйвера.
AdamAry
Вот пример, но опять же Igor это работа если не ошибаюсь через ODBC драйвер MS:
Нет, это инструкция по установке instant версии оракл-клиента, после чего в панели управления ODBC появится оракловский драйвер. MS драйвер, кстати, тоже после этого заработает, т.к. описывается разворачивание 32-разрядной версии клиента и драйвера. Впрочем, эта инструкция весьма кривая - лучше использовать официальную документацию. Тем более что речь не про WinXP/Win7 и не про 11-ю версию клиента...


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Igor Korolyov
Тогда как подцепиться из фокса к ORACLEскому
Установить его - не просто "клиента" а именно компонент ODBC-драйвер. При том именно 32-разрядного (естественно для этого и сам клиент тоже должен быть 32-разрядным).
У меня и база данных Oracle 12с и Client Oracle 12с оба 64 bit ные, причём оба на одном компе.
1. Сейчас получается мне нужно снести 64 битный клиент и поставить 32 битный, а он встанет в 64 битный OS Windows 10?
1.1. А нельзя не снося это проделать?
Как поставить только ".... именно компонент ODBC-драйвер" ничего не снося, или так не пойдёт?
1.2. А нельзя параллельно поставить и 64 бит и 32 битных Oracle клиентов на одной машине?
2. После того как прописал переменные среды windows: ORACLE_HOME и TNS_ADMIN смог создать в 64 битной "Администартор источника данных ODBC" источник, но он ведь не подходит для фокса, не так ли?



Исправлено 4 раз(а). Последнее : AdamAry, 22.06.17 08:04
Ratings: 0 negative/0 positive
Re: Строка подсоединения к Oracle
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
AdamAry
1. Сейчас получается мне нужно снести 64 битный клиент и поставить 32 битный
Сносить x64 не обязательно. Ставить x86(32bit) - нужно.
AdamAry
а он встанет в 64 битный OS Windows 10?
Должен. Хотя с этими ораклами постоянно какие-то затыки... Слишком массивный софт...
Instant по любому установится - но вот заработает ли... Надо проверять.
AdamAry
1.1. А нельзя не снося это проделать?
Можно. Но могут быть конфликты - до 12-й версии разноразрядные клиенты шибко "не дружили" друг с другом. Но это решалось переменными среды, в частности ПОРЯДКОМ перечисления путей в PATH. К какому первый путь вёл, тот и подхватывался. С 12-го вроде получше стало, по крайней мере 32-битный ODBC драйвер не пытается подхватить dll-ки 64-битного клиента, пропускает их и благополучно доходит до "своих" компонент.
AdamAry
Как поставить только ".... именно компонент ODBC-драйвер" ничего не снося, или так не пойдёт?
Только драйвер без клиента поставить нельзя - он не самодостаточный - по сути он (как и большинство других средств доступа) является интерфейсом к библиотеке oci.dll - а она уже и реализует всё взаимодействие с сервером.
Не удаляя x64 компоненты установить можно.
AdamAry
2. После того как прописал переменные среды windows: ORACLE_HOME и TNS_ADMIN смог создать в 64 битной "Администартор источника данных ODBC" источник, но он ведь не подходит для фокса, не так ли?
DSN это по сути лишь именованный набор параметров. Вопрос не в DSN как таковом, а в том какой драйвер он будет использовать. Если 64-битный, то фокс его использовать не сможет. Если 32-битный, то вполне. Тем паче что имена драйверов в 64-битной и 32-битной подсистемах вполне себе могут совпадать...


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Строка подсоединения к Oracle
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Благодарствую Igor. Ты меня здорово просветил.
Igor Korolyov
Если 64-битный, то фокс его использовать не сможет. Если 32-битный, то вполне.
Понял.
Igor Korolyov
1.1. А нельзя не снося это проделать?
Можно. Но могут быть конфликты - до 12-й версии разноразрядные клиенты шибко "не дружили" друг с другом. Но это решалось переменными среды, в частности ПОРЯДКОМ перечисления путей в PATH. К какому первый путь вёл, тот и подхватывался. С 12-го вроде получше стало, по крайней мере 32-битный ODBC драйвер не пытается подхватить dll-ки 64-битного клиента, пропускает их и благополучно доходит до "своих" компонент.
Ничего себе, не знал что до 11 включительно брался именно первый путь, в 12 версии пролучается 32 битный ODBC драйвер подхватывает автоматом dll 32 битного клиента, а 64 битный 64 битного, если я правильно понял.

Кстати, вот полезная команда для проверки работоспособности Oracle клиента, набирать надо прямо в CMD:
TNSPING orcl
Эта утилита делает пробный коннекшн и показывает полный путь до SQLNET.ORA.
Пути до HOME ов же можно посмотреть набрав:
PATH
А посмотреть значение ORACLE_HOME можно так:
SET ORACLE_HOME
Ефстефственно надо в переменных среды виндоуз создать:
ORACLE_HOME с полным путём до дома (D:\app\UserName\virtual\product\12.2.0\dbhome_1)
и
TNS_ADMIN со значением D:\app\UserName\virtual\product\12.2.0\dbhome_1\network\admin
Переменная TNS_ADMIN нужна чтобы система легко нашла tnsnames.ora, где прописан dbq.



Исправлено 9 раз(а). Последнее : AdamAry, 22.06.17 08:13
Ratings: 0 negative/0 positive
Re: Строка подсоединения к Oracle
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Все переменные среды (включая и PATH) можно посмотреть в консоли по команде set.
ORACLE_HOME нужен некоторым утилитам, но тому же ODBC драйверу или ADO.NET провайдеру или той же утилите sqlplus эта переменная не нужна - хватает наличия пути до dll в PATH.
Ещё может быть очень полезной для instant клиентов переменная NLS_LANG - задающая и региональные настройки и, что более важно, кодировку с которой будет работать клиент. При том для фокса предпочтительнее выставлять значение AMERICAN_AMERICA.CL8MSWIN1251 - в "английской" локали изначально "правильная" десятичная точка стоит, а в русской - убогая запятая, которая приводит к проблемам с дробными числами.


------------------
WBR, Igor
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 20 (Гостей: 20)

© 2000-2024 Fox Club 
Яндекс.Метрика