FAILED_LOGIN_ATTEMPTS 設定值(預設 10,Profile 控制)PASSWORD_GRACE_TIME 內變更ALTER USER ... ACCOUNT LOCK$ sqlplus / as sysdba
-- 或
$ sqlplus system/password
SQL> ALTER USER scott ACCOUNT UNLOCK;
User altered.
SQL> ALTER USER scott IDENTIFIED BY tiger;
User altered.
安全建議: 使用複雜密碼,避免預設 tiger。生產環境應啟用密碼驗證函數(VERIFY_FUNCTION)。
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 設定
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 missing | IDENTIFIED 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 角色用戶執行 |
DBA_USERS,發現 LOCKED/EXPIRED 發送告警AUDIT ALTER USER 記錄所有帳號狀態變更