상세 컨텐츠

본문 제목

Oracle Lock 확인

DataBase/Oracle

by 탑~! 2012. 8. 11. 18:29

본문

--락걸린 테이블 확인
SELECT  do.object_name,  do.owner,  do.object_type,  do.owner,
  vo.xidusn,  vo.session_id,  vo.locked_mode
FROM 
  v$locked_object vo ,  dba_objects do
WHERE   vo.object_id = do.object_id ;
  
  
--해당테이블이 락에 걸렸는지.. 
SELECT   A.SID,  A.SERIAL#,  B.TYPE,  C.OBJECT_NAME
FROM   V$SESSION A,  V$LOCK B,  DBA_OBJECTS C
WHERE   A.SID=B.SID AND  B.ID1=C.OBJECT_ID 
   AND  B.TYPE='TM'  AND  C.OBJECT_NAME IN ('테이블명');
    
 
 /* 락발생 사용자와 sql, object 조회 */

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;


/* 락 발생 사용자확인 */

SELECT   distinct x.session_id,  a.serial#,
  d.object_name,  a.machine,  a.terminal,  a.program,
  a.logon_time ,  'alter system kill session ''' || a.sid || ',  ' || a.serial# || ''';'
FROM   gv$locked_object x, gv$session a,  dba_objects d
WHERE   x.session_id = a.sid  and  x.object_id = d.object_id 
order by logon_time; 


/* 접속 사용자 제거 */

--alter system kill session 'session_id,serial#';
alter system kill session '26,6044';



/* 현재 접속자의 sql 분석 */

SELECT   distinct a.sid,  a.serial#,
  a.machine,  a.terminal,  a.program,
  b.address,  b.piece,  b.sql_text
FROM   v$session a,  v$sqltext b
WHERE   a.sql_address = b.address 
order by a.sid, a.serial#,b.address,b.piece;

'DataBase > Oracle' 카테고리의 다른 글

Oracle 랜덤 문자열 생성  (0) 2012.08.23
ORA-02020: too many database links in use 에러 조치 방법  (0) 2012.08.23
Oracle INSERT ALL  (0) 2012.08.09
Oracle Cursor 예제 (Loop Fetch)  (0) 2012.08.09
Oracle Cursor (for Loop)  (0) 2012.08.09

관련글 더보기