0

我在 linux (unixODBC) 下通过 Oracle ODBC 驱动程序得到一个奇怪的行为。

我有一个连接到数据库的程序,当由非特权用户调用时,它按预期工作,而如果使用 root 权限调用(使用 sudo 和 su 测试)挂在 SQLDriverConnect 调用中,然后在几分钟后死亡(返回代码 1)没有错误消息或任何东西。

我正在使用系统 DSN 和完全相同的配置(唯一的区别是 root 权限),为了让事情更有趣,我还使用相同的代码连接到 postgreSQL 数据库,没有任何问题,无论是非特权用户还是 root 用户(因此它似乎不是 unixODBC 问题)。

知道它是否真的是 Oracle 驱动程序问题的原因或提示其解决方法?

Oracle驱动版本:oracle-instantclient11.2-odbc-11.2.0.1.0-1.x86_64

4

1 回答 1

0

好吧,回答我自己的问题,

答案是否定的,root 权限不是问题的原因:环境变量是。

切换到 root 用户不会保留 ORACLE_HOME 环境变量;设置它可以使驱动程序正常工作。

总之,尽管在 odbc 配置中有驱动程序本身的完整路径,但 Oracle 驱动程序仍然需要该环境变量才能正常工作。此外,它没有给出失败原因的任何提示。

要点:如果您的 Oracle 有问题(从服务器本身到最远程的组件),首先要做的是仔细检查环境。

于 2012-07-31T08:21:53.760 回答