Windows系統安裝cx_Oracle、Oracle客戶端及PLSQL Developer


注:本文檔適用于Windows7 64位系統,Python2.7 64位。


一、安裝cx_Oracle及對應的Oracle客戶端

  1. 安裝cx_Oracle, 這個是一個Python的擴展包,用來訪問Oracle數據庫的。Windows的安裝文件可以到http://cx-oracle.sourceforge.net/這里去下載。
  2. 下載Oracle 64位客戶端(Oracle Instant Client),這個是Python擴展包所需要的。可以到http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html去下載,下載后解壓到本地磁盤(例如:D:\PLSQL\instantclient_11_2_64),把路徑加入到環境變量的path中。同時在系統環境變量中添加NLS_LANG,值為SIMPLIFIED CHINESE_CHINA.ZHS16GBK,以便支持中文。
    注:客戶端字符集要與服務器一致,才能正確顯示數據庫的非Ascii字符,但是語言設置可以不同,因此NLS_LANG也可以設為American_American.ZHS16GBK。字符集查詢見附錄。
  3. 在D:\PLSQL\instantclient_11_2_64\NETWORK\ADMIN添加tnsnames.oRA文件。新建一個叫tnsnames.ora的文件,內容如下:
    TESTDB= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.2)(PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=TESTDB) ) ) ORACLR_CONNECTION_DATA= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)) ) (CONNECT_DATA= (SID=CLRExtProc) (PRESENTATION=RO) ) )
  4. 編寫測試代碼:
    importcx_Oracle db_conn=cx_Oracle.connect(“user/pass@tnsname.world”)

二、安裝plsql developer及其對應Oralce客戶端

  1. 安裝PLSQL Developer,這是一個Oracle可視化軟件,用來操作Oracle數據庫。
  2. 下載Oracle 32位客戶端(Oracle Instant Client),目前plsql只支持Oracle 32客戶端。可以到http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html去下載。下載后解壓到本地磁盤(例如:D:\PLSQL\instantclient_11_2_32),把路徑加入到環境變量的path中。
  3. 配置tnsnames.ora文件,內容同(一、)中第3項。
  4. 啟動PLSQL,在"工具"->"首選項"->"Oralce"->"連接"中配置"Oracle主目錄名"為'D:\PLSQL\instantclient_11_2_32'和"OCI庫"為'D:\PLSQL\instantclient_11_2\oci.dll'。
  5. 在"工具"->"首選項"->"Oracle"->"登錄歷史"中配置"固定用戶",格式為"用戶名/密碼@數據庫名稱",如:"test/test@TESTDB"

三、可能會遇見的bug及解決方法

  1. 如果只安裝Oracle 32位客戶端(Oracle Instant Client),PLSQL可以正常使用,但是cx_Oracle會報錯,內容如下:
    import cx_Oracle Traceback(most recent call last): File"",line1,in ImportError:DLL load failed:%1不是有效的Win32應用程序。
    解決方法:
  • 安裝64位的oracle client,上述(一)(二)中描述的即為此方法。
  • 拷貝一個64位的 oci.dll 到%python_home%\Lib\site-packages 下

四、附錄

  1. 數據庫字符集查詢:select * from nls_database_parameters
  2. 客戶端字符集查詢:select * from nls_instance_parameters
  3. 會話字符集:select * from nls_session_parameters* 或 *select * from v$nls_parameters,如無特殊設置,應與nls_instance_parameters一致。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容