본문 바로가기

빅데이터과정/OWI

#40_140807_OWI_ROW CACHE LOCK

728x90

# ROW CACHE LOCK





Row cache lock
sequence의 캐쉬속성을 nocache로 했을 때 발생하는 대기 이벤트




Row cache lock 테스트

Awr report
SQL> connect owi/owi
SQL> alter sequence seq_sq_enqueue nocache;
SQL> exec dbms_workload_repository.create_snapshot;
SQL> @exec
Event name to simulate: sq_enqueue
Session count [10]: 10
Expired by time(1) or looping count(2) [1]: 1
Execution internval(sec or count) [30]: 120
Enable_trace (1=TRUE, 0=FALSE) [0]: 1
Exec method(0=Oracle Job, 1=Unix Shell) [0]: 0
Init data(1=TRUE, 0=FALSE) [1]: 1

# ORANGE
오렌지에서 row cache lock이 보이는 것을 확인할 수 있다



SQL> exec dbms_workload_repository.create_snapshot;
SQL> @?/rdbms/admin/awrrpt.sql

# AWR REPORT





row cache lock이 대부분의 event를 차지하는 것을 알 수 있다
레포트에서 lock이 걸린 enqueue이름을 확인할 수 있다(SEQ_SQ_ENQUEUE)



Addm Report

SQL> connect owi/owi
SQL> alter sequence seq_sq_enqueue nocache;
SQL> exec dbms_workload_repository.create_snapshot;
SQL> @exec

SQL> exec dbms_workload_repository.create_snapshot;
SQL> @?/rdbms/admin/addmrpt.sql



# Addm Report





………………………………………………..

Finding 2: Sequence Usage
Impact is 12.51 active sessions, 82.66% of total activity.
----------------------------------------------------------
Sequence cache misses were consuming significant database time.

   Recommendation 1: Application Analysis
   Estimated benefit is 12.51 active sessions, 82.66% of total activity.
   ---------------------------------------------------------------------
   Action
      Investigate application or look at top SQL to find hot sequences. Use a
      larger cache size for those sequences. Try avoiding the use of the ORDER
      setting if running RAC.
Addm report  awr report와는 다르게 해결방법까지 알려준다
위의 결과를 보면 sequence usage 82%를 넘나들며 많은 리소스를 사용중이다
그리고 빨간 글씨부분을 읽어보면 cache가 현재 없다고 말하고 있고 큰 cache size를 사용하라고 추천하고 있다




AWR compare report




sq enqueue를 부하를 주는데 위 그림처럼 snapsot을 3번 찍어서 부분을 확인한다
첫번째 부분은 no cache 상태일 때를 보는 것이고 두번째 부분은 cache size를 800으로 변경하고 결과를 확인한다

SQL> exec dbms_workload_repository.create_snapshot;
SQL> @exec
SQ enqueue 발생 시킨다(120)
SQL> exec dbms_workload_repository.create_snapshot;
SQL> alter sequence seq_sq_enqueue cache 800;
SQL> @exec
SQ enqueue 발생 시킨다(120)



SQL> exec dbms_workload_repository.create_snapshot;
SQL> @?/rdbms/admin/awrddrpt.sql

Row cache lock이 첫번째 report에서는 보이지만 2번쨰 report는 보이지 않는다








'빅데이터과정 > OWI' 카테고리의 다른 글

#41_140808_OWI_I/O EVENT  (0) 2014.08.08
#41_140808_OWI_DB BUFFER CACHE  (0) 2014.08.08
#40_140807_OWI_ENQUEUE  (0) 2014.08.07
#40_140807_OWI_UPDATABLE JOIN VIEW  (0) 2014.08.07
#40_140807_OWI_LATCH  (0) 2014.08.07