sqlplus ORA-12504 работает sqlplus локально на oracle хост-сервере - но только как не oracle учетная запись владельца - PullRequest
0 голосов
/ 14 апреля 2020

В различных средах UX я запускаю несколько сценариев оболочки для сбора информации о версии программного обеспечения и отправляю ее обратно на центральный сервер. Один сценарий делает это для Oracle.

На сервере 12.1.0.2.0 Oracle (система Solaris 11.2) учетная запись владельца oracle может выполнить sqlplus в локальной службе Oracle после запуска oraenv с установленным ORACLE_SID & ORAENV_ASK = нет

Любой из этих синтаксисов работает:

sqlplus oracle_ID/password

sqlplus oracle_ID/password@ORACLE_SID

Однако не oracle владелец аккаунта может использовать только синтаксис

sqlplus user_ID/password для подключения к локальной службе oracle!

sqlplus 'user_ID/password@"//hostname:1521/ORACLE_SID"' - синтаксис также работает отлично.

Попытка использования следующий синтаксис нарушен - первый представляет интерес (и работает на всех других Oracle хостах базы данных для всех экземпляров):

sqlplus user_ID/password@ORACLE_SID - ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

sqlplus user_ID/password@"/ORACLE_SID" - ORA-12154: TNS:could not resolve the connect identifier specified

tnsping ORACLE_SID соединяется со службой OK.

ohost:~$ truss sqlplus user_ID/password@ORACLE_SID truss: cannot trace set-id or unreadable object file: /apps/oracle/product/12.1.0.2/bin/sqlplus

Было бы лучше иметь один согласованный синтаксис на всех моих серверах для скрипт сбора данных, и мне было любопытно, почему изменение UNIX id может вызвать эту аномалию. Есть идеи или идеи как отлаживать? Thx A.

Обновление: 15 апреля 2020 г. - После того, как больше ответов GoogFu заключается в том, какой «адаптер» используется в учетной записи пользователя для разрешения «псевдонима».

oracle владелец использует ' Адаптер TNSNAMES, тогда как учетная запись монитора использует «HOSTNAME», а метод HOSTNAME отправляет нулевое поле SERVICE_NAME в CONNECT_DATA. Я еще не заметил, почему владелец oracle использует метод TNSNAMES. Я просмотрел переменные окружения оболочки для UNIX идентификаторов, и oraenv настроил все те, которые ссылаются на ORACLE_HOME. Ничего конкретного TNS или "net" не видно ...

1 Ответ

0 голосов
/ 15 апреля 2020

Легко, когда знаешь как. Кажется немного странным ответить на мой собственный вопрос ...

Просто файл tnsnames.ora не был доступен для чтения другим пользователям. Следовательно, учетные записи не группы dba должны были вернуться к методу разрешения HOSTNAME.

Это была пустая трата 4 часов. Это не первый случай, когда установка Oracle имеет более (?) Усердные разрешения, установленные для файла конфигурации или общего объекта внутри установки «сервер», что требуется подлинному клиентскому процессу. Я не смотрел специально, но это не похоже на ошибку с Oracle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...