oracle undo表空间不释放
OS:redhat linux 7.4
DB:11.2.0.4.0单机
undo_retention=10800,undo表空间几乎一天增长50G空间,查V$rollstat的status都是online,请问如何分析排查问题
我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
2条回答
默认
最新
--查看数据库undo整体状况
select tablespace_name, status, sum(bytes) / 1024 / 1024 / 1024 "bytes(G)"
from dba_undo_extents
group by tablespace_name, status;
--查看active状态的segment
SELECT b.usn,
tablespace_name,
segment_name,
bytes "Extent_Size",
count(extent_id) "Extent_Count",
bytes * count(extent_id) "Extent_Bytes"
FROM dba_undo_extents a, v$rollname b
WHERE status = 'ACTIVE'
and a.SEGMENT_NAME = b.name
group by b.usn, tablespace_name, segment_name, bytes
order by count(extent_id) desc;
--查看具体 undo segment 的情况
SELECT b.usn, --undo segment NO.
tablespace_name,
segment_name,
bytes "Extent_Size",
status,
count(extent_id) "Extent_Count",
bytes * count(extent_id) "Extent_Bytes"
FROM dba_undo_extents a, v$rollname b
WHERE /*status = 'ACTIVE'
and*/ a.SEGMENT_NAME = b.name
and a.SEGMENT_NAME ='_SYSSMU479_2990344083$'
group by b.usn, tablespace_name, segment_name, bytes,status
order by count(extent_id) desc;
-- 通过usn查看会话中的事务状态,正在运行什么sql
select start_time, --事务起始时间
s.SID, -- session id
s.username, --用户名
s.MACHINE, --机器名称
s.OSUSER, --登录名
pr.SPID,
r.name, --回滚段名称
ubafil, --Undo block address (UBA) filenum
ubablk, --UBA block number
t.ses_addr,
t.status, --会话状态
(used_ublk * p.value) / 1024 blk, --使用的回滚段空间
used_urec, --使用的undo 记录 ,
s1.SQL_ID, --sql_id
s1.SQL_TEXT --sql文本
from v$transaction t, v$rollname r, v$session s, v$parameter p, v$sql s1 ,v$process pr
where xidusn = usn
and s.saddr = t.ses_addr
and p.name = 'db_block_size'
and s.SADDR = s1.ADDRESS(+)
and s.paddr = pr.addr(+)
and xidusn = 1505
order by 1;
评论
有用 2回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

