C 實現不安裝Oracle客戶端訪問遠端伺服器資料

2022-06-08 08:45:08 字數 3218 閱讀 4938

c#通過使用ado的方式在未安裝oracle資料庫的前提下,客戶端程式遠端訪問伺服器,會出現「system.data.oracleclient 需要oracle 客戶端軟體8.1.7 或更高版本」問題,本文講述如何通過簡單方式快速實現免安裝客戶訪問oracle資料庫,以解決當前問題。

基本思路:將訪問oracle需要用的部分dll檔案拷貝到客戶端本地,然後通過配置環境變數或修改登錄檔的方式來達到快速客戶端安裝的目的。這種解決方案並不是說完全不需要在客戶端處理,而是簡化客戶端的部分工作量,只需要在本地增加幾個檔案,然後修改一下配置就能達到快速客戶端的目的。下面我們來看一下具體步驟:

instant client檔案

,instantclient10_1資料夾(這個資料夾名字可以修改,沒關係),裡面就是我們要用到的dll檔案了。

第二步:配置環境變數

找到設定環境變數配置的地方(我的電腦右鍵屬性à高階à環境變數)

在系統變數中,首先找到path變數名,然後點「編輯」,在其變數值後面加入中括號內的內容[;d:\instantclient10_1],注意不要把中括號加進去了,這個值其實就是剛才我們解壓instant client所在的目錄,根據真實情況,修改即可。然後還是在系統變數中,增加以下三個變數:

nls_lang=simplified chinese_china.zhs16gbk

tns_admin= d:\instantclient10_1

ld_library_path= d:\instantclient10_1

如何快速配置環境變數請參見下文的附錄之《如何快速配置環境變數》

第三步:增加tnsnames.ora檔案

在剛才設定的目錄中(d:\instantclient10_1)增加乙個tnsnames.ora檔案,內容為訪問資料庫的配置資訊。具體步驟為:新建乙個txt文件,然後將一下內容複製進去,另存為tnsnames.ora即可。

orcl=

(description =

(address_list =

(address =

(protocol = tcp)

(host = 192.168.0.105)

(port = 1521)))

(connect_data =

(service_name = vm)  ))

說明,以下需要根據實際情況修改:

host = 伺服器位址ip 或伺服器名稱

port = 伺服器端口號,預設為「1521「

service_name = 伺服器資料庫服務的名字,預設為:」orcl「

第四步:重啟計算機

當然也有一種替代重啟的方法:同時按下一下三個鍵ctrl+alter+del,會彈出windows任務管理器,在程序選項卡中找到explorer.exe,把該程序結束掉,然後在應用程式選項卡中點選「新任務(n)…」,在彈出的新建任務視窗中輸入explorer.exe,確定即可。其原理就是重啟一下explorer程序,以達到重新整理登錄檔的目的。

說明:本人已經測試通過。如果哪天配置環境path變數能通過附錄中的方法解決,那麼就可以達到真的不要第四步了。

如何快速配置環境變數:

上文中步驟二提到需要修改path變數值,和新增三個變數。可以採用以下兩種方式來通過修改登錄檔的方法快速增加這三個環境變數。(注:path因是附加操作,暫時測試未成功,仍需手動加,哪天解決了,在把程式補上)

方式一:通過使用註冊項(.reg)檔案

將下面的**複製到txt文件,然後另存為字尾為.reg的註冊項檔案,檔名可以隨意取【例如:instantclientenvironment.reg】,完成後雙擊該註冊項檔案,即配置好了三個變數。

windows registry editor version 5.00

[hkey_local_machine\system\currentcontrolset\control\session manager\environment]

"nls_lang

" = "

simplified chinese_china.zhs16gbk

" "tns_admin" = "

d:\\instantclient10_1""

ld_library_path

"= "d:\\instantclient10_1"

希望了解「如何通過使用註冊項 (.reg) 檔案新增、修改或刪除登錄檔子項和值」請參考微軟官方說明

將下面的**複製到txt文件,然後另存為字尾為.bat的註冊項檔案,檔名可以隨意取【例如:instantclientenvironment.bat】,完成後雙擊該註冊項檔案,即配置好了三個變數。

reg add "hkey_local_machine\system\currentcontrolset\control\session manager\environment" /v nls_lang /t reg_sz /d "simplified chinese_china.zhs16gbk" /f

reg add "hkey_local_machine\system\currentcontrolset\control\session manager\environment" /v tns_admin /t reg_sz /d "d:\\instantclient10_1" /f

reg add "hkey_local_machine\system\currentcontrolset\control\session manager\environment" /v ld_library_path /t reg_sz /d "d:\\instantclient10_1" /f

注:紅色的字型表示需要根據你實際情況進行修改的。影響的登錄檔效果可在執行中輸入regedit命令檢視登錄檔,找到

hkey_local_machine\system\currentcontrolset\control\session manager\environment驗證我們程式修改後的登錄檔,如下圖所示:

C 不安裝Oracle客戶端連線Oracle資料庫

方法如下 環境 vs2003 oracle10g 2 新增tnsnames.ora檔案 新增到d fox instantclient檔案中 檔案tnsnames.ora其內容 tnsnames.ora network configuration file d fox instantclient tn...

不安裝Oracle客戶端使用PLSQL

不安裝oracle客戶端使用plsql 只想安裝pl sql,不安裝oracle客戶端,可採取不需要進行安裝的oracle精簡客戶端,配合pl sql連線oracle資料庫.配置客戶端環境變數 2.新增網路配置檔案 在d programfiles oracle network admin目錄下,新建...

不安裝oracle客戶端使用PLSQL

1.把instantclient放到c盤。c instantclient 2.c instantclient network admin tnsnames.ora 修改這個檔案裡的內容。generated by oracle configuration tools.oraclr connection...