root权限是否会破坏SQLDriverConnect(作为普通用户工作)?

时间:2012-07-30 16:25:14

标签: oracle odbc unixodbc

我在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

1 个答案:

答案 0 :(得分:0)

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

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

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

总之,看起来尽管将驱动程序本身的完整路径转换为odbc配置,但Oracle驱动程序仍然要求环境变量正常工作。此外,它没有对失败的原因给出任何暗示。

外卖:有些东西不适用于您的Oracle(从服务器本身到最远程的组件),首先要做的是仔细检查环境。