現象描述:Win7-64bit中成功安裝了 Oracle_win64_11gR2_database 和 plsqldev715 之後
啟動plsqldev時,發現其無法識別Oracle執行個體
主要原因:32位的應用程式PLSQL Developer在載入64位的oci.dll時,出錯!!
解決辦法:1、下載Oracle Instant Client
地址http://www.oracle.com/technetwork/indexes/downloads/index.html
點擊Database欄中的Instant Client,轉向後頁面中點擊Instant Client for Microsoft Windows(32-bit)連結
然後在新頁面中點擊Accept License Agreement單選框,最後單擊instantclient-basic-nt-11.2.0.2.0.zip下載連結
該連結的標註為Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
實際為http://download.oracle.com/otn/nt/instantclient/112020/instantclient-basic-nt-11.2.0.2.0.zip
2、解壓Oracle Instant Client
將下載到的47.9MB大小的instantclient-basic-nt-11.2.0.2.0.zip解壓到本地
原則上可將其解壓至任意目錄,但不推薦路徑名含有中文及空格。這裡我將其解壓到了%ORACLE_HOME%\product\目錄中
3、拷貝tnsnames.ora到instantclient_11_2根目錄中
將\\%ORACLE_HOME%\\product\11.2.0\\dbhome_1\\NETWORK\\ADMIN\\中的tnsnames.ora拷貝到instantclient_11_2根目錄中
我們也可以自行建立tnsnames.ora檔案,其模版配置如下
系統標識符SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 資料庫伺服器IP地址)(PORT = 連接埠))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 資料庫服務名) 或者 (SID = 資料庫服務名)
)
)
備忘:我們會發現,即便在instantclient_11_2根目錄中建立了tnsnames.ora檔案後,plsqldve偶爾也會無法識別Oracle執行個體
於是我就索性一股腦將sqlnet.ora、listener.ora、tnsnames.ora三個檔案都拷貝到了instantclient_11_2根目錄中
實踐發現,這麼做之後,就沒有出現過plsqldev識別Oracle執行個體失敗的現象了,大家可以參考一下
4、配置系統內容變數
Win7---電腦---屬性---進階系統設定---環境變數---在系統變數中新增TNS_ADMIN和NLS_LANG變數
TNS_ADMIN = %ORACLE_HOME%\product\instantclient_11_2
NLS_LANG = AMERICAN_AMERICA.AL32UTF8 或者 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
其中AMERICAN_AMERICA是固定的,因為InstantClient不支援其他語言,而後半部分的AL32UTF8則取決於資料庫的字元集
5、配置plsqldev串連參數
啟動plsqldev---Tools---Preferences---Connection---配置Oracle Home和OCI library路徑
其中Oracle Home應該導航到InstantClient的解壓目錄,而OCI Library則指向到該目錄下的oci.dll
Oracle Home = %ORACLE_HOME%\product\instantclient_11_2
OCI library = %ORACLE_HOME%\product\instantclient_11_2\oci.dll
6、重啟plsqldev
補充:也可以寫一個批處理(*.bat)檔案,來自動化佈建啟動plsqldev時所需的變數。如下所示
@echo off
set TNS_ADMIN=D:\Develop\Oracle\product\instantclient_11_2
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
start D:\Program" "Files\PLSQL" "Developer\plsqldev.exe