У меня есть пара боксов 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.