標籤:
本文 由 彭旭 創作,採用 知識共用 署名-相同方式共用 3.0 中國大陸 許可協議進行許可。歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連。
前言
由於工作需要,現需要從遠程Oracle資料庫擷取資料。本人開始以為可以直接遠程,試了下竟然不行,提示“System.Data.OracleClient 需要 Oracle 用戶端軟體 8.1.7 或更高版本。”。公司的要求就是不裝用戶端,沒法子只好找找看有沒有其他方案。
Instant Oracle
運氣不錯,還真找到一可用方案,就是Instant Oracle。
關於Instant Oracle的介紹請看http://www.oracle.com/technetwork/database/features/oci/index.html。
下載Instant Oracle
Instant Oracle的:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html。
請根據作業系統和服務端Oracle版本選擇下載,下載需要帳號,註冊一下就行了。
本人系統是Windows Server 2003,選擇Windows(32位)版本。由於遠程伺服器裝的是Oracle 10g,我選擇了Version 10.2.0.5的Basic包,33.2M。至於其他的Basic Lite、JDBC Supplement、SQL*Plus、SDK和ODBC包,有興趣的朋友可以自行研究。
安裝Instant Oracle
其實不需要安裝,解壓就可以了,要不要重新命名看個人了。這裡說這些是想等下裝個PLSQL測試下。本人將解壓後的instantclient_10_2重新命名為OracleInstantClient_10_2,拷貝到F盤根目錄。
PLSQL Developer
如果需要安裝PLSQL Developer,請按步驟設定。
1.在剛才的F:\OracleInstantClient_10_2目錄建立兩個目錄,層級為NETWORK\ADMIN。然後在建立一記事本,重新命名為tnsnames.ora,開啟後輸入配置內容。將HOST、PORT、SERVICE_NAME改為自己的內容,至於第一行的orcl是與登入的時候有關,寫成abc什麼的都可以,不過登入時的Database也得填abc。
orcl = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.60)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )
2.設定環境變數(我的電腦->右鍵“屬性”->進階->環境變數->使用者變數),建立一個使用者變數,變數名NLS_LANG,變數值SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
3.配置PLSQL Developer。Tools->Preferences->Oracle->Connection,設定Oracle Home為F:\OracleInstantClient_10_2,OCI library為F:\OracleInstantClient_10_2\oci.dll。
4.重啟PLSQL Developer,登入。
遠端連線Oracle
說明:以上的環境變數、配置都是為PLSQL Developer服務的,單純的遠程Oracle就沒必要做那些操作了,只需要拷貝4個dll到項目中就可以了。
- OCI Instant Client Data Shared Library
- oraociei10.dll (Basic version)
- Client Code Library
- Security Library
- OCCI Library
1.建立Windows表單應用程式,建立表單,命名為Form1。
2.引用System.Data.OracleClient。
3.拷貝oci.dll、orannzsbb10.dll、oraocci10.dll、oraociei10.dll到項目中,跟Form同級。然後設定這4個dll檔案屬性“複製到輸出目錄”為“如果較新則複製”。
4.遠端連線字串,請改為自己的:Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.60)(PORT=1521))(CONNECT_DATA=(SID=orcl)));User Id=yourUID;Password=yourPWD;
5.剩下的OracleConnection什麼的就自己解決吧。
附錄
Instant Oracle Using C# by Paul Groetzner http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
C#遠端連線Oracle資料庫(不安裝用戶端)