2012-07-30 105 views
0

我在linux下通過Oracle ODBC驅動程序(unixODBC)得到一個奇怪的行爲。root權限可以打破SQLDriverConnect(以普通用戶身份運行)嗎?

我有一個程序連接到一個數據庫,當被非特權用戶調用時,按預期工作,而如果用root權限調用(用sudo和su測試)掛在SQLDriverConnect調用中,然後在幾分鐘後死亡代碼1)沒有錯誤信息或任何東西。

我正在使用系統DSN和相同的確切配置(唯一不同的是root權限),爲了使事情更有趣,我也使用相同的代碼連接到postgreSQL數據庫,和root用戶(因此它似乎不是unixODBC問題)。

任何想法,如果它真的可能是Oracle驅動程序的問題的原因或其解決方案的提示?

的Oracle驅動程序版本:Oracle的instantclient11.2-ODBC - 11.2.0.1.0-1.x86_64

+0

如果您可以在命令行上使用isql複製,請嘗試strace -o /tmp/trace.log isql -v system_dsn用戶名密碼。然後在另一個終端上追蹤跟蹤日誌,當它掛起時,它在幹什麼?您可能需要將isql的完整路徑放入。 – bohica 2012-07-31 08:13:03

回答

0

好了,回答我的問題,

答案是否定的,root權限不問題的原因:環境變量是。

切換到用戶root不保留ORACLE_HOME環境變量;設置它可以讓駕駛員正常工作。

總而言之,儘管驅動程序本身具有完整的路徑進入odbc配置,但Oracle驅動程序仍然要求該環境變量正常工作。此外,它沒有給出任何關於失敗原因的暗示。外賣:有些東西與您的Oracle不兼容(從服務器本身到最遠端的組件),首先要做的是仔細檢查環境。

相關問題