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

Oracle 忘記密碼重置指南:SYSDBA 免密登入、修改 SYS/用戶密碼、常見錯誤避坑

     編輯:Oracle 資料庫基礎

前置條件

  • 作業系統帳號屬於 ORA_DBA (Windows) 或 dba 群組 (Linux/Unix)。
  • 環境變數 ORACLE_SID、ORACLE_HOME 正確設定。

標準重置流程

# 1. 免密以 SYSDBA 登入
sqlplus /nolog
SQL> CONN / AS SYSDBA
-- 或直接
sqlplus / AS SYSDBA

# 2. 修改 SYS 密碼 (若 SYS 也忘記)
SQL> ALTER USER SYS IDENTIFIED BY NewSysPass123;
-- 密碼必須以字母開頭,否則 ORA-00988
-- 建議複雜度:大小寫+數字+特殊符號,長度 ≥ 8

# 3. 修改其他用戶密碼
SQL> ALTER USER system IDENTIFIED BY NewSysPass123;
SQL> ALTER USER app_user IDENTIFIED BY NewAppPass456;

# 4. 解鎖帳號 (若被鎖定)
SQL> ALTER USER app_user ACCOUNT UNLOCK;

密碼驗證函數與 Profile 影響

  • 若用戶套用 PROFILE 含 PASSWORD_VERIFY_FUNCTION,新密碼必須通過驗證函數檢查(長度、複雜度、歷史重複等)。
  • 查詢用戶 Profile:SELECT profile FROM dba_users WHERE username='APP_USER';
  • 查詢驗證函數:SELECT limit FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_VERIFY_FUNCTION';
  • 臨時停用驗證:ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL; (修改完再恢復)。

常見錯誤與對策

錯誤原因對策
ORA-01031: insufficient privileges非 SYSDBA / 非 DBA 群組確認 OS 群組、以正確用戶執行 sqlplus
ORA-00988: missing or invalid password(s)密碼以數字開頭或含非法字符密碼以字母開頭,避免 @ " ' 等特殊字符或用雙引號包裹
ORA-28000: the account is locked帳號被鎖定ALTER USER ... ACCOUNT UNLOCK;
ORA-28001: the password has expired密碼過期ALTER USER ... IDENTIFIED BY new_pass REPLACE old_pass; 或管理員重置
ORA-01994: GRANT failed: password missing for user建立用戶未指定密碼CREATE USER ... IDENTIFIED BY ...

12c/18c/19c 多租戶 (CDB/PDB) 注意事項

-- 連線到 CDB$ROOT
sqlplus / AS SYSDBA
ALTER SESSION SET CONTAINER = CDB$ROOT;
ALTER USER SYS IDENTIFIED BY NewPass CONTAINER=ALL;  -- 修改所有容器 SYS 密碼

-- 連線到特定 PDB
ALTER SESSION SET CONTAINER = ORCLPDB1;
ALTER USER app_user IDENTIFIED BY NewPass CONTAINER=CURRENT;

密碼檔管理 (Remote SYSDBA)

  • 修改 SYS 密碼後,若使用 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE/SHARED,需重建密碼檔:
    orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=NewSysPass123 entries=10 force=y
  • Data Guard 環境需同步 Standby 端密碼檔。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved