7

以我的普通用户身份启动 sqlplus 时,我正在努力解决以下错误 - 说“scott”。

$ sqlplus
SP2-1503: Unable to initialize Oracle call interface
SP2-0152: ORACLE may not be functioning properly

环境是:

  • 甲骨文 11.2.0.2
  • OpenSuse Linux 11.1(64 位)

其他细节:

  • Oracle 在 localhost 上安装并运行
  • 没有 tnsnames 问题,因为可以以 oracle 管理员用户身份运行 sqlplus
  • 数据库启动并监听器启动(11.2.0.2 安装)。
  • 数据库管理员组 (/etc/group) 中的用户 scott
  • 用户 scott 引用了正确的 11.2.0.2 安装

这是最奇怪的,因为我可以愉快地以 oracle 用户(比如“oraadmin”)运行 sqlplus,并且用户 scott 在 oracle admin 组中注册。此外,我以前的 Oracle 安装 (10.2.0.7) 没有这样的问题。我的 ~scott 的 $ORACLE_HOME 引用了 11.2.0.2 安装。

比较我的 11.2.0.2 和 10.2.0.7 环境,我注意到有几个库(包括 $ORACLE_HOME/lib/libsqlplus.so)具有组只读权限 (744),因此对这些库进行了修改。

除此之外,我的 $ORACLE_HOME/lib、$ORACLE_HOME/bin、$ORACLE_HOME/oracore 和 $ORACLE_HOME/rdbms 在合理的许可下似乎都是合理的。

注意:网上有很多东西,但通常情况下,有很多特定于案例的问题,主要是围绕不同版本的 Windows。主要专注于比较我的环境。此外,据我所知,SO 上尚不存在此问题,因此对于开始按环境整理答案可能很有用。我会报告任何合理的发现。

4

4 回答 4

7

如果是 Windows 7,您可以右键单击 SQL Plus 或您使用的任何软件,我使用 Crystal Reports。

所以你必须右键单击以管理员身份运行。

它为我修好了。

于 2013-02-18T19:01:00.653 回答
2

修复了我的特定问题...

用户 scott 的 $PATH 仍然包含 ora11.1.0.7 bin。因此,在启动 sqlplus 时,我正在针对 11.2.0.2 服务器运行 ora11.1.0.7 sqlplus 客户端。认为它可能比这更多(即我可能希望该客户端与该服务器一起工作),但这是问题的中心。

在我的辩护中,my.bashrc 正确设置了 $PATH,所以还不确定是什么在 11.1.0.7 版本中抢占了它。猜猜明智的经验法则是将我的 $ORACLE_HOME/bin 添加到 $PATH 的前面,以确保首先找到我的,尽管其他任何环境配置都设置了其他内容,如

export PATH=$ORACLE_HOME/bin:$PATH

你的,有点尴尬,但希望能再次对某人有所帮助。

于 2012-01-09T15:05:20.597 回答
0

在 Windows 中,我找到了解决方案 ---

将“创建全局对象”用户权限分配给非管理员帐户。

  1. 转到管理工具,然后单击本地安全策略。
  2. 展开本地策略,然后单击用户权限分配。
  3. 在右窗格中,双击创建全局对象。
  4. 在“本地安全策略设置”对话框中,单击“添加”。
  5. 在“选择用户或组”对话框中,单击要添加的用户帐户,单击“添加”,然后单击“确定”。
  6. 单击确定。
于 2016-12-19T11:55:53.223 回答