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

Oracle SYS 密碼遺忘完整恢復指南:密碼文件重建與遠程登錄原理解析

     編輯:Oracle 資料庫基礎

核心前提:密碼文件驗證機制

Oracle 特權用戶 (SYSDBA/SYSOPER) 登錄支持兩種驗證:

  1. OS 驗證:屬於 dba/oper 組的 OS 用戶免密登錄(REMOTE_LOGIN_PASSWORDFILE=NONE)。
  2. 密碼文件驗證:攜帶密碼文件 (orapw) 的遠程/本地登錄(EXCLUSIVE 或 SHARED 模式)。

密碼文件存儲 SYS/INTERNAL 及授權用戶的雜湊值,位於 $ORACLE_HOME/dbs (Unix) 或 $ORACLE_HOME/database (Windows)。

場景一:已知 SYSTEM 密碼,重建密碼文件重置 SYS

-- 1. 以 SYSTEM 登錄確認參數
SHOW PARAMETER remote_login_passwordfile;
-- 若非 EXCLUSIVE,需修改
ALTER SYSTEM SET remote_login_passwordfile='EXCLUSIVE' SCOPE=SPFILE;

-- 2. OS 層刪除舊密碼文件並創建新文件
# Unix/Linux
rm $ORACLE_HOME/dbs/orapw$ORACLE_SID
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=NewSysPwd entries=10

# Windows (CMD)
del %ORACLE_HOME%\database\PWD.ORA
orapwd file=%ORACLE_HOME%\database\PWD.ORA password=NewSysPwd entries=10

-- 3. 重啟實例 (因參數 SCOPE=SPFILE)
SHUTDOWN IMMEDIATE; STARTUP;

-- 4. 驗證
sqlplus sys/NewSysPwd@tns_alias as sysdba

場景二:完全忘記所有特權密碼,跳過驗證重置

# 1. 關閉實例
srvctl stop database -d   # RAC
# 或
sqlplus / as sysdba <<< "SHUTDOWN ABORT"

# 2. 啟動實例至 NOMOUNT,關閉密碼文件驗證
# 修改 init.ora/spfile: remote_login_passwordfile=NONE
# 或臨時重命名密碼文件
mv $ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_HOME/dbs/orapw$ORACLE_SID.bak

# 3. 啟動實例
STARTUP

# 4. 重置 SYS 密碼 (此時無需舊密碼)
ALTER USER sys IDENTIFIED BY NewSysPwd;

# 5. 恢復密碼文件驗證
ALTER SYSTEM SET remote_login_passwordfile='EXCLUSIVE' SCOPE=SPFILE;
# 重建密碼文件 (見場景一步驟2)
# 重啟實例
SHUTDOWN IMMEDIATE; STARTUP

密碼文件參數深度解析

參數值含義適用場景
NONE禁用密碼文件,純 OS 驗證單機、高安全要求、無遠程 DBA 需求
EXCLUSIVE單實例獨享,可存非 SYS 用戶標準生產環境、Data Guard 主庫、需授權應用管理員
SHARED多實例共享,僅識別 SYS極少見,不推薦(無法區分實例權限)

搜索順序:
1. 註冊表/環境變量 ORA_SID_PWFILE → 2. ORA_PWFILE → 3. 默認路徑 $ORACLE_HOME/dbs/orapw。

用戶授權與密碼文件同步機制

  • 僅當 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 時,GRANT SYSDBA TO user 才會將用戶寫入密碼文件。
  • REVOKE SYSDBA FROM user 同步刪除密碼文件條目。
  • 查看成員:SELECT * FROM v$pwfile_users;

維護操作速查

  1. 擴容 ENTRIES:查詢 v$pwfile_users 導出用戶 → 關庫 → 刪除舊文件 → orapwd 新建大 ENTRIES 文件 → 重新授權用戶 → 開庫。
  2. 修改狀態:修改初始化參數 → 重啟實例 → Oracle 自動同步文件內部標誌位。
  3. 遷移路徑:移動文件 → 更新 ORA_SID_PWFILE 或環境變量 → 重啟驗證。
  4. 刪除文件:確所有實例 REMOTE_LOGIN_PASSWORDFILE=NONE → 刪除文件 → 僅能 OS 驗證登錄。

安全加固建議

  • 安裝後立即修改 SYS/SYSTEM 默認口令。
  • 生產環境鎖定 SYS/SYSTEM,建立具名 DBA 賬戶並審計。
  • 密碼文件權限 640 oracle:dba,防止非授權讀取雜湊值離線破解。
  • 啟用 SEC_CASE_SENSITIVE_LOGON=TRUE (11g+) 強制大小寫敏感。

總結

密碼文件是 Oracle 特權訪問的「鑰匙櫃」。掌握 orapwd、REMOTE_LOGIN_PASSWORDFILE、GRANT SYSDBA 三者交互邏輯,配合「跳過驗證重置」應急預案,即可從容應對各類密碼遺忘場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved