프린트 하기

내맘대로긍정이 알려주는

Oracle 23ai 신기능
무료 세미나 발표자료

다운로드 trending_flat

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