完整 Oracle Client 安裝包超過 500MB,對於僅需連線資料庫的應用程式(如 .NET、Java、Python 應用)過於龐大。本文說明如何從完整安裝中提取核心檔案,構建約 50~80MB 的精簡客戶端套件,並整合至應用程式安裝程式中實現「綠色部署」。
bin/:核心 DLL、執行檔 (oci.dll, oraclient*.dll, ora*.dll, msvcr*.dll 等)network/:Net 配置檔 (sqlnet.ora, tnsnames.ora) 與訊息檔 (mesg/*.msb)nls/:字元集轉換資料 (data/*.nlb)、Locale Builderoracore/:核心庫、時區資料 (zoneinfo/*.dat)、訊息檔oci.dll, oraclient.dll , ora.dll , oranls.dll , orasql.dll , oraocci.dll (C++ 應用), Oracle.DataAccess.dll (.NET), msvcr*.dll, msvcp*.dll 等 C Runtime。移除:sqlplus.exe, tnsping.exe, exp/imp, assistants 等工具程式。nlzhs.msb 簡中、nlus.msb 英文),移除其他語系。.nlb 檔。若僅支援 UTF8/AL32UTF8 + ZHS16GBK,可大幅刪減。timezone.dat, timezlrg.dat 兩檔即可。匯入以下 .reg 檔 (路徑請依實際部署位置調整):
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient19c_home1]
"ORACLE_HOME"="C:\\Oracle\\InstantClient"
"ORACLE_HOME_NAME"="OraClient19c_home1"
"ORACLE_GROUP_NAME"="Oracle - OraClient19c_home1"
"ORACLE_BUNDLE_NAME"="InstantClient"
"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
"NLS_DATE_FORMAT"="YYYY-MM-DD HH24:MI:SS"
"SQLPATH"="C:\\Oracle\\InstantClient"
"ORACLE_HOME_KEY"="SOFTWARE\\ORACLE\\KEY_OraClient19c_home1"
注意:64 位元 OS 上 32 位元 Client 需寫入 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\...。
C:\Oracle\InstantClient (或部署路徑下的 bin 子目錄)tnsnames.ora, sqlnet.ora 的目錄,未設定則讀 %ORACLE_HOME%\network\adminputenv("NLS_LANG=...") 覆蓋Oracle.ManagedDataAccess.dll,app.config 設定 data source 即可。Oracle.DataAccess.dll + Instant Client oci.dll,設定 DllPath 或依賴 PATH。ojdbc8.jar。ocijdbc.dll + Instant Client,不建議 生產環境使用。cx_Oracle:需 Instant Client,可用 cx_Oracle.init_oracle_client(lib_dir=r"C:\Oracle\InstantClient") 指定路徑。oracledb (python-oracledb) Thin 模式:無需 Client。# 1. 檢查 DLL 載入
tnsping # 若保留 tnsping.exe
# 2. 程式碼測試
python -c "import oracledb; print(oracledb.__version__)"
# 或
sqlplus user/pwd@//host:port/service # 若保留 sqlplus
C:\Oracle\InstantClient_19_18),應用啟動腳本動態切換 PATH。精簡 Instant Client 部署可大幅縮減應用程式安裝包體積、簡化客戶端環境準備。關鍵在於:依實際使用功能裁剪檔案、正確設定註冊表與環境變數、選擇適合的驅動模式 (Thin/Managed 優先)。