Oracle 支援作業系統層級身份驗證,讓已登入 OS 的用戶免密碼以 SYSDBA/SYSOPER 權限連線資料庫。本文完整記錄:SQLNET.ORA 配置、ORA_DBA/ORA_OPER 群組建立、登入方式、Remote_Login_Passwordfile 三模式影響、非特權用戶映射與域前綴處理。
1. SQLNET.ORA 關鍵參數
# 解析順序:TNSNAMES → ONAMES(棄用) → HOSTNAME
NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)
# 驗證方式:NONE=資料庫密碼, NTS=OS 驗證,可並存
SQLNET.AUTHENTICATION_SERVICES = (NONE, NTS)
2. 建立 OS 群組並加入用戶
- ORA_DBA:成員免帳密以
SYSDBA 登入(多實例可建 ORA__DBA)
- ORA_OPER:成員免帳密以
SYSOPER 登入
- Windows:電腦管理 → 本地用戶和群組 → 新增群組 → 加入域/本地用戶
3. 登入方式
C:\> sqlplus "/ as sysdba"
-- 或
C:\> sqlplus /nolog
SQL> CONNECT / AS SYSDBA
4. Remote_Login_Passwordfile 三模式對照
| 模式 | 描述 | OS 驗證影響 |
| NONE (預設) | 不使用密碼檔,OS 特權用戶擁有 SYSDBA/SYSOPER | 支援 OS 驗證 ✓ |
| EXCLUSIVE | 單實例專用密碼檔,可授 SYSDBA/SYSOPER 給非 SYS 用戶 | OS 驗證仍生效,但密碼檔優先 |
| SHARED | 多實例共用密碼檔,僅 SYS 可獲 SYSDBA/SYSOPER | OS 驗證仍生效 |
結論:純 OS 驗證環境建議設 NONE。
5. 非特權 OS 用戶映射 Oracle 帳號
若用戶不在 ORA_DBA/ORA_OPER,需在 Oracle 建立同名帳號:
- 域用戶:
DOMAINNAME\USERNAME
- 本地用戶:
COMPUTERNAME\USERNAME
CREATE USER "DOMAINNAME\USERNAME" IDENTIFIED EXTERNALLY;
GRANT CONNECT TO "DOMAINNAME\USERNAME";
6. 域前綴處理:註冊表關閉域名
Windows 註冊表:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0
新增字串值 AUTH_PREFIX_DOMAIN = FALSE
效果:建立 Oracle 用戶時可忽略域前綴,直接用 USERNAME。
相關參數:OS_AUTHENT_PREFIX(預設空字串,8i 前為 OPS$),Oracle 用戶名上限 30 字元。
結語
OS 驗證 = SQLNET.ORA 啟用 NTS + OS 群組授權 + Remote_Login_Passwordfile=NONE。域環境下務必設定 AUTH_PREFIX_DOMAIN=FALSE 簡化映射。僅限資料庫伺服器本機連線,遠端 Client 使用 OS 驗證有重大安全風險(見下文)。
- 上一篇文章: Oracle 分散式交易兩階段提交三階段深度解析:PREPARE、COMMIT、FORGET 與 Commit Point Site 選擇策略
- 下一篇文章: Oracle 遠端 OS 驗證風險與 9i 企業級身份整合:REMOTE_OS_AUTHENT 陷阱與 Active Directory 整合
Copyright ©
程式碼之家 All Rights Reserved