Oracle 密碼檔儲存 INTERNAL/SYS 及其他特權使用者 (SYSDBA/SYSOPER) 的認證資訊,預設位於 $ORACLE_HOME/dbs/PWDSID.ora。透過密碼檔可實現遠端/本機以特權身分登入資料庫。
使用 orapwd 工具:
orapwd file=<檔名> password=<SYS密碼> entries=<最大使用者數>
file:密碼檔完整路徑password:設定 SYS 密碼entries:允許的最大特權使用者數,建議預留較大值避免日後重建| 值 | 說明 |
|---|---|
NONE | 不使用密碼檔,特權登入透過作業系統驗證 |
EXCLUSIVE | 單一實例專用,可包含 SYS 以外使用者,允許授予 SYSDBA/SYSOPER |
SHARED | 多實例共用,僅識別 SYS/INTERNAL,預設值 |
搜尋順序:註冊表 ORA_SID_PWFILE → ORA_PWFILE → 預設 $ORACLE_HOME/dbs/PWDSID.ora。
前提:REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE。
操作實質為授予/撤銷 SYSDBA 或 SYSOPER 系統權限:
-- 以 SYSDBA 登入
CONNECT SYS/password AS SYSDBA;
STARTUP;
-- 建立一般使用者並授予特權
CREATE USER admin IDENTIFIED BY pwd;
GRANT SYSDBA TO admin; -- 自動加入密碼檔
REVOKE SYSDBA FROM admin; -- 自動從密碼檔移除
-- 以特權使用者登入
CONNECT admin/pwd AS SYSDBA;
-- 以 INTERNAL 登入 (舊版相容)
CONNECT INTERNAL/password;
SELECT * FROM V$PWFILE_USERS;
SYSDBA、SYSOPER 欄位為 TRUE/FALSE 表示擁有權限。
V$PWFILE_USERS 備份現有使用者清單orapwd 重建,調大 entriesSYSDBA/SYSOPER修改 REMOTE_LOGIN_PASSWORDFILE 參數並重啟實例,Oracle 會自動同步密碼檔內部狀態。叢集環境需確保所有節點參數一致。
移動檔案後,更新註冊表 ORA_SID_PWFILE 或環境變數 ORA_PWFILE。
先將所有實例 REMOTE_LOGIN_PASSWORDFILE=NONE,刪除檔案後,特權登入僅能透過作業系統驗證。