пуск (там Windows), нормально подключается к Ораклу.
Но ошибка возникает, когда веб-сервис на дотнете, развёрнутый на той же машине, используя этот же драйвер, пытается подключиться же Ораклу.
Креды заводят те же, что и при подключении чисто через драйвер. При попытке подключения веб-приложения возвращается эта ошибка:
ERROR [HY000] [Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error ERROR [IM006] [Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed ERROR [HY000] [Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed[Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error
2) В предыдущем сообщении я привёл логи сервера. Возможно, эти логи описывают какие-то другие попытки подключения, не относящиеся к моей ситуации. Попробую получить новые.
3) В веб-сервисе есть поля, которые заполняются: сервер, пользователь, пароль, порт. Можно также дописать дополнительные параметры, которые пойдут в строку подключения. Строка подключения формируется где-то внутри, поэтому в чистом виде привести я её не могу.
Вопрос: почему драйвер подключается нормально, а веб-приложение, используя этот же драйвер, не может подключиться?
для подключения к базе недостаточно сервера и порта, нужен еще SID или service_name
Спасибо! Попробую его дописать в разделе "Дополнительные параметры" в формате DBQ=ORCL;
Так и вышло, прописал в дополнительных параметрах SID, и подключение произошло. Спасибо Вам ещё раз!
Но Вы имейте в виду что вариант с SID лучше рассматривать как временный фикс - и лучше поскорее перейти на SERVICE_NAME. Т.е. технически соединение через SID работает, но Oracle рекомендует, да это и так понятно - соединяться с базой через Сервис. Использование сервисов даёт гибкость и множество возможностей по "незаметному" для приложения перенастройке базы, возможность для администратора переключить все коннекты на определённый узел в RAC кластере, или на Stand-By базу, или указать для сервиса какие-то QOS настройки ресурсов (CPU, память, пропускная способность I/O). Так же все High Availability Features вроде TAC, TAF, FAN - все они базируются на сервисах. Всё это возможно с Сервисами и невозможно при соединении через SID. Может всё перечисленное Вам и не нужно прямо сейчас, но если сразу все сделать и настроить со стороны приложения правильно - то в будущем у Вас будут "развязаны руки", и если например сейчас у Вас база Single Instance / no Data Guard, но в будущем Вы выростите и введёте кластер и стендбай - то со стороны приложения все уже будет готово. Там конечно ещё будут нюансы вроде SCAN адреса, использования TCP или TCPS - но суть думаю Вы поняли
Спасибо за подробный совет, буду пробовать!
+ я вообще советую для разных приложений/групп приложений поднимать отдельные сервисы
Да, я видел базы в которых десятки сервисов (реально и 50 и 70 и под 100 сервисов), причём у всех свои настройки - какие-то прибиты к нодам кластера, какие-то "RO" (читай "Read-Only", работают только на Stand-By и при смене ролей "переезжают" на новый Stand-By), ну и тд. В общем, выглядит круто
Мы так делали еще лет 5 назад
Называются они Role based services
Обсуждают сегодня