Oracle 預設範例綱要 SCOTT 常因密碼過期與帳號鎖定而無法登入。本文提供標準解鎖與重設密碼流程,適用 10g 至 21c 所有版本。
CONNECT sys AS sysdba;
SELECT username, account_status, lock_date, expiry_date
FROM dba_users
WHERE username = 'SCOTT';
典型輸出:ACCOUNT_STATUS = EXPIRED & LOCKED。
ALTER USER scott ACCOUNT UNLOCK;
再次查詢:ACCOUNT_STATUS = EXPIRED(已解鎖但密碼仍過期)。
CONNECT scott/tiger@服務名;
-- 提示:ORA-28001: the password has expired
-- 輸入新密碼(可仍用 tiger 或自訂)
New password: tiger
Retype new password: tiger
-- 密碼已變更,連線成功
CONNECT sys AS sysdba;
SELECT username, account_status FROM dba_users WHERE username = 'SCOTT';
-- ACCOUNT_STATUS = OPEN
-- unlock_scott.sql
CONNECT sys/<sys_password> AS sysdba
ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK;
-- 若需變更密碼
-- ALTER USER scott IDENTIFIED BY new_strong_password ACCOUNT UNLOCK;
EXIT
BEGIN
FOR u IN (SELECT username FROM dba_users
WHERE username IN ('SCOTT','HR','OE','SH','PM','IX','BI')
AND account_status LIKE '%LOCKED%')
LOOP
EXECUTE IMMEDIATE 'ALTER USER ' || u.username || ' ACCOUNT UNLOCK';
END LOOP;
END;
/
PASSWORD_VERIFY_FUNCTION 啟用,新密碼需符合複雜度規則。ALTER SESSION SET CONTAINER = pdb_name;。