首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 使用者被鎖定 (ORA-28000) 解鎖與防護完整指南

     編輯:Oracle 資料庫相關知識

錯誤現象

ORA-28000: the account is locked

一、立即解鎖

-- 1. 以 DBA 角色登入
conn / as sysdba

-- 2. 設定時間格式方便查詢
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

-- 3. 查詢鎖定時間
select username, lock_date from dba_users where username = 'TEST';
-- USERNAME  LOCK_DATE
-- TEST      2009-03-10 08:51:03

-- 4. 解鎖
alter user test account unlock;
-- User altered.

二、追查鎖定來源 IP

檢查監聽日誌:$ORACLE_HOME/network/admin/log/listener.log

10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)...) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49434)) * establish * lhoms * 0
10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)...) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49435)) * establish * lhoms * 0

可見 10.69.1.11 短時間大量連線失敗導致鎖定。

三、調整失敗嘗試次數閾值

-- 1. 查看目前設定
select * from dba_profiles where resource_name = 'FAILED_LOGIN_ATTEMPTS';

-- 2. 修改為 30 次(預設 10 次)
alter profile default limit failed_login_attempts 30;

-- 3. 設為無限制(不建議生產環境)
alter profile default limit failed_login_attempts unlimited;

四、PL/SQL Developer 圖形化解鎖

  1. 以 system/SYSDBA 登入
  2. 「我的工作」→ 使用者 → 右鍵目標使用者 → 編輯
  3. 取消勾選「帳戶被鎖住」,可同步修改密碼
  4. 套用 → 關閉

五、最佳實務建議

  • 應用程式連線池設定正確帳號密碼,避免輪詢錯誤
  • 監控 DBA_USERS.LOCK_DATE 異動,設定告警
  • 生產環境建議 FAILED_LOGIN_ATTEMPTS = 10,搭配 PASSWORD_LOCK_TIME = 1(鎖定 1 天自動解鎖)
  • 稽核登入失敗:audit session whenever not successful;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved