/* --------------------------
object_name 의 경우, 나오다가 안나오다가 하므로 몇 번 조회하면 확인 가능.
v$session 정보이므로 현재 rollback 대상 object 가 나올 뿐이며, 전체 대상 object 정보는 구할 수 없음.
*/
set linesize 180 pagesize 1000
col state format a11
col undoblocksdone format 999,999,999
col sid format 99999
col program format a20
col object_name format a40
col pid format 999999999
col xid format a20
break on xid
select f.state
, f.undoblocksdone
, s.sid
, substr(decode(substr(s.program,1,7),'oracle@',substr(s.program,instr(s.program,'(',1)),s.program), 1, 20) program
, substr((SELECT OBJECT_NAME FROM DBA_OBJECTS C WHERE C.OBJECT_ID = ROW_WAIT_OBJ# ),1,30) object_name
, p.spid
, f.xid
from v$fast_start_servers f, v$process p, v$session s
where f.pid = p.pid
and p.addr = s.paddr
and f.state <> 'IDLE'
order by f.xid, f.state, s.program;
/* --------------------------
object_name 의 경우, 나오다가 안나오다가 하므로 몇 번 조회하면 확인 가능.
v$session 정보이므로 현재 rollback 대상 object 가 나올 뿐이며, 전체 대상 object 정보는 구할 수 없음.
*/
set linesize 180 pagesize 1000
col usn format a15
col state format a11
col undoblocksdone format 999,999,999
col undoblockstotal format 999,999,999
col sid format 99999
col program format a20
col object_name format a20
col pid format 999999999
col parentusn format a15
col xid format a20
col pxid format a20
! date
select t.usn||'.'||t.slt||'.'||t.seq usn
, t.state
, t.undoblocksdone
, t.undoblockstotal
, round((t.undoblocksdone/t.undoblockstotal)*100, 2) "COMPLETE(%)" -- Total이 줄어들기 때문에 현 시점의 %임
, s.sid
, substr(decode(substr(s.program,1,7),'oracle@',substr(s.program,instr(s.program,'(',1)),s.program), 1, 20) program
, substr((SELECT OBJECT_NAME FROM DBA_OBJECTS C WHERE C.OBJECT_ID = ROW_WAIT_OBJ# ),1,20) object_name
, p.spid
, t.cputime
-- , t.parentusn||'.'||t.parentslt||'.'||t.parentseq parentusn
-- , t.xid
-- , t.pxid
, t.rcvservers
from v$fast_start_transactions t, v$process p, v$session s
where t.pid = p.pid
and p.addr = s.paddr;
/* --------------------------
parallel 로 수행될 경우에도 여기에 정보가 나옴.
*/
-- SQL1
set linesize 180 pagesize 1000
col usn format a15
col undosize format 999,999,999
select ADDR
, KTUXEUSN||'.'||KTUXESLT||'.'||KTUXESQN USN
, KTUXESIZ UNDOSIZE
, KTUXESTA TXSTATUS
from x$ktuxe
where KTUXECFL = 'DEAD'
and KTUXESTA = 'ACTIVE';
-- SQL2
set linesize 180 pagesize 1000
col USN format a15
col UNDOBLOCKS format 999,999,999
SELECT
B.NAME USEG,
B.INST# INSTANCE,
B.STATUS$ STATUS,
A.KTUXEUSN||'.'||A.KTUXESLT||'.'||A.KTUXESQN USN,
A.KTUXESIZ UNDOBLOCKS,
A.KTUXESTA TXSTATUS
FROM X$KTUXE A, UNDO$ B
WHERE A.KTUXECFL LIKE '%DEAD%'
AND A.KTUXEUSN = B.US#;
'oracle' 카테고리의 다른 글
[ORACLE] daily partition add procdure (0) | 2022.07.15 |
---|---|
[ORACLE] Supplemental logging 사용법 (0) | 2022.07.13 |
[ORACLE] 특정 USER 에게 특정 테이블 TRUNCATE 권한 부여 procdure (0) | 2022.07.06 |
[ORACLE] EXPDP 사용방법 및 옵션 (0) | 2022.07.05 |
[ORACLE] ORA-07445: [evapls()+1882] [ACCESS_VIOLATION] 발생 하며 DB DOWN (0) | 2022.07.01 |