169 похожих чатов

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

пуск (там 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) В веб-сервисе есть поля, которые заполняются: сервер, пользователь, пароль, порт. Можно также дописать дополнительные параметры, которые пойдут в строку подключения. Строка подключения формируется где-то внутри, поэтому в чистом виде привести я её не могу.

Вопрос: почему драйвер подключается нормально, а веб-приложение, используя этот же драйвер, не может подключиться?

9 ответов

59 просмотров

для подключения к базе недостаточно сервера и порта, нужен еще SID или service_name

Сергей-Белоусов Автор вопроса
ZhekaPPP
для подключения к базе недостаточно сервера и порт...

Спасибо! Попробую его дописать в разделе "Дополнительные параметры" в формате DBQ=ORCL;

Сергей-Белоусов Автор вопроса
ZhekaPPP
для подключения к базе недостаточно сервера и порт...

Так и вышло, прописал в дополнительных параметрах 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 - но суть думаю Вы поняли

Сергей-Белоусов Автор вопроса
Ро
Но Вы имейте в виду что вариант с SID лучше рассма...

Спасибо за подробный совет, буду пробовать!

Ро
Но Вы имейте в виду что вариант с SID лучше рассма...

+ я вообще советую для разных приложений/групп приложений поднимать отдельные сервисы

xtender
+ я вообще советую для разных приложений/групп при...

Да, я видел базы в которых десятки сервисов (реально и 50 и 70 и под 100 сервисов), причём у всех свои настройки - какие-то прибиты к нодам кластера, какие-то "RO" (читай "Read-Only", работают только на Stand-By и при смене ролей "переезжают" на новый Stand-By), ну и тд. В общем, выглядит круто

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта