2016-09-30 120 views
0

當試圖去Oracle數據庫I'm的連接得到以下錯誤:cx_oracle無法獲取Oracle環境處理

File "test.py", line 5, in <module> 
    conn = cx_Oracle.Connection('dbuser/[email protected]') 
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle 

測試代碼:

import os 
#os.environ['ORACLE_HOME']='/oracle/client/112_64/' 
import cx_Oracle 

conn = cx_Oracle.Connection('dbuser/[email protected]') 

我的路徑設置像這樣:

ORACLE_BASE=/oracle/oracle-client 
ORACLE_HOME=/oracle/oracle-client/112_64 
LD_LIBRARY_PATH=/oracle/client/112_64/:/oracle/oracle-client/112_64/lib/ 
PATH=/oracle/oracle-client/112_64/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/my_user/bin 

根據安裝的Oracle版本是11g 10和cx_Oracle版本是5.2.1

我不知道問題可能是什麼。有人能給我一個提示嗎?

回答

1

該錯誤(無法獲取Oracle環境句柄)是Oracle告訴您配置有問題的方式。在你的情況下,你有不同的路徑可能是問題的根源。一個說「/ oracle/oracle-client」,另一個說「/ oracle/client」。你應該找出哪一個是正確的,並相應地調整事情。

您可以使用SQL * Plus連接到數據庫。如果那有效,那麼cx_Oracle也應該工作。

您也可以使用ldd命令來確定系統是否找到了正確的庫。就像這樣:

ldd /path/to/cx_Oracle.so 

也可能會出現此錯誤,如果你對12C編譯版本cx_Oracle,但使用的是Oracle 11g客戶端(例如)。或者你同時裝載了兩個不同客戶端的零件。但在你的情況下,我強烈懷疑衝突的路徑!

如果您使用基於RPM的Linux發行版(Oracle Linux,Red Hat Linux,Fedora等),我強烈建議使用提供的即時客戶端RPM。它們使配置非常簡單,不需要環境變量來構建和安裝cx_Oracle(截至5.2)。你可以在這裏找到它們:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

+0

謝謝你的提示。有兩件事情。該路徑沒有在全局設置,其次是沒有正確設置網絡文件夾的訪問權限。 – markan