내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
OS환경 : AIX 5.3.0.0(64bit)
DB 환경 : Oracle Database 10.2.0.5
에러 : WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!
@alert log
Thu Sep 13 22:47:23 KORST 2018
>>> WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! pid=128
System State dumped to trace file /home/oracle/app/oracle/admin/ORCL/bdump/orcl_j001_5587004.trc
@trace log
*** 2018-09-13 22:47:23.924
*** ACTION NAME:(GATHER_STATS_JOB) 2018-09-13 22:47:23.918
*** MODULE NAME:(DBMS_SCHEDULER) 2018-09-13 22:47:23.918
*** SERVICE NAME:(SYS$USERS) 2018-09-13 22:47:23.918
*** SESSION ID:(1002.12928) 2018-09-13 22:47:23.918
>>> WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! <<<
row cache enqueue: session: 7000000ac9edc60, mode: N, request: S
===================================================
SYSTEM STATE
------------
System global information:
processes: base 7000000ac612240, size 1000, cleanup 7000000ac654110
allocation: free sessions 7000000af75fbf8, free calls 0
control alloc errors: 0 (process), 0 (session), 0 (call)
PMON latch cleanup depth: 0
seconds since PMON's last scan for dead processes: 57
system statistics:
.
.
관련내용 :
Wait Parameters
row cache lock 대기이벤트의 대기 파라미터는 다음과 같다.
- P1 : 세션이 대기하고 있는 row cache lock의 Cache ID, V$ROWCACHE 로부터 Cache ID에 해당되는 파라미터를 조회할 수 있다.
- P2 : 락이 소유된 모드
- P3 : 락을 요청한 모드
아래의 SQL문을 이용하여 V$ROWCACHE로부터 Cache ID 에 해당되는 파라미터를 조회할 수 있다.
select cache# , type, parameter
from v$rowcache
where cache# = &Pl;
Wait Time
그 Session은 alert.log에 다음 message를 기록하고 abort 된다.
3초 동안 대기한다. 100번의 타임아웃이 발생하면, roll back되고 그 세션은 alert log 파일에 WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK 이란 에러메시지를 기록한 후 프로세스는 중단된다.
원인 : 3초 대기 * 100번 타임아웃으로 인한 프로세스 abort로 인한메세지
참조 : Oracle Wait Interface: A Practical Guide to Performance Diagnostics & Tuning 서적
https://m.blog.naver.com/kwoncharlie/10154623125