首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

免安裝 Oracle Client 連線 Oracle 資料庫:Instant Client + 環境變數 + tnsnames.ora 完整設定指南

     編輯:Oracle 資料庫基礎

為什麼需要 Instant Client?

完整 Oracle Client 安裝檔 > 1 GB、佔用大量磁碟/登錄檔、易衝突。Instant Client 僅 ~70 MB,解壓即用,適合部署到應用伺服器、開發人員機器、容器映像。

下載與版本對應

  • 官網:Oracle Instant Client Downloads(需 OTN 帳號)
  • 鏡像站(免登入):中科大鏡像
  • 版本選擇:Basic Light(僅英文/UTF8)、Basic(完整字元集)、SDK(含 OCI 開發標頭)、ODBC、JDBC。
    應用需 OCI(如 PL/SQL Developer、Python cx_Oracle、PHP OCI8)請下載 Basic 或 Basic Light + SQL*Plus 套件。

三步驟完成設定(Windows)

1. 解壓至固定目錄


# 例:C:\oracle\instantclient_21_10
# 內含 oci.dll, oraociei21.dll, sqlplus.exe (若含 SQL*Plus 包) 等

2. 設定系統環境變數(需重啟命令提示字元/服務生效)

變數名值(範例)說明
ORACLE_HOMEC:\oracle\instantclient_21_10Instant Client 根目錄
TNS_ADMINC:\oracle\instantclient_21_10\network\admintnsnames.ora、sqlnet.ora 所在目錄
NLS_LANGAMERICAN_AMERICA.AL32UTF8字元集設定,避免中文亂碼
PATH%ORACLE_HOME%;%PATH%將 Instant Client 目錄加入 PATH 最前端

注意:64 位元 Instant Client 僅支援 64 位元應用;32 位元應用需安裝 32 位元 Instant Client。

3. 建立 tnsnames.ora

在 %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

PL/SQL Developer 設定

  1. Tools → Preferences → Connection
  2. Oracle Home:選擇 Instant Client 目錄(C:\oracle\instantclient_21_10)
  3. OCI Library:自動偵測 oci.dll
  4. 關閉重開 PL/SQL Developer,連線下拉即可看到 TNS 別名。

Linux / Docker 部署


# 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 resolveTNS_ADMIN 未設定或 tnsnames.ora 路徑錯誤檢查環境變數、檔案位置、別名拼寫
ORA-12514: Listener does not know serviceSERVICE_NAME 與 Listener 註冊不符確認 listener.ora、服務名、PDB/CDB 設定
中文亂碼 / 方塊字NLS_LANG 未設或字元集不匹配設定 NLS_LANG=AMERICAN_AMERICA.AL32UTF8(或資料庫字元集)
應用啟動報「找不到 oci.dll」PATH 未包含 Instant Client 目錄、位元不匹配調整 PATH 順序、確認 32/64 位元一致
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved