Oracle的进程,如果在os层面kill -9了,那么在v$transaction中是看不到的,需要在v$fast_start_transactions中去看。可以用下面2种方法预估回滚时间:
方法一:(利用v$fast_start_transaction)
set pages 1000
set line 1000
set feedback off
set serveroutput on
declare
l_start number;
l_end number;
mydate varchar2(200);
est_time varchar2(200);
v_pause_secs number;
begin
--Set the pause time for get 2 times change,default is 300 seconds
v_pause_secs:=600;
select sum(undoblockstotal-undoblocksdone) into l_start from v$fast_start_transactions where state='RECOVERING';
dbms_lock.sleep(v_pause_secs);
select sum(undoblockstotal-undoblocksdone) into l_end from v$fast_start_transactions where state='RECOVERING';
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') into mydate from dual;
select
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),9,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),' ')-9)||'Days '||
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),12,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),':')-12)||'Hours '||
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),15,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),':',1,2)-15)||'Mins '||
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),18,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),'.',1,1)-18)||'Secs'
into est_time
from dual;
dbms_output.put_line(mydate||'==> Base on '||v_pause_secs||'Secs calculated, Estimate remaining trx rollback time is ......:'|| est_time);
end;
/
方法二:(利用x$ktuxe)
set pages 1000
set line 1000
set feedback off
set serveroutput on
declare
l_start number;
l_end number;
mydate varchar2(200);
est_time varchar2(200);
v_pause_secs number;
begin
--Set the pause time for get 2 times change,default is 30 seconds
v_pause_secs:=600;
select sum(ktuxesiz) into l_start from x$ktuxe where KTUXECFL ='DEAD';
dbms_lock.sleep(v_pause_secs);
select sum(ktuxesiz) into l_end from x$ktuxe where KTUXECFL ='DEAD';
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') into mydate from dual;
select
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),9,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),' ')-9)||'Days '||
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),12,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),':')-12)||'Hours '||
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),15,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),':',1,2)-15)||'Mins '||
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),18,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),'.',1,1)-18)||'Secs'
into est_time
from dual;
dbms_output.put_line(mydate||'==> Base on '||v_pause_secs||'Secs calculated, Estimate remaining trx rollback time is ......:'|| est_time);
end;
/
Oralce undo健康检查脚本(这个脚本是基于进程没在os层面kill -9的情况下):
set pages 1000
set line 1000
set feedback off
set serveroutput on
-- UNDO Check script start
exec dbms_output.put_line('== >>>>>>>>>> UNDO CHECK SCRIPT START <<<<<<<<<< ==');
exec dbms_output.put_line(' ');
-- Check database version
PROMPT Checking database version......
PROMPT ============
select * from v$version;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check if flashback on
PROMPT Checking if flashback on......
PROMPT ============
select flashback_on from v$database;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check the undo parameter
PROMPT Checking the undo parameter......
PROMPT ============
show parameter undo;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check undo tablespace usage
PROMPT Checking undo tablespace usage......
PROMPT ============
SELECT d.status ,
d.tablespace_name ,
d.contents,
d.extent_management,
to_char(nvl(a.bytes / 1024 / 1024, 0), '99999999.999') as total_size_mb,
to_char(nvl(a.bytes - nvl(f.bytes, 0), 0) / 1024 / 1024,
'99999999.999') used_size_mb,
to_char(nvl(nvl(f.bytes, 0), 0) / 1024 / 1024, '99999999.999') free_size_mb,
to_char(nvl((a.bytes - nvl(f.bytes, 0)) / a.bytes * 100, 0),
'990.00') as used_percent
FROM sys.dba_tablespaces d,
(SELECT tablespace_name, SUM(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) bytes
FROM dba_free_space
GROUP BY tablespace_name) f
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = f.tablespace_name(+)
AND d.contents='UNDO';
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check rollback segment status
PROMPT Checking rollback segment status......
PROMPT ============
select tablespace_name,status,sum(bytes)/1024/1024 mb from DBA_UNDO_EXTENTS group by tablespace_name,status;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
--Check all roll segment online or offline status
PROMPT Checking Check all roll segment online or offline status......
PROMPT ============
select substr(segment_name,1,7) as rollname,status,count(*) from dba_rollback_segs
group by substr(segment_name,1,7),status
order by 1;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
--Check online roll segment status
PROMPT Checking roll segment online status......
PROMPT ============
SELECT
substr(name,1,7) as rollname,
status,count(*) as cnt
FROM v$rollstat, v$rollname
WHERE v$rollstat.usn=v$rollname.usn
group by
substr(name,1,7),status order by 1;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check TOP 20 roll segment extend status
PROMPT Checking TOP 20 roll segment extend status......
PROMPT ============
select * from (
SELECT
ds.segment_name "Seq Name",
ds.bytes "Bytes",
ds.blocks "Blocks",
ds.extents "Extents",
ds.initial_extent "Init Ext",
ds.next_extent "Next Ext",
ds.min_extents "Min Ext",
ds.max_extents "Max Ext"
FROM dba_segments ds
WHERE segment_type in ('ROLLBACK','TYPE2 UNDO') order by extents desc) where rownum<=20;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check undo header wait
PROMPT Checking Undo Header Waits......
PROMPT (Note:Need to wait 60Secs)
PROMPT ============
declare
s_num_rbs number;
s_header_wait number;
s_waits_per_rbs number;
e_num_rbs number;
e_header_wait number;
e_waits_per_rbs number;
delta_num_rbs number;
delta_header_wait number;
delta_waits_per_rbs varchar2(200);
s_mydate varchar2(200);
e_mydate varchar2(200);
v_pause_secs number;
begin
--Set the pause time for get 2 times change,default is 30 seconds
v_pause_secs:=60;
select to_char(sysdate,'hh24:mi:ss') into s_mydate from dual;
select COUNT(stat.USN) ,wait.Count,round(wait.Count/COUNT(stat.USN),4) into s_num_rbs,s_header_wait,s_waits_per_rbs from V$WAITSTAT wait, V$ROLLSTAT stat where stat.Status = 'ONLINE' and wait.Class = 'undo header' and stat.USN > 0 group by wait.Count;
dbms_lock.sleep(v_pause_secs);
select to_char(sysdate,'hh24:mi:ss') into e_mydate from dual;
select COUNT(stat.USN),wait.Count,round(wait.Count/COUNT(stat.USN),4) into e_num_rbs,e_header_wait,e_waits_per_rbs from V$WAITSTAT wait, V$ROLLSTAT stat where stat.Status = 'ONLINE' and wait.Class = 'undo header' and stat.USN > 0 group by wait.Count;
select (e_num_rbs-s_num_rbs),(e_header_wait-s_header_wait),to_char(round(nvl(decode((e_waits_per_rbs-s_waits_per_rbs),0,null,(e_waits_per_rbs-s_waits_per_rbs)),0),4),'fm999999990.999999999') into delta_num_rbs,delta_header_wait,delta_waits_per_rbs from dual;
dbms_output.put_line(s_mydate||'==> At start time:');
dbms_output.put_line('Number of Rollback segments:'||s_num_rbs||' ,Number of Undo header waits:'||s_header_wait||' ,Number of header wait per Rollback segment:'||s_waits_per_rbs);
dbms_output.put_line(e_mydate||'==> At end time:');
dbms_output.put_line('Number of Rollback segments:'||e_num_rbs||' ,Number of Undo header waits:'||e_header_wait||' ,Number of header wait per Rollback segment:'||e_waits_per_rbs);
dbms_output.put_line('==== Change during '||v_pause_secs||' Seconds:====');
dbms_output.put_line('Delta of Rollback segments:'||delta_num_rbs||' ,Delta of Undo header waits:'||delta_header_wait||' ,Delta of header wait per Rollback segment:'||delta_waits_per_rbs);
end;
/
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check latch: undo global data
PROMPT Checking TOP 20 "latch: undo global data"......
PROMPT ============
select * from (
select to_char(end_interval_time,'yyyy-mm-dd hh24:mi') as end_interval_time,
nvl(round((c.time_waited_micro - lag(time_waited_micro)
over(order by c.snap_id)) /
decode((c.total_waits - lag(total_waits) over(order by c.snap_id)),0,null,(c.total_waits - lag(total_waits) over(order by c.snap_id)))/1000,2),0) as avg_wait_time_ms
from dba_hist_system_event c, dba_hist_snapshot dd
where event_name = 'latch: undo global data' and c.instance_number=dd.instance_number
and c.snap_id = dd.snap_id and c.instance_number=1
and c.snap_id >= 1 and end_interval_time>=trunc(sysdate-7)
order by 1 desc)
where avg_wait_time_ms<>0 and rownum<=20;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check location of undo latch undo global data
PROMPT Checking location of undo latch undo global data
PROMPT ============
select * from v$latch_misses where SLEEP_COUNT>0 and parent_name like 'undo global data%' order by sleep_count desc;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check undo buffer busy wait in ASH
PROMPT Checking most 20 recently undo buffer busy wait in ASH......
PROMPT ============
select * from (
select to_char(sample_time,'yyyy-mm-dd hh24:mi:ss') as sample_time,
sql_id,event,TOP_LEVEL_SQL_ID,p1 as file_id,p2 as block_id, p3 as reason from v$active_session_history
where event='buffer busy waits'
and p1 in (select file_id from DBA_ROLLBACK_SEGS where segment_name<>'SYSTEM')
and sample_time>=trunc(sysdate-7)
order by sample_time desc)
where rownum<=20;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check most recent ORA-1555 count
PROMPT Checking most recent ORA-1555 count......
PROMPT ============
select * from (
select to_char(end_time,'yyyy-mm-dd hh24:mi:ss') end_time,
x.unexpiredblks,x.unxpblkrelcnt,x.unxpblkreucnt,
x.expiredblks,x.expblkrelcnt,x.expblkreucnt,
x.ssolderrcnt
from DBA_HIST_UNDOSTAT x
where x.ssolderrcnt>0
order by end_time desc)
where rownum<=20;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check the status of TOP 20 session which open transaction
PROMPT Checking the status of TOP 20 session which open transaction
PROMPT ============
PROMPT Check the status of TOP 20 session which open transaction......
select * from (
select b.sid,
b.SERIAL#,
b.USERNAME,
b.status as session_status,
a.STATUS as trx_status,
b.MACHINE,
b.sql_id,
a.START_TIME as trx_start_time,
a.USED_UBLK as used_undo_blks,
a.USED_UREC as used_undo_records,
a.START_UBAFIL as used_undo_file_id,
a.START_UBABLK as used_undo_block_id
from v$transaction a, v$session b
where a.ses_addr = b.saddr order by USED_UBLK desc)
where rownum<=20;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check TOP session current wait event
PROMPT Checking TOP session current wait event
PROMPT ============
select * from (
select b.sid,
b.SERIAL#, event,p1text,p1,p2text, p2
from v$transaction a, v$session b
where a.ses_addr = b.saddr order by USED_UBLK desc)
where rownum<=1;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check TOP session wait event history
PROMPT Checking TOP session wait event history
PROMPT ============
select * from (
select to_char(sample_time,'hh24:mi:ss') as sample_time,sid,serial#,sql_id,event,p1text,p1,p2text,p2 from v$active_session_history c,
(select * from (select b.sid,b.serial# from
v$transaction a, v$session b
where a.ses_addr = b.saddr
order by USED_UBLK desc) where rownum<=1) x
where c.SESSION_ID=x.sid and c.SESSION_SERIAL#=x.serial#
order by sample_time desc)
where rownum<=20;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check TOP session "db file sequential read" average wait time
PROMPT Checking TOP session "db file sequential read" average wait time......
PROMPT (Note:Need to wait 60Secs)
PROMPT ============
declare
v_top_used_ublk_sid number;
v_top_used_ublk_serial# number;
s_chktm varchar2(200);
s_tm_waited_micro number;
s_total_waits number;
s_avg_wait number;
e_chktm varchar2(200);
e_tm_waited_micro number;
e_total_waits number;
e_avg_wait number;
v_delta_avg_wait varchar2(200);
v_pause_secs number;
v_cycle_cnt number;
begin
--Set the pause time for get 2 times change,default is 3 seconds
v_pause_secs:=3;
v_cycle_cnt:=20;
dbms_output.put_line('TOP rolling back session "db file sequential read" avg_wait_time_ms is: ');
select sid,serial# into v_top_used_ublk_sid,v_top_used_ublk_serial# from (select b.sid,b.serial# from v$transaction a, v$session b where a.ses_addr = b.saddr order by USED_UBLK desc) where rownum<=1;
for i in 1 .. v_cycle_cnt loop
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),time_waited_micro,total_waits,a.AVERAGE_WAIT into s_chktm,s_tm_waited_micro,s_total_waits,s_avg_wait from v$session_event a where a.sid=v_top_used_ublk_sid and event='db file sequential read';
dbms_lock.sleep(v_pause_secs);
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),time_waited_micro,total_waits,a.AVERAGE_WAIT into e_chktm,e_tm_waited_micro,e_total_waits,s_avg_wait from v$session_event a where a.sid=v_top_used_ublk_sid and event='db file sequential read';
select to_char(round((e_tm_waited_micro-s_tm_waited_micro)/(e_total_waits-s_total_waits)/1000,2),'fm999999990.999999999') into v_delta_avg_wait from dual;
dbms_output.put_line(e_chktm||': '|| v_delta_avg_wait);
end loop;
end;
/
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check system level "db file sequential read" average wait time
PROMPT Checking Check system level "db file sequential read" average wait time......
PROMPT ============
select * from (
select 'SystemLevel_AllDatafile:'||event_name as event_name,to_char(end_interval_time,'yyyy-mm-dd hh24:mi') end_interval_time,
round((c.time_waited_micro - lag(time_waited_micro)
over(order by c.snap_id)) /
decode((c.total_waits - lag(total_waits) over(order by c.snap_id)),0,null,(c.total_waits - lag(total_waits) over(order by c.snap_id)))/1000,2) as avg_wait_time_ms
from dba_hist_system_event c, dba_hist_snapshot dd
where event_name = 'db file sequential read' and c.instance_number=dd.instance_number
and c.snap_id = dd.snap_id and c.instance_number=1
and c.snap_id >= 1 and end_interval_time>=trunc(sysdate-7)
order by 2 desc)
where rownum<=20;
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
-- Check the transaction rollback estimate time
PROMPT Checking the transaction rollback estimate time......
PROMPT (Note:Need to wait 60Secs)
PROMPT ============
declare
l_start number;
l_end number;
mydate varchar2(200);
est_time varchar2(200);
v_pause_secs number;
begin
--Set the pause time for get 2 times change,default is 30 seconds
v_pause_secs:=60;
select sum(ktuxesiz) into l_start from x$ktuxe x ,v$transaction b, v$session a where a.taddr=b.addr and x.ktuxeusn=b.XIDUSN and x.ktuxeslt=b.XIDSLOT and ktuxesqn=b.XIDSQN and a.status='KILLED' and b.STATUS='ACTIVE';
dbms_lock.sleep(v_pause_secs);
select sum(ktuxesiz) into l_end from x$ktuxe x ,v$transaction b, v$session a where a.taddr=b.addr and x.ktuxeusn=b.XIDUSN and x.ktuxeslt=b.XIDSLOT and ktuxesqn=b.XIDSQN and a.status='KILLED' and b.STATUS='ACTIVE';
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') into mydate from dual;
select
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),9,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),' ')-9)||'Days '||
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),12,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),':')-12)||'Hours '||
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),15,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),':',1,2)-15)||'Mins '||
substr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),18,instr(to_char(numtodsinterval((l_end/((l_start -l_end)/v_pause_secs)),'second')),'.',1,1)-18)||'Secs'
into est_time
from dual;
dbms_output.put_line(mydate||'==> Base on '||v_pause_secs||'Secs calculated, Estimate remaining trx rollback time is ......:'|| est_time);
end;
/
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
exec dbms_output.put_line(' ');
exec dbms_output.put_line('== >>>>>>>>>> UNDO CHECK SCRIPT END <<<<<<<<<< ==');
结果输出样例:
== >>>>>>>>>> UNDO CHECK SCRIPT START <<<<<<<<<< ==
Checking database version......
============
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
Checking if flashback on......
============
FLASHBACK_ON
------------------
NO
Checking the undo parameter......
============
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_optimizer_undo_cost_change string 11.2.0.3
undo_management string AUTO
undo_retention integer 10800
undo_tablespace string MYUR_UNDOTS1
Checking undo tablespace usage......
============
STATUS TABLESPACE_NAME CONTENTS EXTENT_MANAGEMENT TOTAL_SIZE_MB USED_SIZE_MB FREE_SIZE_MB USED_PERCENT
--------- ------------------------------ --------- ----------------- ------------- ------------- ------------- ------------
ONLINE MYUR_UNDOTS1 UNDO LOCAL 377855.922 289643.172 88212.750 76.65
Checking rollback segment status......
============
TABLESPACE_NAME STATUS MB
------------------------------ --------- ----------
MYUR_UNDOTS1 ACTIVE 141022.687
MYUR_UNDOTS1 UNEXPIRED 141347.375
MYUR_UNDOTS1 EXPIRED 7261.9375
Checking Check all roll segment online or offline status......
============
ROLLNAME STATUS COUNT(*)
---------------------------- ---------------- ----------
SYSTEM ONLINE 1
_SYSSMU OFFLINE 111
_SYSSMU ONLINE 193
Checking roll segment online status......
============
ROLLNAME STATUS CNT
---------------------------- --------------- ----------
SYSTEM ONLINE 1
_SYSSMU ONLINE 193
Checking TOP 20 roll segment extend status......
============
Seq Name Bytes Blocks Extents Init Ext Next Ext Min Ext Max Ext
-------------------------------------------------------------------------------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
_SYSSMU97_1452782954$ 1461008465 17834576 13002 131072 65536 2 32765
_SYSSMU122_2745965143$ 4810997760 587280 225 131072 65536 2 32765
_SYSSMU148_3535832903$ 3428974592 418576 209 131072 65536 2 32765
_SYSSMU111_2840967137$ 2153906176 262928 203 131072 65536 2 32765
_SYSSMU151_2337694042$ 2728525824 333072 202 131072 65536 2 32765
_SYSSMU34_1398498963$ 3234988032 394896 194 131072 65536 2 32765
_SYSSMU130_2801025066$ 3738959872 456416 191 131072 65536 2 32765
_SYSSMU27_1232623801$ 1709309952 208656 188 131072 65536 2 32765
_SYSSMU86_2060358707$ 1989279744 242832 183 131072 65536 2 32765
_SYSSMU132_3132320204$ 2629959680 321040 181 131072 65536 2 32765
_SYSSMU229_966176448$ 1388445696 169488 177 131072 65536 2 32765
_SYSSMU95_2146542047$ 2875326464 350992 170 131072 65536 2 32765
_SYSSMU182_2198377807$ 1901199360 232080 170 131072 65536 2 32765
_SYSSMU168_3933786344$ 2468478976 301328 169 131072 65536 2 32765
_SYSSMU36_1398498981$ 2364669952 288656 165 131072 65536 2 32765
_SYSSMU71_1398526988$ 2231500800 272400 164 131072 65536 2 32765
_SYSSMU68_1398526988$ 1105330176 134928 160 131072 65536 2 32765
_SYSSMU128_2100380268$ 2093088768 255504 158 131072 65536 2 32765
_SYSSMU77_1398526988$ 1848770560 225680 156 131072 65536 2 32765
_SYSSMU5_1398481724$ 1836187648 224144 153 131072 65536 2 32765
Checking Undo Header Waits......
(Note:Need to wait 60Secs)
============
15:49:48==> At start time:
Number of Rollback segments:193 ,Number of Undo header waits:3002541 ,Number of header wait per Rollback segment:15557.2073
15:50:48==> At end time:
Number of Rollback segments:193 ,Number of Undo header waits:3002552 ,Number of header wait per Rollback segment:15557.2642
==== Change during 60 Seconds:====
Delta of Rollback segments:0 ,Delta of Undo header waits:11 ,Delta of header wait per Rollback segment:0.0569
Checking TOP 20 "latch: undo global data"......
============
END_INTERVAL_TIME AVG_WAIT_TIME_MS
------------------------------ ----------------
2021-01-05 15:45 0.07
2021-01-05 15:15 0.07
2021-01-05 15:00 0.09
2021-01-05 14:30 0.09
2021-01-05 14:15 0.12
2021-01-05 14:01 0.09
2021-01-05 13:45 0.14
2021-01-05 13:30 0.14
2021-01-05 12:15 0.16
2021-01-05 12:00 0.01
2021-01-05 11:45 0.01
2021-01-05 11:16 0.1
2021-01-05 10:45 0.12
2021-01-05 10:15 0.08
2021-01-05 09:15 0.1
2021-01-05 09:00 0.09
2021-01-05 08:45 0.07
2021-01-05 08:30 0.1
2021-01-05 08:15 0.09
2021-01-05 07:15 0.09
Checking location of undo latch undo global data
============
PARENT_NAME WHERE NWFAIL_COUNT SLEEP_COUNT WTR_SLP_COUNT LONGHOLD_COUNT LOCATION
---------------------------------------------------------------- -------------------------------------------------------------------------------- ------------ ----------- ------------- -------------- --------------------------------------------------------------------------------
undo global data ktusm_stealext_2 0 135018 15624 0 ktusm_stealext_2
undo global data kturax 0 30779 161 0 kturax
undo global data ktudba: KSLBEGIN 0 3517 105824 0 ktudba: KSLBEGIN
undo global data ktusmupst: KSLBEGIN 0 3363 42119 0 ktusmupst: KSLBEGIN
undo global data ktusm_stealext: KSLBEGIN 0 1260 52 0 ktusm_stealext: KSLBEGIN
undo global data ktucof: at start 0 888 0 0 ktucof: at start
undo global data ktudnx:child 0 181 4375 0 ktudnx:child
undo global data ktuGetRetentionDuration 0 50 184 0 ktuGetRetentionDuration
undo global data kturdc: KSLBEGIN 0 46 2 0 kturdc: KSLBEGIN
undo global data ktufrbs_2 0 35 3613 0 ktufrbs_2
undo global data ktucmt: ktugd_cuux 0 17 20 0 ktucmt: ktugd_cuux
undo global data ktusmasp: ktugd_tuux 0 16 188 0 ktusmasp: ktugd_tuux
undo global data ktusmasp1r_2 0 16 1 0 ktusmasp1r_2
undo global data ktubnd:child 0 7 1193 0 ktubnd:child
undo global data ktusmofxu_1: kslgetl 0 5 0 0 ktusmofxu_1: kslgetl
undo global data ktusmasp: ktugd_suux 0 4 222 0 ktusmasp: ktugd_suux
undo global data kturimugur: child 0 3 159 0 kturimugur: child
undo global data ktur set recov bit 0 1 1401 0 ktur set recov bit
undo global data ktusmstf: KSLBEGIN 0 1 0 0 ktusmstf: KSLBEGIN
undo global data ktugfb 0 1 4 0 ktugfb
Checking most 20 recently undo buffer busy wait in ASH......
============
SAMPLE_TIME SQL_ID EVENT TOP_LEVEL_SQL_ID FILE_ID BLOCK_ID REASON
------------------- ------------- ---------------------------------------------------------------- ---------------- ---------- ---------- ----------
2021-01-05 13:45:31 b5tq6435p6j2h buffer busy waits 5t28uchjqpyfm 379 56945 311
Checking most recent ORA-1555 count......
============
END_TIME UNEXPIREDBLKS UNXPBLKRELCNT UNXPBLKREUCNT EXPIREDBLKS EXPBLKRELCNT EXPBLKREUCNT SSOLDERRCNT
------------------- ------------- ------------- ------------- ----------- ------------ ------------ -----------
2021-01-05 14:05:41 12264016 0 0 4562368 0 0 1
2021-01-05 04:35:41 23274256 0 0 3026176 0 0 1
2021-01-04 23:35:41 10506808 0 0 6716640 0 0 2
2021-01-04 19:25:41 7081704 0 0 10747248 0 0 2
2021-01-04 16:45:41 10124984 0 0 8884456 0 0 2
2021-01-04 14:45:41 13386056 0 0 5830840 0 0 1
2021-01-01 05:25:41 30404640 0 0 5128 24064 0 1
2020-12-31 16:25:41 7833920 0 0 0 286248 0 1
2020-12-31 16:15:41 7601424 2176 0 1024 1407272 0 1
2020-12-31 16:05:41 7869856 3712 0 0 1624664 0 1
2020-12-31 14:05:41 8484032 0 0 3840 390376 0 1
2020-12-31 13:25:41 8726240 128 7 384 909016 0 1
2020-12-31 10:15:41 2637488 0 0 1024 4240 0 1
2020-12-31 10:05:41 2376080 0 0 2304 8192 0 1
2020-12-31 09:55:41 1727392 62512 217548 1920 282904 0 6
2020-12-31 09:45:41 1799848 75680 237159 384 729008 0 2
2020-12-31 09:35:41 1768536 138864 635921 0 1038272 0 3
2020-12-31 09:25:41 1900664 8488 7888 1024 1167528 0 1
2020-12-31 09:15:41 1965392 336840 138558 4360 187072 0 3
2020-12-31 09:05:41 2009656 596888 239303 128 393464 0 5
Checking the status of TOP 20 session which open transaction
============
Check the status of TOP 20 session which open transaction......
SID SERIAL# USERNAME SESSION_STATUS TRX_STATUS MACHINE SQL_ID TRX_START_TIME USED_UNDO_BLKS USED_UNDO_RECORDS USED_UNDO_FILE_ID USED_UNDO_BLOCK_ID
---------- ---------- ------------------------------ -------------- ---------------- ---------------------------------------------------------------- ------------- -------------------- -------------- ----------------- ----------------- ------------------
3610 25245 XXSOP_DS KILLED ACTIVE INT-DATBS-APP-MYH02.cor.com 5bs1vzzr3m9kb 12/31/20 00:33:36 8120807 553978103 194 1281245
160 36767 APPS ACTIVE ACTIVE erpweb01 9hdxps2qs833a 01/04/21 22:15:42 12457 1033332 265 2144972
3774 15169 APPS INACTIVE ACTIVE erpweb01 0at8gkgbkkcgq 01/05/21 10:25:14 400 4883 266 1351119
3749 39593 APPS INACTIVE ACTIVE erpweb01 01/05/21 10:26:02 196 2394 101 174811
3741 40557 APPS INACTIVE ACTIVE erpweb01 01/05/21 10:24:20 196 2394 263 3577957
326 60877 APPS INACTIVE ACTIVE erpweb01 d6hshqtpbq8hd 01/05/21 14:42:52 184 6490 263 1396378
3906 21291 APPS INACTIVE ACTIVE erpweb01 01/05/21 12:15:59 125 4608 263 682791
5829 20083 APPS INACTIVE ACTIVE erpweb01 d6hshqtpbq8hd 01/05/21 15:03:57 112 6552 266 199044
3918 43601 APPS INACTIVE ACTIVE erpweb01 01/05/21 12:15:42 95 3302 265 2095
3364 12905 APPS INACTIVE ACTIVE erpweb01 01/05/21 10:01:12 67 2511 100 2741973
4949 1317 APPS INACTIVE ACTIVE erpweb01 01/05/21 15:04:07 53 3409 103 230247
4028 52161 APPS INACTIVE ACTIVE erpweb01 01/05/21 14:10:40 44 1608 379 2902566
4738 8485 APPS INACTIVE ACTIVE erpweb01 01/05/21 15:19:07 31 385 265 397579
1721 55907 APPS INACTIVE ACTIVE erpweb01 01/05/21 14:57:36 31 1900 264 147309
282 31081 APPS INACTIVE ACTIVE erpweb01 01/04/21 13:34:00 30 336 266 2072663
5680 33197 APPS INACTIVE ACTIVE erpweb01 01/04/21 14:23:30 23 1447 266 912864
3687 54157 APPS INACTIVE ACTIVE erpweb01 01/05/21 15:42:48 23 1483 194 225767
40 15329 APPS INACTIVE ACTIVE erpweb01 01/05/21 14:21:37 17 993 263 1239880
3996 34287 APPS INACTIVE ACTIVE erpweb01 01/05/21 15:41:36 16 791 33 3143889
7 22381 APPS INACTIVE ACTIVE erpweb01 01/05/21 14:14:01 12 655 100 2656172
Checking TOP session current wait event
============
SID SERIAL# EVENT P1TEXT P1 P2TEXT P2
---------- ---------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------- ---------------------------------------------------------------- ----------
3610 25245 db file sequential read file# 248 block# 3558020
Checking TOP session wait event history
============
SAMPLE_TIME SID SERIAL# SQL_ID EVENT P1TEXT P1 P2TEXT P2
----------- ---------- ---------- ------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------- ---------------------------------------------------------------- ----------
15:50:52 3610 25245 5bs1vzzr3m9kb file# 248 block# 3557828
15:50:51 3610 25245 5bs1vzzr3m9kb file# 248 block# 3558340
15:50:50 3610 25245 5bs1vzzr3m9kb file# 248 block# 3557765
15:50:49 3610 25245 5bs1vzzr3m9kb file# 248 block# 3558213
15:50:48 3610 25245 5bs1vzzr3m9kb file# 248 block# 3557638
15:50:47 3610 25245 5bs1vzzr3m9kb file# 248 block# 3558150
15:50:46 3610 25245 5bs1vzzr3m9kb file# 100 block# 2022778
15:50:45 3610 25245 5bs1vzzr3m9kb file# 248 block# 3558023
15:50:44 3610 25245 5bs1vzzr3m9kb file# 248 block# 3558343
15:50:43 3610 25245 5bs1vzzr3m9kb file# 248 block# 3557832
15:50:42 3610 25245 5bs1vzzr3m9kb file# 249 block# 3551428
15:50:41 3610 25245 5bs1vzzr3m9kb file# 248 block# 3557705
15:50:40 3610 25245 5bs1vzzr3m9kb file# 248 block# 3558153
15:50:39 3610 25245 5bs1vzzr3m9kb file# 100 block# 2022819
15:50:38 3610 25245 5bs1vzzr3m9kb file# 248 block# 3557962
15:50:37 3610 25245 5bs1vzzr3m9kb file# 100 block# 2022834
15:50:36 3610 25245 5bs1vzzr3m9kb file# 248 block# 3557643
15:50:35 3610 25245 5bs1vzzr3m9kb file# 100 block# 2022843
15:50:34 3610 25245 5bs1vzzr3m9kb file# 248 block# 3558475
15:50:33 3610 25245 5bs1vzzr3m9kb file# 248 block# 3557836
Checking TOP session "db file sequential read" average wait time......
(Note:Need to wait 60Secs)
============
TOP rolling back session "db file sequential read" avg_wait_time_ms is:
2021-01-05 15:50:57: 0.68
2021-01-05 15:51:00: 0.44
2021-01-05 15:51:03: 0.41
2021-01-05 15:51:06: 0.76
2021-01-05 15:51:09: 0.67
2021-01-05 15:51:12: 0.71
2021-01-05 15:51:15: 0.77
2021-01-05 15:51:18: 0.47
2021-01-05 15:51:21: 0.38
2021-01-05 15:51:24: 0.49
2021-01-05 15:51:27: 0.44
2021-01-05 15:51:30: 0.29
2021-01-05 15:51:33: 0.51
2021-01-05 15:51:36: 0.44
2021-01-05 15:51:39: 0.5
2021-01-05 15:51:42: 0.34
2021-01-05 15:51:45: 0.35
2021-01-05 15:51:48: 0.43
2021-01-05 15:51:51: 0.38
2021-01-05 15:51:54: 0.41
Checking Check system level "db file sequential read" average wait time......
============
EVENT_NAME END_INTERVAL_TIME AVG_WAIT_TIME_MS
-------------------------------------------------------------------------------- ----------------- ----------------
SystemLevel_AllDatafile:db file sequential read 2021-01-05 15:45 0.34
SystemLevel_AllDatafile:db file sequential read 2021-01-05 15:30 0.42
SystemLevel_AllDatafile:db file sequential read 2021-01-05 15:15 0.16
SystemLevel_AllDatafile:db file sequential read 2021-01-05 15:00 0.26
SystemLevel_AllDatafile:db file sequential read 2021-01-05 14:45 0.27
SystemLevel_AllDatafile:db file sequential read 2021-01-05 14:30 0.21
SystemLevel_AllDatafile:db file sequential read 2021-01-05 14:15 0.47
SystemLevel_AllDatafile:db file sequential read 2021-01-05 14:01 0.48
SystemLevel_AllDatafile:db file sequential read 2021-01-05 13:45 0.46
SystemLevel_AllDatafile:db file sequential read 2021-01-05 13:30 0.42
SystemLevel_AllDatafile:db file sequential read 2021-01-05 13:15 0.4
SystemLevel_AllDatafile:db file sequential read 2021-01-05 13:00 0.35
SystemLevel_AllDatafile:db file sequential read 2021-01-05 12:45 0.25
SystemLevel_AllDatafile:db file sequential read 2021-01-05 12:30 0.29
SystemLevel_AllDatafile:db file sequential read 2021-01-05 12:15 0.37
SystemLevel_AllDatafile:db file sequential read 2021-01-05 12:00 0.22
SystemLevel_AllDatafile:db file sequential read 2021-01-05 11:45 0.32
SystemLevel_AllDatafile:db file sequential read 2021-01-05 11:30 0.22
SystemLevel_AllDatafile:db file sequential read 2021-01-05 11:16 0.26
SystemLevel_AllDatafile:db file sequential read 2021-01-05 11:00 0.08
Checking the transaction rollback estimate time......
(Note:Need to wait 60Secs)
============
2021-01-05 15:52:55==> Base on 60Secs calculated, Estimate remaining trx rollback time is ......:22Days 04Hours 49Mins 37Secs
== >>>>>>>>>> UNDO CHECK SCRIPT END <<<<<<<<<< ==
SQL>
附:sql脚本undo_roll_segment_checking
https://www.modb.pro/download/61213
最后修改时间:2021-03-25 15:35:30
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。