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

Oracle 遺忘密碼六大破解方案:從 SYSDBA 到 ORAPWD 完整指南

     編輯:Oracle 資料庫基礎

Oracle 密碼重置全場景解決方案

遺忘 SYS/SYSTEM 密碼是 DBA 常見挑戰。本文整理六種實戰驗證的重置方法,涵蓋本地 OS 驗證、密碼檔重建、Linux/Windows 平台差異,助您在無備份密碼檔情況下快速恢復存取權限。

方法一:OS 驗證 + SYSDBA (最通用、推薦首選)

前提:作業系統帳號屬於 ORA_DBA (Windows) 或 dba 群組

C:\> sqlplus /nolog
SQL> CONN / AS SYSDBA
SQL> ALTER USER SYS IDENTIFIED BY NewPass123;
SQL> ALTER USER SYSTEM IDENTIFIED BY NewPass123;

注意:密碼建議以字母開頭,避免 ORA-00988 錯誤。

方法二:易連結字串指定服務名

C:\> sqlplus "/@ORCL as sysdba"
SQL> ALTER USER SYS IDENTIFIED BY NewPass123;
SQL> ALTER USER SYSTEM IDENTIFIED BY NewPass123;

方法三:Windows 環境變數設定 SID

C:\> SET ORACLE_SID=ORCL
C:\> sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> ALTER USER SYS IDENTIFIED BY NewPass123;
SQL> ALTER USER SYSTEM IDENTIFIED BY NewPass123;

方法四:Oracle 9i 時代舊語法 (僅供參考)

SQL> CONN / AS SYSDBA
SQL> ALTER USER sys IDENTIFIED BY "NewPass123";
-- 或建立新用戶
SQL> CREATE USER new_admin IDENTIFIED BY "NewPass123";
SQL> GRANT DBA TO new_admin;

方法五:ORAPWD 重建密碼檔 (僅影響 SYS/SYSTEM)

C:\> orapwd file=D:\oracle\product\10.2.0\db_1\database\PWDORCL.ora password=NewPass123 entries=10
-- 覆蓋原密碼檔後,重啟資料庫生效

關鍵點:

  • entries 預估最大 SYSDBA 使用者數
  • 僅重設 SYS/SYSTEM,其他用戶密碼不變
  • RAC 環境需在所有節點執行並同步檔案

方法六:Linux/Unix 環境 su - oracle

$ su - oracle
$ sqlplus /nolog
SQL> CONN / AS SYSDBA
SQL> STARTUP  -- 若資料庫未啟動
SQL> ALTER USER SYS IDENTIFIED BY NewPass123;

平台差異對照表

平台OS 驗證群組密碼檔路徑慣例啟動腳本
WindowsORA_DBA / ORA_OPER%ORACLE_HOME%\database\PWD.oraOracleService
Linux/Unixdba / oper$ORACLE_HOME/dbs/orapwdbstart / systemd

事後必做檢查清單

  • ☐ 以新密碼分別測試 SYS/SYSTEM 登入 (SQL*Plus、EM、應用連線池)
  • ☐ 更新密碼管理系統/金鑰保管庫記錄
  • ☐ 通知相關開發/運維團隊同步連線字串
  • ☐ 稽核日誌確認無異常登入嘗試
  • ☐ 若使用 Data Guard,Standby 端同步執行密碼檔重建

最佳實踐:平時建立專屬 DBA 帳號 (GRANT SYSDBA) 避免直接用 SYS,定期演練密碼重置流程,將密碼檔納入備份策略。

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