Назад | Перейти на главную страницу

Только пользователь oracle может запускать sqlplus

У меня есть пара боксов RHEL 6 с сервером Oracle 12.2 и клиентом 11.2. Это требование производителя.

На одном сервере я могу запускать sqlplus как любой пользователь, на другом сервере я могу запускать sqlplus только как пользователь oracle. Запуск, как любой другой пользователь, дает: ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

Когда я говорю «пользователь oracle», я имею в виду пользователя ОС с именем oracle.

Я проверил listener.ora и tnsnames.ora (как в клиентской, так и в серверной структурах ORACLE_HOME), и оба они идентичны, за исключением имен хостов.

Права доступа к файлу / каталогу (право собственности и режим) выглядят нормально.

Статусы tnsping и lsnrctl выглядят нормально.

Есть идеи о том, в чем может быть проблема?

Спасибо

-- РЕДАКТИРОВАТЬ --

Эти переменные среды установлены и функционально идентичны.

set | awk -F= '/ORA/ {print $1}' ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM ORACLE_UNQNAME ORA_SDTZ

Проблема оказалась в том, что hostname возвращает короткое имя на рабочем сервере и полное доменное имя на нерабочем сервере.

Я обновил / etc / sysconfig / network, чтобы указать короткое имя хоста, и теперь все работает.

Я не знаю, зачем это нужно, но это решает проблему, и прямо сейчас все это имеет значение.

Как вы читаете в документации оракула, вам также нужно установить еще несколько переменных. Для пользователей, отличных от oracle, вы должны указать пример ORACLE_SID, который должен указывать на SID вашей базы данных. Также вы можете настроить TNSADMIN так, чтобы он указывал на правильный файл TNS.