Tip
2010.04.30 17:31

TM과 TX 락

조회 수 19020 추천 수 0 댓글 1

TM과 TX 락
---------------------------------------
락 모니터링
---------------------------------------
set lines 300
col slot for 9999
col mode_held for a10
col mode_reqd for a10
col "USN/Table" for a10
select l.session_id SID,
(case when lock_type='Transaction' then 'TX'
         when lock_type='DML' then 'TM' end) TYPE
,mode_held
,mode_requested mode_reqd
,(case when lock_type='Transaction' then
to_char(trunc(lock_id1/power(2,16)))
when lock_type='DML' then
 (select object_name from dba_objects
where object_id=l.lock_id1)
end) "USN/Table"
,(case when lock_type='Transaction' then
   bitand(lock_id1,to_number('ffff','xxxx'))+0
end) "SLOT"
,(case when lock_type='Transaction' then
 to_number(lock_id2) end) "SQN"
,(case when blocking_others='Blocking' then '  <<<<<' end) Blocking
from dba_lock l
where lock_type in ('Transaction','DML')
order by session_id,lock_type,lock_id1,lock_id2;


---------------------------------------
락이 걸린 세션의 상태 확인(이벤트 이름포함)
---------------------------------------
select event,wait_time,secones_in_wait,state
from v$session_wait
where sid=149;


일반 insert 작업

SQL> /

       SID TYPE MODE_HELD  MODE_REQD  USN/Table   SLOT        SQN BLOCKING
---------- ---- ---------- ---------- ---------- ----- ---------- --------------      
       142 TM   Exclusive  None       TEST
       142 TX   Exclusive  None       10            29        124

test테이블에 있는 레코드 갱신

SQL> /

       SID TYPE MODE_HELD  MODE_REQD  USN/Table   SLOT        SQN BLOCKING
---------- ---- ---------- ---------- ---------- ----- ---------- --------------      
       140 TM   None       Row-X (SX) TEST
       142 TM   Exclusive  None       TEST                          <<<<<
       142 TX   Exclusive  None       10            29        124

-> TM 락 때문에 행
     여기서 우리는 TM 락부터 확인하는 걸 알수 있다.

COMMIT; 수행

SQL> /

       SID TYPE MODE_HELD  MODE_REQD  USN/Table   SLOT        SQN BLOCKING
---------- ---- ---------- ---------- ---------- ----- ---------- --------------      
       140 TM   Row-X (SX) None       TEST
       140 TX   Exclusive  None       5             46        123

->142번 세션은 사라진 걸 확인할 수 있다.


이번엔 위에서 변경한 레코드와 같은 레코드를 update

SQL> /

       SID TYPE MODE_HELD  MODE_REQD  USN/Table   SLOT        SQN BLOCKING
---------- ---- ---------- ---------- ---------- ----- ---------- --------------      
       140 TM   Row-X (SX) None       TEST
       140 TX   Exclusive  None       5             46        123   <<<<<
       142 TM   Row-X (SX) None       TEST
       142 TX   None       Exclusive  5             46        123

-> 이번에는 TM 락에 대해서는 shared 모드이기 때문에 통과 되었으나 tx lock에 대해서는 exclusive 라서 표시된 부분 때문에 행이 걸림이 나타남

위와 같은 락을 오래 대기 하지 않기 위해서는 확실한 commit/rollback을 통해 트랜잭션을 종료시켜야한다.
그러나 commit 같은 경우는 자주 하게 되면 lgwr 를 통한 경합이 유발 된다던가 snapshot too old 같은 에러를 유발할 가능성이 높아진다.
적절하게 때에 맞게 옵션 설정을 부여해야한다.


wait -> lgwr가 buffer 내용을 redo log file에 기록할 때까지 기다린다.(동기식 commit)
nowait -> lgwr의 완료 메세지를 기다리지 않고 바로 다음 트랜잭션 진행 (비동기식 commit)
immediate ->commit 명령을 받을 때마다 lgwr가 buffer를 파일에 기록
batch -> pga 영역에 저장해 두었다가 일괄 처리한다.

가능한 조합
commit write immediate wait;
commit write immediate nowait;
commit write batch wait;
commit write batch nowait;

시간은 차례대로 68초,9초,66초,6초 로 나타난다.
비동기식 commit이 성능 면에서는 우수하나 중요한 데이터에 대한 보장이 어려울 수 있으므로 신중히 고려해야한다.
commit_write 파라미터 존재(세션 레벨,시스템 레벨에서 설정 가능)
 

TAG •

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 Q&A Oracle관련 게시물만 Sean 2014.04.09 84839
80 Tip 10G rollback시간 예상하기 고구마 2010.04.09 15155
79 Tip SESSION KILL에 대하여 고구마 2010.04.09 13381
78 Tip Trace Event 세팅 고구마 2010.04.09 17285
77 Tip 영역할당해제 고구마 2010.04.09 11469
76 Tip INDEX 사용여부 확인하기 고구마 2010.04.09 19101
75 Tip Log miner 사용방법 1 김준호 2010.04.06 29847
74 Tip 화일의 손상 여부를 확인하는 dbv 사용 방법 김준호 2010.04.06 18477
73 Tip shared pool wait event 2 file 유주환 2010.04.05 28881
72 Tip SHRINK 와 MOVE 의 특징 김준호 2010.03.31 13630
71 Tip Windows Server 2008 (64bit) - Oracle 10g 설치 file 김준호 2010.03.29 20682
70 Tip TABLESPACE FREESPACE 조회하기 1 고구마 2010.05.19 16657
69 Tip UDP Buffer Tuning 기법 3 김준호 2010.05.04 30852
» Tip TM과 TX 락 1 유주환 2010.04.30 19020
67 Tip 오라클 튜닝 세미나 자료(IO) 1 file 고구마 2010.04.28 13927
66 Tip 오라클 튜닝 세미나자료 (메모리) file 고구마 2010.04.28 14662
65 Tip SQL수행 처리 절차 고구마 2010.04.28 20809
64 Tip show space 고구마 2010.04.28 16767
63 Tip (Diagnostics) Oracle10g DB 접속 안될때 sqlplus 에서 SYSTEMSTATE DUMP 받기 1 고구마 2011.05.18 28946
62 Tip 10g standard edition과 enterprise edition의 차이점 2 윤현 2011.05.16 26017
61 Tip 윈도우에서 일정기간 지난 파일 및 폴더 자동삭제 하기 1 송기성 2011.03.31 21211
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8