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

Oracle 網路服務配置文件詳解:sqlnet.ora、tnsnames.ora 與 listener.ora

     編輯:Oracle 資料庫基礎

核心配置文件概覽

在 Oracle 資料庫環境中,位於 $ORACLE_HOME/network/admin 目錄下的三大核心配置文件——sqlnet.ora、tnsnames.ora 與 listener.ora——分別掌管客戶端連線參數、服務名稱解析與伺服器端監聽服務。理解它們的角色分工與關鍵參數,是排除連線故障、優化網路配置的基礎。

sqlnet.ora:客戶端與伺服器端的共用參數中樞

sqlnet.ora 同時作用於客戶端與伺服器端,定義了認證方式、名稱解析順序、預設網域等核心參數。修改伺服器端的 sqlnet.ora 後,需重啟 Listener 才能生效。

常見參數範例與解析

SQLNET.AUTHENTICATION_SERVICES = (NTS)
NAMES.DIRECTORY_PATH = (TNSNAMES, HOSTNAME, ONAMES)
# NAMES.DEFAULT_DOMAIN = us.oracle.com
  • SQLNET.AUTHENTICATION_SERVICES = (NTS):啟用作業系統認證(Windows 適用)。在資料庫伺服器上可直接使用 sqlplus "/ as sysdba" 登入。Unix/Linux 環境下若遇問題,建議移除此參數。
  • NAMES.DIRECTORY_PATH:指定名稱解析的優先順序。範例中依序為 TNSNAMES(本地 tnsnames.ora)、HOSTNAME(主機名解析)、ONAMES(Oracle Names Server,已建議改用 LDAP)。
  • NAMES.DEFAULT_DOMAIN:設定預設網域。啟用後,tnsnames.ora 中的別名需附加網域(如 oralocal.us.oracle.com),但使用 tnsping 或 sqlplus 連線時仍只需輸入前綴別名,系統會自動補全。

tnsnames.ora:客戶端的「電話簿」

tnsnames.ora 專屬客戶端,記錄連線目標資料庫的服務名稱、IP、Port 及 Instance Name/Service Name。透過 Net Configuration Assistant 或 Net Manager 設定「本地 Net 服務名」或「服務命名」時,實際修改的就是此檔案。PL/SQL、SQL*Plus 等客戶端工具皆透過讀取此檔尋找目標服務。

典型條目結構

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )

listener.ora:伺服器端的「門衛」

listener.ora 僅存在於伺服器端(純客戶端安裝不會有此檔),定義 tnslsnr 監聽進程的監聽地址、Port、服務註冊資訊(SID_LIST)。同樣可透過 Net Configuration Assistant 或 Net Manager 圖形化配置「監聽程序」。

多監聽器範例

LISTENER_CSB =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1621)))
    )
  )

SID_LIST_LISTENER_CSB =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = /u02/oracle/app/oracle/product/10.2.0/db)
      (SID_NAME = zjdevcsb)
    )
  )

上例定義了兩個獨立監聽器(LISTENER_CSB、LISTENER_CSA),分別監聽不同 Port,並各自掛載對應的 SID。SID_LIST_<listener_name> 的命名慣例將服務導向特定監聽器。

故障排查標準流程

  1. 客戶端:依序檢查 sqlnet.ora、tnsnames.ora 設定是否正確。
  2. 伺服器端:確認 listener.ora 配置無誤、Listener 進程已啟動(lsnrctl status)、資料庫實例已掛載/開啟。

前提條件:網路通暢、防火牆未阻擋對應 Port(預設 1521)。

常用 Listener 控制指令

  • lsnrctl start / stop / status / reload

關鍵術語補充

  • DB_DOMAIN:資料庫所屬管理網域,與網際網路域名無關。
  • GLOBAL_NAME:DB_NAME.DB_DOMAIN,資料庫全域唯一識別碼。
  • SERVICE_NAME:8i 引入,對應一個資料庫(而非單一實例),支援 RAC 多實例共用同一服務名,預設等於 GLOBAL_NAME。

善用 $ORACLE_HOME/network/admin/samples 目錄下的範例檔,可快速查閱完整參數說明與最佳實務。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved