database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 29191 게시물 읽기
No. 29191
lock이 걸렸을때 bloker를 찾고 싶습니다
작성자
kevin
작성일
2006-12-26 20:58ⓒ
2006-12-26 21:00ⓜ
조회수
3,855

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이 대한 내용은 찾아보기가 어렵네요...

조언 부탁드립니다

이 글에 대한 댓글이 총 2건 있습니다.

v$session_wait, v$session, v$lock 등을 조인 하면 됩니다.


이런식 으로 하면 되겠네요.


SELECT /*+ ordered use_hash( sw l ) */

  s.sid

 ,s.serial#

 ,s.module

 ,s.program

 ,sw.seconds_in_wait Sec

 ,TO_CHAR(l.sid) ||','||TO_CHAR(s1.Serial#)|| ':' || sw1.event ||decode(sw1.seconds_in_wait,0,NULL,'('||sw1.seconds_in_wait||'secs)')  holder

 FROM   v$session_wait sw

,       v$session      s

,       v$lock         l

,  v$session s1

,  v$session_wait sw1

WHERE  sw.event like 'enq%'

AND    S.sid    = sw.sid

AND    l.id1(+) = sw.p2

AND    l.id2(+) = sw.p3

AND    l.lmode(+) > 0

AND    l.sid(+) <> sw.sid

AND    s1.sid=sw1.sid

AND    l.sid=s1.sid

ORDER BY l.sid, sw.seconds_in_wait DESC;

그냥님이 2006-12-27 13:53에 작성한 댓글입니다. Edit

답변 감사합니다.
회사가서 확인해 봐야겠습니다

kevin님이 2006-12-27 23:05에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
29194오라클 8.1.7.0.0 퍼스널/윈2000pro 오라클패치파일 구합니다.
한상원
2006-12-27
860
291939i 에서 pfile 위치 지정???
낚시꾼
2006-12-27
940
29192지금현재 세션중 full table scan을 하는 쿼리/사용자 를 알고 싶습니다
kevin
2006-12-26
1199
29191lock이 걸렸을때 bloker를 찾고 싶습니다 [2]
kevin
2006-12-26
3855
29190테이블구조 [4]
초보자
2006-12-26
2165
29189db에서 사용하는 모든 쿼리 뽑기 [1]
kill
2006-12-26
1946
29177쿼리 질문입니다......
펭도사
2006-12-26
1008
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다