【发布时间】:2014-03-19 11:18:02
【问题描述】:
在 RedHat 6 服务器上,第三方应用程序需要 root 才能运行并且需要访问 sqlplus。我有一个正在运行的数据库,我可以以用户“oracle”的身份运行 sqlplus。以 root 用户身份登录时,“sqlplus usr/pwd@dbname”按预期工作。问题是这个代理需要运行没有参数的sqlplus,它总是返回ORA-12546: TNS:permission denied。
我已经读过十几遍了,启用 root 启动 Oracle 是一个安全问题,但我真的别无选择。
运行 Oracle 11.2.0.1.0。
任何帮助将不胜感激,因为我已经用谷歌搜索了 2 天但没有成功。
【问题讨论】:
-
您还没有说出您尝试过的内容,因此这可能会重复。大概您已经正确设置了环境变量(
ORACLE_HOME、TNS_ADMIN、ORACLE_SID...),或者我认为您会看到不同的错误。您是否使用完整的 Oracle 安装,您的ORACLE_HOME中的权限有什么奇怪的吗?我建议您为root单独安装即时客户端,以尽可能多地保持分离 - 这可行吗? -
我的 root 环境变量与 oracle 用户完全相同。是的,它是标准的企业 Oracle 安装。我使用另一台按预期运行但找不到差异的服务器检查了文件权限和所有权,因此我怀疑它与某处的配置有关。不幸的是,在这种情况下无法为 root 安装单独的客户端。我感觉这是监听器配置的问题,远不止数据库。到目前为止,感谢您的调查。
-
是的,我只是启动 sqlplus 并依赖 ORACLE_SID。我没有配置任何钱包,也许有默认配置?正常工作的系统是在另一个系统上使用 Oracle 11.1.0.6 而不是 11.2.0.1。两个系统上都没有设置 TWO_TASK。在两个系统上比较目录时找不到任何差异。我还没有告诉它,但是从 root 用户,'tnsping dbname' 回答正确!我很困惑!
-
我知道发生这种情况的唯一方法 - 远程连接正常工作(
tnsping dbname和连接@dname)但本地连接得到该错误是通过权限;特别是当$ORACLE_HOME/bin/oracle不是世界可执行文件时。但这是谷歌建议的第一件事,你很难过权限匹配工作服务器。你能确认那个特定的标志吗?root是否在工作服务器上的dba组中?