select distinct x.session_id, a.serial#, d.object_name, a.machine, a.terminal, a.program, b.address, b.piece, b.sql_text
from v$locked_object x, v$session a, v$sqltext b, dba_objects d
where x.session_id = a.sid
and x.object_id = d.object_id
and a.sql_address = b.address
order by b.address, b.piece
/
sql문이 한참동안 끝나지 않는다는 연락을 받고 위의 문장을 실행시켜서 아래와 같은 정보를 얻었습니다...
----------------------------------------------------------------
480 46503 table_AAA hostname_AAA sqlplus@AAA (TNS V1-V3) 07000000E2334438 0 UPDATE hostname_AAAg SET grade_code = decode(citi
480 46503 table_AAA hostname_AAAsqlplus@AAA (TNS V1-V3) 07000000E2334438 1 gold_flag , '0', 'G', '0') WHERE g.AAAgold_flag IN ('0', '1')
480 CRM ACTIVE
-----------------------------------------------------------------------
hanganalyze 3으로 트레이스 파일의 떨구니 다음과 같은 내용이 있습니다
Other chains found:
Chain 1 : :
<0/2/1/0xc989f030/7786536/No Wait>
Chain 2 : :
<0/18/1/0xc98a2db0/7086112/No Wait>
Chain 3 : :
<0/297/15720/0xc98c8f90/5922934/No Wait>
Chain 4 : :
<0/433/34478/0xc98b4270/5828846/No Wait>
Chain 5 : :
<0/480/46503/0xc98a89f0/7217352/db file sequential read>
Chain 6 : :
<0/560/29912/0xc98afab0/6987950/SQL*Net more data to client>
다른 부분에서 hang에 대한 정보는 없습니다...
결국 쿼리가 끝나긴 했습니다만 이러한 상황에서 현재 락이 걸린 정보를 파악하여 어떤 이유로 락이 걸렸고 그 락을 잡고 있는 bloker가 누구인지 알고 싶을때 어떤 정보를 찾아봐야 하나요?
또한 0/480/46503/0xc98a89f0/7217352/db file sequential read 이 부분을 어떻게 해석해야 하나요? index를 읽던중에 락이 걸렸다? INDEX를 읽기를 기다리고 있다??
TRACE FILE이 대한 내용은 찾아보기가 어렵네요...
조언 부탁드립니다 |