問題
如何 不安裝OracleClient連OracleDB
解決方法
一般連OracleServer方式是安裝OracleClient,並設定tnsname.ora進行連線,而OracleClient一般光是安裝檔就超過200MB以上,安裝後更是肥大,因此這邊說明如何不透過安裝OracleClient就可以讓程式連到OracleServer
準備步驟:
1.下載Instant Client,選擇對應作業系統,這邊示範用Instant Client for Microsoft Windows (32-bit)內版本為
Version 11.2.0.2.0
Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
instantclient-basic-nt-11.2.0.2.0.zip (50,325,016 bytes)
,如果沒有oracle會員,請順便註冊一下吧!不需要費用的
2.下載以後,新建oraclebinary資料夾,將以下檔案copy到資料夾內
oci.dll
ociw32.dll
orannzsbb11.dll
oraocci11.dll
oraociei11.dll
OraOps11w.dll(這顆與OracleDataAccess.dll對應)
3.開發程式時,你應該會加入OracleDataAccess.dll參考(在OracleClient內)並將組件改為永遠複製,再將oraclebinary放置於輸出目錄底下
4.程式加入連線字串要改為tns連線方式如下:
<connectionStrings> <add name="Oracle.ConnectionString" connectionString="CONNECTION TIMEOUT=10;DATA SOURCE=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.35.120.211)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = modeldc2)));PASSWORD=pwd01;PERSIST SECURITY INFO=True;USER ID=user01" providerName="Oracle.DataAccess.Client" /> </connectionStrings> |
5.程式裡加入環境變數如下,以取得 OCI.dll的位置,如此一來就可以不安裝OracleClient連到OracleServer
string oraclePath = AppDomain.CurrentDomain.BaseDirectory+"\\oraclebinary"; Environment.SetEnvironmentVariable("PATH", oraclePath, EnvironmentVariableTarget.Process); |
1.先查出目前OracleServer的語系是甚麼
select * from nls_session_parameters;
2.請程式裡加入以下環境設定,如此一來就可以避免server格式問題了:
Environment.SetEnvironmentVariable("NLS_LANG", " TRADITIONAL CHINESE" , EnvironmentVariableTarget.Process); |
<--------------------------------->
2017/04/27更新
若在new OracleConnection時發生錯誤:
The provider is not compatible with the version of Oracle client
1.下載ODAC(for 10 g使用ODAC 11.2 Release 6 (11.2.0.4.0)版本)
2.解壓縮後開cmd=>輸入[cd 解壓縮目錄]切換路徑=>輸入install.bat odp.net2 c:oracle odac
.net framework 4以下用odp.net2, .net framework 4用odp.net4
3.程式引用安裝後的bin檔(C:\oracle\odp.net\bin\4 or C:\oracle\odp.net\bin\2)內的OracleDataAccess.dll
4.將C:\oracle\bin裡的OraOps11w.dll放置於原篇步驟2所建的oraclebinary資料夾內
沒有留言:
張貼留言