首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle INTERNAL/SYS 密碼遺忘?orapwd 重建密碼文件快速找回特權訪問

     編輯:Oracle 資料庫基礎

問題場景

DBA 遺忘 INTERNAL/SYS 密碼,導致無法以 SYSDBA/SYSOPER 特權登錄執行啟動、關閉、恢復等管理操作。Oracle 提供兩種特權認證方式:作業系統認證(OSDBA 組)與密碼文件認證。若 OS 認證不可用,需重建密碼文件。

密碼文件機制

  • 位置:$ORACLE_HOME/dbs/orapw (Unix/Linux) 或 %ORACLE_HOME%\database\PWD.ORA (Windows)
  • 存儲:SYS/INTERNAL 密碼雜湊值、授予 SYSDBA/SYSOPER 的用戶列表
  • 參數:REMOTE_LOGIN_PASSWORDFILE 控制使用模式
    • NONE:僅 OS 認證
    • EXCLUSIVE:單實例專用,支持多特權用戶(默認推薦)
    • SHARED:多實例共享,僅識別 SYS/INTERNAL

重建密碼文件標準流程

  1. 關閉資料庫實例:SHUTDOWN IMMEDIATE (需現有特權連接) 或 OS 層面 SHUTDOWN ABORT
  2. 備份舊密碼文件:mv orapwORCL orapwORCL.bak
  3. 執行 orapwd 創建新文件:
    # 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),預留擴展空間
  4. 確認初始化參數:REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE (SPFILE 動態修改需重啟生效)
  5. 啟動實例驗證:
    SQLPLUS / AS SYSDBA  -- OS 認證測試
    SQLPLUS SYS/NewStr0ngP@ss@ORCL AS SYSDBA  -- 密碼文件認證測試

常見陷阱與規避

現象原因對策
ORA-01031: insufficient privilegesOS 用戶不屬於 OSDBA 組 / 密碼文件模式不匹配檢查 /etc/group (dba 組) 或設置 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
ORA-01996: password file is corrupted文件損壞/版本不匹配/手工編輯重新執行 orapwd 重建
遠程連接失敗,本地正常REMOTE_LOGIN_PASSWORDFILE=NONE 或密碼文件不同步設置 EXCLUSIVE,確保所有節點文件一致 (RAC 需共享存儲或手動同步)

最佳實踐建議

  1. 密碼文件納入備份策略,異地存儲
  2. 定期輪換 SYS 密碼(季度),同步更新 Data Guard 备库密碼文件
  3. 審計 V$PWFILE_USERS 視圖,清理無效特權用戶
  4. 生產環境強制 SEC_CASE_SENSITIVE_LOGON=TRUE,區分大小寫
  5. 關鍵操作雙人複核,記錄操作日志
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved