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

Oracle 帳號解鎖與密碼重設完整指南:從 SCOTT 範例到企業級最佳實務

     編輯:Oracle 資料庫基礎

帳號鎖定常見原因

  • 連續登入失敗超過 FAILED_LOGIN_ATTEMPTS 設定值(預設 10,Profile 控制)
  • 密碼過期且未在 PASSWORD_GRACE_TIME 內變更
  • DBA 主動執行 ALTER USER ... ACCOUNT LOCK
  • 資料庫建立時預設鎖定(如 SCOTT、HR 範例帳號)

標準解鎖流程(需 SYSDBA/DBA 權限)

步驟 1:以具權限帳號連線

$ sqlplus / as sysdba
-- 或
$ sqlplus system/password

步驟 2:解鎖帳號

SQL> ALTER USER scott ACCOUNT UNLOCK;
User altered.

步驟 3:重設密碼(若需)

SQL> ALTER USER scott IDENTIFIED BY tiger;
User altered.

安全建議: 使用複雜密碼,避免預設 tiger。生產環境應啟用密碼驗證函數(VERIFY_FUNCTION)。

步驟 4:驗證登入

SQL> CONNECT scott/tiger
Connected.

完整指令對照表

操作指令權限需求
解鎖ALTER USER username ACCOUNT UNLOCK;ALTER USER 系統權限
鎖定ALTER USER username ACCOUNT LOCK;ALTER USER 系統權限
變更密碼ALTER USER username IDENTIFIED BY newpass;ALTER USER 或 自身
強制密碼過期ALTER USER username PASSWORD EXPIRE;ALTER USER
查詢帳號狀態SELECT username, account_status FROM dba_users;SELECT ANY DICTIONARY

實戰範例:批次解鎖所有被鎖定帳號

SET SERVEROUTPUT ON
BEGIN
  FOR u IN (SELECT username FROM dba_users WHERE account_status = 'LOCKED') LOOP
    EXECUTE IMMEDIATE 'ALTER USER ' || u.username || ' ACCOUNT UNLOCK';
    DBMS_OUTPUT.PUT_LINE('Unlocked: ' || u.username);
  END LOOP;
END;
/
-- 謹慎使用!生產環境請先人工審核名單

Profile 密碼策略管理

帳號鎖定行為由指派的 Profile 控制:

-- 查看預設 profile 設定
SELECT resource_name, limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_type = 'PASSWORD';

-- 修改失敗嘗試次數為 5 次
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 5;

-- 設定密碼存活天數 90 天
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;
PASSWORD_GRACE_TIME 7;

常見錯誤與排解

錯誤原因解決
ORA-01994: GRANT failed: password missingIDENTIFIED BY 子句遺漏補上 IDENTIFIED BY password
ORA-28000: the account is locked帳號仍被鎖定執行 ACCOUNT UNLOCK
ORA-28001: the password has expired密碼過期重設密碼或由用戶首次登入時變更
ORA-01031: insufficient privileges無 ALTER USER 權限以 SYS/SYSTEM 或具 DBA 角色用戶執行

企業級最佳實務

  1. 自動化監控:排程查詢 DBA_USERS,發現 LOCKED/EXPIRED 發送告警
  2. 密碼輪換機制:定期強制變更服務帳號密碼,搭配密碼驗證函數
  3. 審計追蹤:啟用 AUDIT ALTER USER 記錄所有帳號狀態變更
  4. 服務帳號隔離:應用程式使用專屬帳號,避免使用 SCOTT/SYSTEM 等共用帳號
  5. 文件化流程:建立帳號管理 SOP,包含申請、審核、建立、異動、停用全生命週期
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved