只有 oracle 用户才能运行 sqlplus

只有 oracle 用户才能运行 sqlplus

我有几个装有 Oracle 12.2 服务器和 11.2 客户端的 RHEL 6 盒子。这是供应商的要求。

在一台服务器上,我可以以任何用户身份运行 sqlplus,在另一台服务器上,我只能以 oracle 用户身份运行 sqlplus。以任何其他用户身份运行可获得: 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

答案1

正如您在 Oracle 文档中读到的,您还需要设置更多变量。对于 Oracle 以外的用户,您应该设置示例 ORACLE_SID,它应该指向您的数据库的 SID。您还可以考虑设置 TNSADMIN 以指向正确的 TNS 文件。

答案2

问题原来是hostname在工作服务器上返回一个短名称,而在非工作服务器上返回一个 FQDN。

我已经更新 /etc/sysconfig/network 以将主机名设置得更短,现在一切正常。

我不知道为什么需要这样做,但是它解决了这个问题,现在这才是最重要的。

相关内容