密碼檔角色與位置
- 儲存
SYS/INTERNAL 及具 SYSDBA/SYSOPER 權限用戶的認證資訊
- 預設路徑:
$ORACLE_HOME/dbs/orapw (Linux/Unix) 或 %ORACLE_HOME%\database\PWD.ora (Windows)
- 由
ORAPWD 工具建立,或 DBCA 建庫時自動產生
建立密碼檔
orapwd file=$ORACLE_HOME/dbs/orapwORCL password=SysPassword entries=30 force=y
file 密碼檔完整路徑
password SYS/INTERNAL 初始密碼
entries 最大使用者數 (含 SYS),預留擴充空間
force=y 覆蓋既有檔案 (12c+)
關鍵參數:REMOTE_LOGIN_PASSWORDFILE
| 值 | 行為 | 適用場景 |
| NONE | 不使用密碼檔,僅 OS 驗證 | 單機、僅本地 DBA 管理 |
| EXCLUSIVE | 單一實例專用,可儲存多用戶 | 標準生產環境、需遠端 SYSDBA 登入 |
| SHARED | 多實例共用,僅識別 SYS | RAC / 多實例共享同密碼檔 (罕用) |
生產環境必須設為 EXCLUSIVE 才能授予其他用戶 SYSDBA/SYSOPER。
授予/撤銷管理權限 (等同增減密碼檔用戶)
-- 前提:以 SYSDBA 登入,參數為 EXCLUSIVE
CONNECT sys/password AS SYSDBA
-- 授予 SYSDBA (自動寫入密碼檔)
GRANT SYSDBA TO dba_user;
-- 授予 SYSOPER
GRANT SYSOPER TO oper_user;
-- 撤銷 (自動從密碼檔移除)
REVOKE SYSDBA FROM dba_user;
REVOKE SYSOPER FROM oper_user;
使用密碼檔登入
-- 1. SYSDBA 身分
sqlplus dba_user/password AS SYSDBA
-- 2. SYSOPER 身分
sqlplus oper_user/password AS SYSOPER
-- 3. INTERNAL (舊版相容)
sqlplus internal/password
登入後 Session 位於 SYS Schema。
密碼檔防護與稽核
1. 查看密碼檔成員
SELECT * FROM v$pwfile_users;
2. 狀態同步機制
- 啟動實例時讀取參數檔設定
- 掛載資料庫時比對密碼檔內部狀態
- 不一致時自動更新密碼檔狀態
- 多節點/RAC 必須確保所有節點參數檔一致
3. 變更儲存位置
- 關閉所有實例
- 移動密碼檔至新路徑
- 修改註冊表 (Windows) 或環境變數
ORA__PWFILE 指向新路徑
- 啟動實例驗證
4. 刪除密碼檔
- 所有實例設定
REMOTE_LOGIN_PASSWORDFILE=NONE
- 刪除實體檔案
- 後續僅能透過 OS 驗證 (如
sqlplus / as sysdba) 登入
安全最佳實踐
- 定期輪換 SYS 密碼 (配合
orapwd 重建)
- 最小權限原則:僅必要 DBA 帳號授予 SYSDBA
- 稽核
v$pwfile_users 異動,納入合規檢查
- 檔案權限鎖定:OS 層面
chmod 600,僅 Oracle 安裝擁有者可讀寫
- 避免 SHARED 模式,防止權限混淆
- 上一篇文章: Oracle 表空間操作全攻略:建立、擴充、移動與狀態控制
- 下一篇文章: Oracle 高效交易撰寫四大準則:減少鎖衝突、提升併發效能
Copyright ©
程式碼之家 All Rights Reserved