|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Всем добрый день! Я занимаюсь разработкой на PHP и приходится работать с базами Oracle, поэтому прошу прощения, если задаю примитивные вопросы. Для коннекта пользуюсь instantclient (12.1.0.2.0). Проблема в том, что по одним алиасам (net_service_name в терминологии Oracle) подключение проходит нормально, по другим - либо неверные логин и пароль, либо ошибка адаптера, хотя по полному дескриптору соединения в виде host:1521/service соединение устанавливается без проблем. Что интересно, через sqlplus (работаю в Win10) к проблемной базе не удаётся подключиться никакими ухищрениями - выдаёт вышеупомянутые ошибки. А вот через SQLdeveloper или из phpStorm - получается. Может быть кто-то подскажет как такое возможно и как настроить алиасы так, чтобы соединение устанавливалось именно по TNS? Чем они принципиально отличаются от других TNS, с которыми всё нормально? И ещё. Правильно ли я понимаю, что host в дескрипторе не обязательно должен резолвиться через DNS? Оракл же как-то самостоятельно его резолвит? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 12:41 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
На компе может быть несколько ORACLE_HOME, в каждой из которых может быть свой tnsnames.ora Можно указать директорию с общим tnsnames.ora, где любой Oracle Client будет искать файлы настройки TNS (переменная TNS_ADMIN) 20879477 ((PROTOCOL=TCP)(HOSTNAME=...)) - это уровень TCP/IP протокола, сам oracle этим не занимается. Даже если используется oracle gds (для RAC), то tcp dns все равно используется ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 12:58 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Vadim Lejnin, У меня в окружении только по одному экземпляру переменных ORACLE_HOME, TNS_ADMIN и LD_LIBRARY_PATH. Все ведут в директорию instantclient. Все host пингуются без проблем. Все по короткому имени (не FDQN). Но одни работают по TNS, а другие выдают либо ошибку авторизации, либо ошибку адаптера, хотя по полному дескриптору подключаются из SQLdeveloper и phpStorm. Вот думаю, может что-то не так прописано для listeners на сервере. Или действуют какие-то блокировки по IP, о которых я не знаю... Но тогда коннекта вообще не было бы ни так ни сяк. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 14:04 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Bambarbeyaлибо ошибку авторизации Ошибка авторизации, как-бы это и есть "ошибка авторизации" Bambarbeyaлибо ошибку адаптера обычно это: Антивирусы, FireWall, неправильно-криво установленный клиент Можно включить лог Net80 и посмотреть на чем именно падает. Возможно возникнут идеи. А вообще: Базы и клиенты разные (версия, настройка) Ошибки разные Автор ни версии баз не указал, ни сообщения об ошибках корректно не привел. Что-то не работает..... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 14:20 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
BambarbeyaНо одни работают по TNS, а другие выдают либо ошибку авторизации, либо ошибку адаптера, хотя по полному дескриптору подключаются из SQLdeveloper и phpStorm.Ну дык и покажи свой tnsnames.ora, как минимум ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 14:28 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Вот 2 алиаса, первый из которых работает нормально, а второй тот самый - проблемный. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
При попытке коннекта по TNS с помощью sqlplus получаю Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
При попытке коннекта по дескриптору Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Через SQL developer всё подключается нормально, но он у меня версии 18.3.0.277 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:06 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Собственно, об этом я и подозревал -- моя любимая тема -- синтаксис файлов tnsnames/listener.ora, в частности, важность начала строки Если лениво лезть в доку -- просто формируй их через netca (правдв, для этого нужен полный клиент) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:21 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
BambarbeyaПри попытке коннекта по дескриптору Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Это называется EZCONNECT И, к сожалению, он требует указания пароля в строке соединения sqlplus username/password@host:port:sid или sqlplus username/password@host:port/service_name ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:23 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Попробуйте так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Киргуду! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:24 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
andrey_anonymousПопробуйте так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Киргуду! Аккуратней надо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:26 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровЭто называется EZCONNECTЭто называется подключение к дефолтной БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:27 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Это называется глупость ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:29 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровАккуратней надо Нас тут двое отметилось, я и выделятор в хроме - снизу вверх мышью мазнул, он не выделил хвостовые пробелы, а вот ежели сверху вниз - то показал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:30 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
-2-Вячеслав ЛюбомудровЭто называется EZCONNECTЭто называется подключение к дефолтной БД. Не надо путать локальный коннект без указания дескриптора и ezconnect ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:31 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
BambarbeyaПри попытке коннекта по дескриптору @'host:port/service' Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:31 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Не спец по TNSNAMES.ORA, т.к. у меня все работает и перечитывать документации ради чужих проблем лениво ))) Но я бы просто: увидив. что синтаксис совершенно разный => скопировал бы первое/рабочее описание и поменял бы названия и адреса. В первом случае - есть ADDRESS_LIST, во второе его зачем-то забыли Зачем-то добавлено LOAD_BALANCE (при одном адресе? как это работает?) DEDICATED может добавили осмысленно, а может просто так..... etc.... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:33 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровСобственно, об этом я и подозревал -- моя любимая тема -- синтаксис файлов tnsnames/listener.ora, в частности, важность начала строки Если лениво лезть в доку -- просто формируй их через netca (правдв, для этого нужен полный клиент) А как ошибки в TNSNAMES.ora могут привести к "invalid username/password; logon denied" ? Лично меня это немного изумляет ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:36 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровЭто называется EZCONNECT И, к сожалению, он требует указания пароля в строке соединения sqlplus username/password@host:port:sid или sqlplus username/password@host:port/service_name Вячеслав, спасибо за ответ. Я, конечно, пытался подключиться с паролем, но после этого курсор переходил на следующую строку и всё. Поэтому решил вводить его в интерактиве, чтобы посмотреть на ошибки. Стало быть, так делать нельзя? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:38 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Ого, сколько уже накидали, пока я ответ писал... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 15:41 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
SYBambarbeyaПри попытке коннекта по дескриптору @'host:port/service' Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
SY. Всё равно invalid username/password; logon denied С дополнительными отступами тоже ничего не изменилось. Прописал полное название хоста и вдруг в SQLdeveloper и phpStorm стало коннектиться по TNS. Притом, что DNS исправно работает как для короткого, так и для длинного имени. Для этого имени у нас выполняется балансировка на несколько IP. Через sqlplus ни в какую не соединяет :) Спасибо всем за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 16:52 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
andrey_anonymous-2-Это называется подключение к дефолтной БД.Не надо путать локальный коннект без указания дескриптора и ezconnectВ винде программа получит аргумент 'abc...', как есть, с кавычками. Это означает, что весь аргумент username. После интерактивного запроса пароля подключение пойдет к БД из переменных окружения. С sqlplus 18 поведение изменилось и теперь предположительно из 'xxx/yyy@zzz' получается: username='xxx password=yyy database=zzz' ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 16:57 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
BambarbeyaС дополнительными отступами тоже ничего не изменилось. Показывай, не стесняйся ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 17:09 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
А на второй базе есть тот пользователь, под которым вы пытаетесь законнектиться? Пробовали логин указывать в полностью верхнем/нижнем регистре? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 17:13 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
j2kА на второй базе есть тот пользователь, под которым вы пытаетесь законнектиться? Пробовали логин указывать в полностью верхнем/нижнем регистре? Да, да, конечно. С регистром тоже по-всякому пробовал. Заметил одну закономерность - только этот проблемный алиас у нас реально имеет 3 разделяемых IP, все остальные - по одному, хотя у некоторых тоже директива "LOAD_BALANCE = YES" зачем-то прописана. Возможно балансировщик как-то влияет на результат. Кроме того, мы под сквидом сидим. Он здорово всем кровь портит. Но после настройки среды (прописывания http_proxy) вроде пускает без жалоб. Собственно, сам sqlplus мне не так важен, я использовал его лишь для тестирования коннекта. Главное, чтобы IDE подключалась к базе и сайты открывались. После прописывания FDQN проблема с подключением по TNS снялась, поэтому, в принципе, проблема худо-бедно решена. А почему sqlplus такой неукротимый для проблемного алиаса, я ума не приложу. Что касается отступов, то даже не знаю, что показывать. Я сделал по два пробела на каждый уровень вложенности, проверил концевые пробелы и так далее. Картина всё та же - в sqlDev и IDE коннект есть обоими способами, через sqlplus нет никакого. То есть вряд ли дело в синтаксисе. В конце концов, сделал отступы по образу и подобию остальных секций, но результат не изменился. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2019, 08:57 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
BambarbeyaС регистром тоже по-всякому пробовал. імхо если есть Enter password: ERROR: ORA-01017: invalid username/password; logon denied то он к какой-то базе достучался заведите нового тестового useser-a (не sysdba), с понятным простым паролем и попробуйте подконектится зи мож надо sss as sysdba pss проверить еще и sqlnet.ora у меня влоб прописано names.directory_path = (TNSNAMES) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2019, 09:40 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
BambarbeyaВсё равно invalid username/password; logon denied А что ты хотл получить если BambarbeyaПри попытке коннекта по TNS с помощью sqlplus получаю Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Правильный дескриптор != подсоединение. Он избавил от: Bambarbeya При попытке коннекта по дескриптору Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
А следующий этап скорее всего имя пользователя/пароль включaющий спец символы. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2019, 15:49 |
|
Почему одни tnsname работают, а другие нет?
|
|||
---|---|---|---|
#18+
Заработало с двойными кавычками. То есть надо Код: plsql 1.
или Код: plsql 1.
Дело, по-видимому, было в спецсимволах в составе пароля. Если их нет, то кавычек вообще не нужно. Если есть, то двойные. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2019, 14:46 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1882488]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
188ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 276ms |
total: | 577ms |
0 / 0 |