批次錯誤使用者名稱與密碼導致業務使用者HANG住(library cache lock)
批次錯誤使用者名稱與密碼導致業務使用者HANG住(library cache lock)
資料庫版本
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for HPUX: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
問題如下
SQL> conn doudou/oracle (HANG住了)
檢視等待事件
select
count(*),
CASE WHEN state != 'WAITING' THEN 'WORKING'
ELSE 'WAITING'
END AS state,
CASE WHEN state != 'WAITING' THEN 'On CPU / runqueue'
ELSE event
END AS sw_event
FROM
v$session_wait
GROUP BY
CASE WHEN state != 'WAITING' THEN 'WORKING'
ELSE 'WAITING'
END,
CASE WHEN state != 'WAITING' THEN 'On CPU / runqueue'
ELSE event
END
ORDER BY
1 DESC, 2 DESC
/
library cache lock WAITING 585
rdbms ipc message WAITING 16
Space Manager: slave idle wait WAITING 3
jobq slave wait WAITING 2
Streams AQ: waiting for time management or cleanup tasks WAITING 1
VKRM Idle WAITING 1
smon timer WAITING 1
Streams AQ: qmn coordinator idle wait WAITING 1
pmon timer WAITING 1
Streams AQ: qmn slave idle wait WAITING 1
DIAG idle wait WAITED KNOWN TIME 1
DIAG idle wait WAITING 1
library cache lock WAITED KNOWN TIME 1
VKTM Logical Idle Wait WAITING 1
asynch descriptor resize WAITED SHORT TIME 1
SQL*Net message from client WAITING 1
結合等待事件去分析
1.library cache lock 等待嚴重,另一方面考慮只有單獨的這個業務使用者doudou不能登入,其他業務型別的使用者doudou01不受任何影響。再次懷疑可能是11g 密碼延遲機制導致的這個問題。
2.然後檢視了一下使用者修改密碼的時間
select * from sys.user$ where name='DOUDOU';
PTIME=2013/11/6 11:22:09 --PTIME is the date the password was last changed
CTIME=2013/11/6 11:22:09 --CTIME is the date the user was created
從這裡可以看出我們DOUDOU使用者,沒有修改過密碼,但是為什麼會出現大量的library cache lock,沒有修改密碼,但是新業務配置的使用者密碼會不會有錯誤呢,這樣詢問了開發人員,原來他們的配置有錯誤,使用者密碼配置錯誤了。也就是錯誤的使用者和密碼批次請求導致了大量的library cache lock。
搜尋MOS找到了類似的案例
Library Cache Locks Due to Invalid Login Attempts (Doc ID 1309738.1)
Cause
Numerous failed logins attempts can cause row cache lock waits and/or library cache lock waits.
Set the below event in the spfile or init.ora file and restart the database:
alter system set event ="28401 TRACE NAME CONTEXT FOREVER, LEVEL 1" scope=spfile;
or
EVENT="28401 TRACE NAME CONTEXT FOREVER, LEVEL 1"
3.問題解決,正確的使用者密碼配置之後,並設定引數EVENT="28401 TRACE NAME CONTEXT FOREVER, LEVEL 1",大量的library cache lock逐漸減少,最後消除。新業務也正常使用了
附表
user$ 檢視解釋
Test cases below show:
?CTIME is the date the user was created.
?LTIME is the date the user was last locked. (Note that it doesn't get NULLed when you unlock the user).
?PTIME is the date the password was last changed.
?LCOUNT is the number of failed logins.
記錄使用者登入失敗觸發器:
CREATE OR REPLACE TRIGGER logon_denied_to_alert
AFTER servererror ON DATABASE
DECLARE
message VARCHAR2(168);
ip VARCHAR2(15);
v_os_user VARCHAR2(80);
v_module VARCHAR2(50);
v_action VARCHAR2(50);
v_pid VARCHAR2(10);
v_sid NUMBER;
v_program VARCHAR2(48);
BEGIN
IF (ora_is_servererror(1017)) THEN
-- get ip FOR remote connections :
IF upper(sys_context('userenv', 'network_protocol')) = 'TCP' THEN
ip := sys_context('userenv', 'ip_address');
END IF;
SELECT sid INTO v_sid FROM sys.v_$mystat WHERE rownum < 2;
SELECT p.spid, v.program
INTO v_pid, v_program
FROM v$process p, v$session v
WHERE p.addr = v.paddr
AND v.sid = v_sid;
v_os_user := sys_context('userenv', 'os_user');
dbms_application_info.read_module(v_module, v_action);
message := to_char(SYSDATE, 'YYYYMMDD HH24MISS') ||
' logon denied from ' || nvl(ip, 'localhost') || ' ' ||
v_pid || ' ' || v_os_user || ' with ' || v_program || ' – ' ||
v_module || ' ' || v_action;
sys.dbms_system.ksdwrt(2, message);
END IF;
END;
/
特別鳴謝: 附表:
查詢錯誤密碼的登入者
select username,
os_username,
userhost,
client_id,
trunc(timestamp),
returncode,
count(*) failed_logins
from dba_audit_trail
where returncode=1017 and --1017 is invalid username/password
timestamp < sysdate
group by username,os_username,userhost, client_id,trunc(timestamp),returncode
order by trunc(timestamp) desc ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2156412/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 根據教程中,輸錯密碼或使用者名稱後,卻不能返回‘使用者名稱或密碼錯誤’密碼
- 織夢使用者名稱密碼?織夢提示你的密碼錯誤密碼
- win10 smb使用者名稱密碼錯誤怎麼解決_win10電腦smb使用者名稱密碼錯誤修復方法Win10密碼
- Oracle11g 密碼延遲認證導致library cache lock的情況分析Oracle密碼
- 資料庫使用者名稱和密碼錯誤:如何解決?資料庫密碼
- jQuery記住使用者名稱和密碼效果程式碼例項jQuery密碼
- 故障:核心表業務高峰期授權導致library cache lock和mutex x競爭Mutex
- Oracle 11g 密碼延遲認證與 library cache lock 等待Oracle密碼
- library cache pin和library cache lock(一)
- library cache pin和library cache lock (zt)
- library cache pin和library cache lock(二)
- git 使用者名稱密碼相關Git密碼
- library cache lock和library cache bin實驗_2.0
- 公司網站使用者名稱密碼修改?網站密碼
- 根據使用者名稱和密碼查詢使用者密碼
- 通過jquery.cookie.js實現記住使用者名稱、密碼登入功能jQueryCookieJS密碼
- 使用者名稱和密碼輸入練習密碼
- 織夢dedecms無法登入後臺,提示使用者名稱或密碼錯誤怎麼辦密碼
- Library Cache最佳化篇(一)降低library cache lock和library cache pin的方法
- latch:library cache lock等待事件事件
- Java 程式碼本地設定Hadoop使用者名稱密碼JavaHadoop密碼
- 關於登入(使用者名稱,密碼,驗證碼)密碼
- [20240920]跟蹤library cache lock library cache pin使用gdb.txt
- [20240824]跟蹤library cache lock library cache pin使用gdb.txt
- 商城-使用者註冊-根據使用者名稱和密碼查詢使用者密碼
- win10系統svn使用者名稱密碼怎樣更改_win10 svn更換使用者名稱密碼操作方法Win10密碼
- 用Servlet進行使用者名稱和密碼校驗Servlet密碼
- linux中記錄GIT使用者名稱密碼的方法LinuxGit密碼
- Kafka怎麼配置SASL使用者名稱密碼認證Kafka密碼
- mongodb對資料庫建立使用者名稱和密碼MongoDB資料庫密碼
- python輸入錯誤密碼使用者鎖定Python密碼
- SQLServer刪除登入記錄使用者名稱和密碼SQLServer密碼
- 透過使用者名稱密碼認證保障 MQTT 接入安全密碼MQQT
- 禁用SAP Hana錯誤密碼鎖定使用者功能密碼
- 【ASK_ORACLE】Library cache pin 與 library load lock的關係和區別Oracle
- 帝國CMS忘記後臺登陸使用者名稱 密碼 認證碼 安全提問答案 資料庫使用者名稱及密碼的解決方法密碼資料庫
- Library Cache 診斷:Lock, Pin 以及 Load Lock (文件 ID 1548524.1)
- Dockerfile 中RUN互動需要輸入 使用者名稱和密碼Docker密碼