DBA 遺忘 INTERNAL/SYS 密碼,導致無法以 SYSDBA/SYSOPER 特權登錄執行啟動、關閉、恢復等管理操作。Oracle 提供兩種特權認證方式:作業系統認證(OSDBA 組)與密碼文件認證。若 OS 認證不可用,需重建密碼文件。
$ORACLE_HOME/dbs/orapw (Unix/Linux) 或 %ORACLE_HOME%\database\PWD.ORA (Windows)REMOTE_LOGIN_PASSWORDFILE 控制使用模式
NONE:僅 OS 認證EXCLUSIVE:單實例專用,支持多特權用戶(默認推薦)SHARED:多實例共享,僅識別 SYS/INTERNALSHUTDOWN IMMEDIATE (需現有特權連接) 或 OS 層面 SHUTDOWN ABORTmv orapwORCL orapwORCL.bak# Unix/Linux
orapwd file=$ORACLE_HOME/dbs/orapwORCL password=NewStr0ngP@ss entries=10
# Windows
orapwd file=%ORACLE_HOME%\database\PWDORCL.ORA password=NewStr0ngP@ss entries=10
參數說明:
file:密碼文件完整路徑password:SYS/INTERNAL 新密碼(區分大小寫,建議 ≥12 位複雜度)entries:最大特權用戶數(含 SYS),預留擴展空間REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE (SPFILE 動態修改需重啟生效)SQLPLUS / AS SYSDBA -- OS 認證測試
SQLPLUS SYS/NewStr0ngP@ss@ORCL AS SYSDBA -- 密碼文件認證測試
| 現象 | 原因 | 對策 |
|---|---|---|
| ORA-01031: insufficient privileges | OS 用戶不屬於 OSDBA 組 / 密碼文件模式不匹配 | 檢查 /etc/group (dba 組) 或設置 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE |
| ORA-01996: password file is corrupted | 文件損壞/版本不匹配/手工編輯 | 重新執行 orapwd 重建 |
| 遠程連接失敗,本地正常 | REMOTE_LOGIN_PASSWORDFILE=NONE 或密碼文件不同步 | 設置 EXCLUSIVE,確保所有節點文件一致 (RAC 需共享存儲或手動同步) |
V$PWFILE_USERS 視圖,清理無效特權用戶SEC_CASE_SENSITIVE_LOGON=TRUE,區分大小寫