在 Oracle 資料庫的網路架構中,sqlnet.oracman.ora 分別扮演不同的角色。簡單來說,sqlnet.ora 是通用的「網路行為規則」,而 cman.ora 則是專門給「連線管理器(Proxy 服務)」使用的設定檔。

以下是它們的詳細區別:

1. 定義與核心功能e

  • sqlnet.ora (設定檔 - Profile)

    它是 Oracle Net 的「設定檔」。它定義了用戶端(Client)或伺服器(Server)在進行網路連線時的基本規則與偏好。例如:我該優先使用哪種名稱解析方法?連線超時時間是多少?是否要加密?

  • cman.ora (連線管理器 - Connection Manager)

    它是 Oracle Connection Manager (CMAN) 的專屬設定檔。CMAN 是一個代理伺服器 (Proxy),通常安裝在獨立的機器上,用於在用戶端與資料庫之間轉發連線。cman.ora 定義了這個 Proxy 該在哪個 Port 監聽、誰可以連進來(防火牆規則)以及連線轉發路徑。


2. 部署位置的區別

特性sqlnet.oracman.ora
部署位置用戶端資料庫伺服器都要有。僅安裝在 CMAN 伺服器上。
角色參與連線的雙方都要遵守的「條約」。代理人(Proxy)的「工作手冊」。
必須性雖然有預設值,但幾乎每個環境都會配置。只有在使用 Oracle Connection Manager 時才需要。

3. 常見參數與用途

sqlnet.ora 的典型參數:

  • NAMES.DIRECTORY_PATH: 指定名稱解析順序(例如:TNSNAMES, EZCONNECT)。

  • SQLNET.AUTHENTICATION_SERVICES: 指定身分驗證方法(如 NTSNONE)。

  • SQLNET.EXPIRE_TIME: 檢測無效連線(Dead Connection Detection, DCD)。

  • SQLNET.ENCRYPTION_SERVER: 設定資料傳輸加密。

cman.ora 的典型參數:

  • ADDRESS: CMAN 監聽連線要求的 IP 與 Port(通常是 1950)。

  • RULE_LIST: 連線規則(存取控制)。可以設定:源 IP A 可以存取 目標資料庫 B,其他的都拒絕。

  • PARAMETER_LIST: 設定最大連線數、超時時間、日誌路徑等 CMAN 運行參數。


4. 運作流程範例

當你使用 CMAN 時,這兩個文件會如何協作?

  1. 用戶端根據自己的 sqlnet.ora 決定連線加密方式。

  2. 用戶端連向 CMAN 伺服器(中繼站)。

  3. CMAN 伺服器讀取 cman.ora,檢查規則(Rule List),看看用戶端是否有權限連往後端的資料庫。

  4. 若允許,CMAN 將連線轉發給後端資料庫。

總結

  • 如果你只是普通的客戶端連資料庫,你只需要關心 sqlnet.ora

  • 如果你是網路管理員,要在 DMZ 區架設一個 Proxy 來隔離內網資料庫與外網客戶端,你才需要配置 cman.ora

ORACLE