或者杀会话前?
一般会看看top,忙不忙,重点要检查事务大小
-
-- 简洁版
-
select
-
t1.sid,
-
t1.username,
-
t2.xidusn,
-
t2.used_urec,
-
t2.used_ublk
-
from
-
v$session t1,
-
v$transaction t2
-
where
-
t1.saddr = t2.ses_addr;
-
或者
-
--加强版
-
-
col username format a15
-
set lin 120 pages 100
-
select s.username,
-
s.sid,
-
s.serial#,
-
t.used_ublk,
-
t.used_urec,
-
rs.segment_name,
-
r.rssize/1024 size_kb, --重点看这
-
r.status
-
from v$transaction t,
-
v$session s,
-
v$rollstat r,
-
dba_rollback_segs rs
-
where s.saddr = t.ses_addr
-
and t.xidusn = r.usn
-
and rs.segment_id = t.xidusn
-
order by t.used_ublk desc;
-
相关字段说明(v$transaction)
如果未提交的事务过大,smon会回滚,以某库关闭为例
回滚了10分钟,漫长的等待。
看看官方的建议吧
-
当立即关机似乎挂起时该怎么办? 最常见的情况是由2个原因造成的:
-
-
1. 关闭时运行的大查询
-
2. 关闭时运行的大事务
-
-
发出shutdown immediate之前,建议检查以下视图
-
-
1. 大查询
-
select count(*) from v$session_longops where time_remaining>0;
-
-
2. 大事务
-
select sum(used_ublk) from v$transaction;
-
-
对于第1种情况
-
shutdown abort
-
startup restrict
-
shutdown immediate
-
-
对于第2种情况
-
当发生大事务时,不要尝试连续abort、startup、immediate。挂起会再次发生。卸载数据库时数据库必须保持一致 - 执行连续的关闭/启动根本没有帮助,它只会使恢复变得更加漫长。
-
-
如果执行了关闭再重启,后台还在执行回滚,但v$transaction 中没有数据,可以通过以下语句检查进度:
-
select * from v$fast_start_transactions;
-
select * from v$fast_start_servers;
-
参考:
shutdown immediate 挂起时该做什么和不该做什么(文档 id 375935.1)
-
https://smarttechways.com/2014/09/10/waiting-for-smon-to-disable-tx-recovery-smon-in-alert-log/
阅读(807) | 评论(0) | 转发(0) |