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

Oracle Client 連線資料庫完整配置指南:從安裝到除錯

     編輯:Oracle 資料庫基礎

核心概念:為何需要 Oracle Client?

SQL Server 整合於 Windows 作業系統,Client 元件內建;Oracle 則需在客戶端獨立安裝 Oracle Net 通訊軟體(包含於 Oracle Client 中)。例外:Java 使用 JDBC Thin Driver 可免裝 Client。若機器已安裝 Oracle Database,則自帶 Client 元件,無需重複安裝。

聆聽埠:Oracle vs SQL Server

SQL Server 固定監聽埠 1433 且不建議修改,造成「無監聽埠」錯覺;Oracle 將監聽埠(預設 1521)暴露於設定檔,允許彈性調整,但客戶端與伺服器端設定必須一致。

兩大階段:安裝軟體 → 適當配置

A. 客戶端機器安裝與配置

  1. 安裝 Oracle Net 通訊軟體(含於 Oracle Client)。
  2. 配置 sqlnet.ora:
    NAMES.DIRECTORY_PATH = (TNSNAMES, ...)
    NAMES.DEFAULT_DOMAIN = DB_DOMAIN(通常註解或刪除此參數)。
  3. 配置 tnsnames.ora(核心步驟,詳見下文)。

B. 伺服器端前置條件

  • Listener 已啟動:lsnrctl start [listener_name],lsnrctl status 驗證。
  • 資料庫已啟動:
    Oracle 9i:sqlplus "/ as sysdba" → startup
    Oracle 8i:svrmgrl → connect internal → startup

核心實作:手動編輯 tnsnames.ora

檔案位置:%ORACLE_HOME%\network\admin\tnsnames.ora (Windows) 或 $ORACLE_HOME/network/admin/tnsnames.ora (Unix)。

範例:主機 testserver,服務名 orcl.testserver.com,埠 1521,定義網路服務名 test:

test =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = testserver)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl.testserver.com)
    )
  )

關鍵參數說明:

  • PROTOCOL:通常為 TCP,無需修改。
  • HOST:資料庫監聽所在主機名或 IP,客戶端需 ping 通,否則修改 hosts 檔。
  • PORT:必須與伺服器端 listener.ora 或 lsnrctl status 顯示的埠一致。
  • SERVICE_NAME:伺服器端 show parameter service_name 查看。

驗證連線與常見陷阱

  1. 測試:sqlplus system/manager@test
  2. DEFAULT_DOMAIN 陷阱:若 sqlnet.ora 設定 NAMES.DEFAULT_DOMAIN = testserver.com,實際連線會自動附加尾碼變成 test.testserver.com,導致找不到服務名。解決:註解該參數,或在 tnsnames.ora 中直接使用完整名稱。
  3. 圖形工具副作用:Net Configuration Assistant 若偵測到 DNS 尾碼,會自動在服務名後附加,導致手動連線時名稱不符。建議手動編輯 tnsnames.ora 或同步設定 NAMES.DEFAULT_DOMAIN。

終極測試:乾坤大挪移法

將客戶端 tnsnames.ora 內容複製到伺服器端同檔案,於伺服器本機測試 sqlplus system/manager@test。若成功 → 網路問題;若失敗 → 服務名配置或伺服器端問題。

常見錯誤代碼速查

錯誤碼原因解決
ORA-12154 / TNS-12154服務名不存在於 tnsnames.ora,或 DEFAULT_DOMAIN 導致名稱不符檢查服務名拼寫、註解 DEFAULT_DOMAIN
ORA-12514tnsnames.ora 中 SERVICE_NAME 與伺服器端不符修正 SERVICE_NAME

關鍵術語釐清

  • DB_NAME:資料庫唯一識別碼,最長 8 字元。
  • DB_DOMAIN:管理用網域名稱,可對應網際網路域名。
  • GLOBAL_NAME:DB_NAME.DB_DOMAIN,建議作為資料庫全域識別。
  • SERVICE_NAME:8i 引入,對應一個資料庫(而非實例),預設等於 GLOBAL_NAME,一個資料庫可對應多個服務名。
  • NET SERVICE NAME:客戶端連線用別名,實現位置透明。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved