在 Oracle 資料庫的網路架構中,sqlnet.ora 和 cman.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.ora | cman.ora |
|---|---|---|
| 部署位置 | 用戶端與資料庫伺服器都要有。 | 僅安裝在 CMAN 伺服器上。 |
| 角色 | 參與連線的雙方都要遵守的「條約」。 | 代理人(Proxy)的「工作手冊」。 |
| 必須性 | 雖然有預設值,但幾乎每個環境都會配置。 | 只有在使用 Oracle Connection Manager 時才需要。 |
3. 常見參數與用途
sqlnet.ora 的典型參數:
-
NAMES.DIRECTORY_PATH: 指定名稱解析順序(例如:TNSNAMES, EZCONNECT)。 -
SQLNET.AUTHENTICATION_SERVICES: 指定身分驗證方法(如NTS或NONE)。 -
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 時,這兩個文件會如何協作?
-
用戶端根據自己的
sqlnet.ora決定連線加密方式。 -
用戶端連向 CMAN 伺服器(中繼站)。
-
CMAN 伺服器讀取
cman.ora,檢查規則(Rule List),看看用戶端是否有權限連往後端的資料庫。 -
若允許,CMAN 將連線轉發給後端資料庫。
總結
-
如果你只是普通的客戶端連資料庫,你只需要關心 sqlnet.ora。
-
如果你是網路管理員,要在 DMZ 區架設一個 Proxy 來隔離內網資料庫與外網客戶端,你才需要配置 cman.ora。