如何配置的Oracle 11g推出的sqlplus?(How to configure Oracle

2019-10-19 09:24发布

在一个RedHat 6服务器,第三方应用程序需要以root身份运行,并且需要sqlplus的访问。 我有一个运行的数据库,我可以为用户“ORACLE”的sqlplus运行。 当登录的用户root,“sqlplus的USR /密码@ DBNAME”按预期工作。 麻烦的是,这个代理需要运行不带参数的sqlplus,它总是返回ORA-12546:TNS:许可被拒绝。

我读了十几遍,启用根推出Oracle是一个安全问题,但我真的没有其他选择。

运行Oracle 11.2.0.1.0。

任何帮助将非常感激,因为我GOOGLE了2天,但没有成功。

Answer 1:

从文档 ,ORA_12546是:

ORA-12546:TNS:许可被拒绝
原因:用户没有足够的权限来执行所请求的操作。 动作:获取必要的权限,然后再试一次。

这是完全没有任何帮助,但各种论坛和博客(太多的链接,谷歌搜索的错误显示了很多类似的意见)提上安装的特定部分的权限, $ORACLE_HOME/bin/oracle ,这是大多数服务的关键和核心部分。

通常情况下对文件的访问权限是-rws-rs--x ,与所拥有的文件oracle:dba ,当字写的标志,可能会发生这个错误-最后x在这种模式-没有设置。 任何人在dba组将仍然能够执行它,但外面那些不会。

你的听众似乎是罚款,你可以远程连接,通过指定@dbname在连接字符串。 听者运行作为oracle (通常,可能是grid与HA,RAC或ASM),所以它是中dba组和可以快乐地越区切换连接到的一个实例oracle可执行文件。

当您连接,而不通过听者去,你必须要能够执行该文件自己。 看来, root无法执行它(或可能是一些其他的文件,但是这通常是罪魁祸首,显然),这意味着世界上可写位确实没有设置。

至于我可以看到你有三种选择:

  • 集世界可写位,以chmod o+x $ORACLE_HOME/bin/oracle ; 但它开创了每个人的权限,想必他们已经受到限制的一个原因;
  • 添加rootdba基团,经由usermod或在/etc/group ; 这潜在地削弱安全以及;
  • 使用SQL *即使你不指定网络@dbname在连接字符串,通过增加export TWO_TASK=dbnameroot环境。

你说你没有另一台服务器上这个问题,该文件的权限是一样的; 在这种情况下root可能是在dba上包厢群。 但我认为第三个选择似乎最简单,最安全的。 还有第四个选项,我想,要安装一个独立的即时客户端 ,但你必须设置TWO_TASK反正去了SQL * Net和你已经排除了这种可能性。

我不会纠缠于它是否运行一个好主意sqlplus (或实际上需要它的应用程序)为root ,而只是提到,你可能有一个脚本或函数调用sqlplus切换到具有较少特权的帐户通过su运行真正的可执行文件,这可能是对应用程序透明。 除非你切换到oracle帐户,虽然,这也不是一个好主意,你有相同的权限问题和选项。



文章来源: How to configure Oracle 11g to launch sqlplus?