完整 Oracle Client 安裝檔 > 1 GB、佔用大量磁碟/登錄檔、易衝突。Instant Client 僅 ~70 MB,解壓即用,適合部署到應用伺服器、開發人員機器、容器映像。
# 例:C:\oracle\instantclient_21_10
# 內含 oci.dll, oraociei21.dll, sqlplus.exe (若含 SQL*Plus 包) 等
| 變數名 | 值(範例) | 說明 |
|---|---|---|
| ORACLE_HOME | C:\oracle\instantclient_21_10 | Instant Client 根目錄 |
| TNS_ADMIN | C:\oracle\instantclient_21_10\network\admin | tnsnames.ora、sqlnet.ora 所在目錄 |
| NLS_LANG | AMERICAN_AMERICA.AL32UTF8 | 字元集設定,避免中文亂碼 |
| PATH | %ORACLE_HOME%;%PATH% | 將 Instant Client 目錄加入 PATH 最前端 |
注意:64 位元 Instant Client 僅支援 64 位元應用;32 位元應用需安裝 32 位元 Instant Client。
在 %TNS_ADMIN% 目錄下建立 tnsnames.ora:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
# 亦可使用 EZCONNECT 免 tnsnames.ora
# sqlplus user/pwd@//192.168.1.100:1521/ORCL
# 含 SQL*Plus 套件時
sqlplus user/password@ORCL
# 或使用 EZCONNECT
sqlplus user/password@//192.168.1.100:1521/ORCL
C:\oracle\instantclient_21_10)oci.dll
# Dockerfile 片段
FROM oraclelinux:8-slim
RUN dnf -y install oracle-release-el8 && \
dnf -y install oracle-instantclient-release-el8 && \
dnf -y install oracle-instantclient-basic-21.10.0.0.0-1.el8.x86_64.rpm \
oracle-instantclient-sqlplus-21.10.0.0.0-1.el8.x86_64.rpm && \
rm -rf /var/cache/dnf
ENV ORACLE_HOME=/usr/lib/oracle/21/client64
ENV TNS_ADMIN=/opt/oracle/network/admin
ENV NLS_LANG=AMERICAN_AMERICA.AL32UTF8
ENV PATH=$ORACLE_HOME/bin:$PATH
# 複製 tnsnames.ora 至 $TNS_ADMIN
| 現象 | 原因 | 解決 |
|---|---|---|
| ORA-12154: TNS:could not resolve | TNS_ADMIN 未設定或 tnsnames.ora 路徑錯誤 | 檢查環境變數、檔案位置、別名拼寫 |
| ORA-12514: Listener does not know service | SERVICE_NAME 與 Listener 註冊不符 | 確認 listener.ora、服務名、PDB/CDB 設定 |
| 中文亂碼 / 方塊字 | NLS_LANG 未設或字元集不匹配 | 設定 NLS_LANG=AMERICAN_AMERICA.AL32UTF8(或資料庫字元集) |
| 應用啟動報「找不到 oci.dll」 | PATH 未包含 Instant Client 目錄、位元不匹配 | 調整 PATH 順序、確認 32/64 位元一致 |