密碼檔:特權用戶遠端認證的基石
特權用戶(INTERNAL/SYSDBA/SYSOPER)登入 Oracle 有兩種驗證方式:作業系統驗證、密碼檔驗證。密碼檔存放 SYS/INTERNAL 密碼及其他特權用戶帳密,預設位於 $ORACLE_HOME/dbs/orapw (Unix) 或 %ORACLE_HOME%\database\PWD.ORA (Windows)。
一、建立密碼檔:ORAPWD 工具
orapwd file=<檔案路徑> password= entries=<最大用戶數> [force=y|n]
file:完整路徑檔名,如 /u01/app/oracle/dbs/orapworcl
password:設定 SYS/INTERNAL 初始密碼
entries:最大特權用戶數(含 SYS),預留充足空間避免日後重建
force=y:覆蓋既有檔案
二、關鍵參數:REMOTE_LOGIN_PASSWORDFILE
| 值 | 行為 | 適用場景 |
NONE | 不使用密碼檔,純 OS 驗證 | 單機、OS 認證完備環境 |
EXCLUSIVE | 單一實例專用,**支援非 SYS 特權用戶** | 生產標準、需遠端 SYSDBA 管理 |
SHARED | 多實例共用,**僅識別 SYS/INTERNAL** | RAC/多實例共享、不授予其他用戶 SYSDBA |
搜尋順序:Registry ORA_SID_PWFILE → ORA_PWFILE → 預設 $ORACLE_HOME/dbs/orapw
三、授予/撤銷 SYSDBA/SYSOPER:實際即寫入密碼檔
-- 必須以 SYSDBA 連線,且參數為 EXCLUSIVE
CONNECT SYS AS SYSDBA;
STARTUP;
CREATE USER dba_user IDENTIFIED BY pwd;
GRANT SYSDBA TO dba_user; -- 寫入密碼檔
REVOKE SYSDBA FROM dba_user; -- 從密碼檔移除
只有被授予 SYSDBA/SYSOPER 的用戶才存在於密碼檔中。
四、使用密碼檔遠端登入
# 以 SYSDBA 登入
sqlplus dba_user/pwd@tns_alias AS SYSDBA
# 以 INTERNAL 登入 (8i 相容)
sqlplus INTERNAL/pwd@tns_alias
登入後位於 SYS Schema 下。參數必須為 EXCLUSIVE 或 SHARED。
五、密碼檔維護操作
- 查看成員:
SELECT * FROM V$PWFILE_USERS;(SYSDBA/SYSOPER 欄為 TRUE/FALSE)
- 擴充用戶數上限:需重建密碼檔
# 1. 備份 V$PWFILE_USERS 查詢結果
# 2. SHUTDOWN IMMEDIATE
# 3. 刪除舊密碼檔
# 4. ORAPWD 建立新檔(較大 entries)
# 5. 重新 GRANT SYSDBA 給備份用戶
- 變更狀態:修改
REMOTE_LOGIN_PASSWORDFILE 參數,重啟實例時自動同步至密碼檔。多節點需保持參數檔一致
- 移動檔案位置:移動後更新 Registry/環境變數指向新路徑
- 刪除密碼檔:所有實例參數設
NONE → 刪除檔案 → 後續僅能 OS 驗證登入
安全最佳實務
- 密碼檔權限
600 (Unix) / 僅 Administrators/Oracle 服務帳號可讀 (Windows)
SYS 密碼定期輪換,同步更新密碼檔(ORAPWD force=y 或 ALTER USER SYS IDENTIFIED BY ...)
- 嚴格控制
SYSDBA/SYSOPER 授予對象,定期審查 V$PWFILE_USERS
- 啟用
AUDIT SYSDBA、AUDIT SYSOPER 記錄特權操作
密碼檔是 Oracle 特權存取控制的核心基礎設施。從建立參數規劃、授權流程標準化、到定期審計與備份,每個環節都關乎資料庫最高權限的安全防線。
- 上一篇文章: Oracle 空間管理實戰:表空間監控、區塊擴展優化與儲存參數調整
- 下一篇文章: Oracle 實戰經驗六則:HAVING、外部聯接、刪除重複、SET TRANSACTION、索引、重建
Copyright ©
程式碼之家 All Rights Reserved