OS환경 : Oracle Linux6.8(64bit)
DB 환경 : Oracle Database 11.2.0.4
쿼리 : undo 사용량 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT TO_CHAR(s.sid)||',' ||TO_CHAR(s.serial#) sid_serial, NVL(s.username, 'None') orauser, s.program, r.name undoseg, t.used_ublk * TO_NUMBER(x.value)/1024||'K' "Undo" FROM sys.v_$rollname r, sys.v_$session s, sys.v_$transaction t, sys.v_$parameter x WHERE s.taddr = t.addr AND r.usn = t.xidusn(+) AND x.name = 'db_block_size' / |
현재 Rollback 진행률 확인
1 2 | select OPNAME,TARGET,SOFAR,TOTALWORK,UNITS,START_TIME,TIME_REMAINING, ELAPSED_SECONDS from v$session_longops where username='SCOTT'; |
Oracle Database 10g에서는 transaction rollback이 수행될때 , 진행중인 transaction이
$SESSION_LONGOPS view에 event가 기록되어짐
이 view는 10g 이전 데이터베이스에도 존재하였지만, transaction을 rollback을 하는것은
기록하지 못했었음.
Rollback의 경우에 , 6초보다 길어지는 경우에 이 view에 기록되어짐
$SESSION_LONGOPS view는 모든 진행중인 작업에 대해 보여주는데, "Transaction Rollback"
이라고 기록되어진 OPNAME 컬럼을 통해 확인할수 있음
각 컬럼 설명
TIME_REMAINING : 예상된 남겨진 시간을 보여준다. (초단위)
ELAPSED_SECONDS : 이제까지 수행한 시간을 보여준다. (초단위)
TOTALWORK : 수행하는 작업의 전체 양을 보여준다.
SOFAR : 이제까지 수행한 작업의 양을 보여준다.
UNITS : 작업한 양의 단위를 보여준다.
LAST_UPDATE_TIME : view의 내용이 현재것인지를 판단하게 한다.
세션 PID 확인
1 2 3 4 5 6 | select spid from v$process where addr = (select paddr from v$session where sid=''); select vs.sid, vs.username, vs.osuser, vs.process fg_pid, vp.spid bg_pid from v$session vs, v$process vp where vs.paddr = vp.addr and vs.sid=''; |
SQL 확인
1 2 3 4 5 6 | select a.sql_text from v$sqltext a, v$session b where a.address=b.sql_address and a.hash_value=b.sql_hash_value and b.sid= '' order by a.piece; |
출처:
http://redkite777.tistory.com/entry/ORA00031-session-marked-for-kill-의-해결책 [All Days 무한도전]
http://support.dbworks.co.kr/index.php?document_srl=3534&mid=ora_tb
'ORACLE > Sql' 카테고리의 다른 글
오라클 select 문 반복 loop (0) | 2018.06.05 |
---|---|
대량 데이터 삽입 insert 빠르게 실행 벌크 insert (0) | 2018.05.29 |
sql 문법 검사해주는 사이트 (0) | 2018.05.17 |
오라클 패치 정보를 조회할 수 있는 뷰 DBA_REGISTRY_SQLPATCH (0) | 2018.05.15 |
oracle 10g 자동통계정보수집 table lock , unlock (0) | 2018.05.15 |