Tip
2010.04.30 17:31

TM과 TX 락

조회 수 19027 추천 수 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 84911
» Tip TM과 TX 락 1 유주환 2010.04.30 19027
119 TM 백업이 필요없는 대용량 table skip하고 export 받기 고구마 2011.06.14 18789
118 Tip 화일의 손상 여부를 확인하는 dbv 사용 방법 김준호 2010.04.06 18511
117 TM 11 newfeature(Upgrade) 10.2.0.5 to 11.2.0.3 1 file 윤현 2012.01.12 18388
116 Tip NetCA 실행시 VM 관련 에러 대처법 2 송기성 2010.12.09 18180
115 Tip partition table에 index 생성시 perfstat 2011.01.28 18167
114 Q&A RHEL5에 11gR2 RAC 구성시 ASM 관련 에러 file 송기성 2010.12.11 17729
113 TM long type column 1 담벼락 2011.10.11 17687
112 TM openvms command perfstat 2011.05.31 17534
111 Tip Complete Checklist for Manual Upgrades to 11gR2 [ID 837570.1] 담벼락 2011.03.23 17483
110 Tip DML 문의 처리과정 고구마 2010.04.28 17306
109 TM TDE tablespace 1 윤현 2011.06.09 17302
108 Tip Trace Event 세팅 고구마 2010.04.09 17285
107 Tip How to Use DBMS_STATS to Move Statistics to a Different Database 고구마 2010.04.09 17075
106 Tip [10g]DATAPUMP IMPORT는 자동으로 USER 생성 흑수건 2011.10.06 16783
105 Tip show space 고구마 2010.04.28 16767
104 Tip TABLESPACE FREESPACE 조회하기 1 고구마 2010.05.19 16659
103 TM upgrade 시 sorting 문제 담벼락 2012.03.16 16599
102 TM (10g) 자동 통계정보 수집(AUTOMATIC OPTIMIZER STATISTICS COLLECTION) 담벼락 2010.12.16 16384
101 Tip 통계 백업 및 생성 유주환 2010.04.18 16189
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8