貌似SYSTEM的回滚段过小,如何解决

[复制链接]
查看11 | 回复9 | 2011-11-1 16:26:59 | 显示全部楼层 |阅读模式
ORA-01555: snapshot too old: rollback segment number 41 with name "_SYSSMU41$" too small
这个是不是SYSTEM的手工管理的回滚段过小?如何设置大呢?

回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
有二个可能
1 undo表空间太小
2 undo_retention设置太小
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
查查undo参数
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
OYchaos 发表于 2011-11-27 19:51
有二个可能
1 undo表空间太小
2 undo_retention设置太小

单个undo.dbf已经加到31G了,表和索引都只有20G,应该不大可能。Undo_retention是900s。
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
难道UNDO的大小一定会小于表盒索引的总和么?
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
你到v$undostat视图看看平均一秒产生的undo是多少,具体查询语句你可以网上查下。
其实还有一个可能是你那个sql运行太久了,看看运行了多少秒
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
回滚段过旧,其实即使你设置了undo_retention参数,在没有设置表空间强制保留的情况下,alter tablespace untbso retentionguarantee情况下,回滚段如果繁忙即使在undo_retention参数范围内依然可能被覆盖啊!而ora-01555下需要你较大设置回滚表空间来避免!
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
一般这种报错后面会有相关的SQL~看看是不是可以优化一下~

回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
OYchaos 发表于 2011-11-28 08:46
你到v$undostat视图看看平均一秒产生的undo是多少,具体查询语句你可以网上查下。
其实还有一个可能是你 ...

我很肯定就是SQL语句运行太久了,但是是开发商给的语句,只能在索引丢失后手工添加进去。
比如我把logging 改为nologging, 然后parallel 16这样,虽然我不肯定这两个参数是否一定有效。
另外你说的第一句“你到v$undostat视图看看平均一秒产生的undo是多少”是什么用意我不是很明白
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
iori809 发表于 2011-11-28 09:55
一般这种报错后面会有相关的SQL~看看是不是可以优化一下~

有SQL,是在10几年的分区表上建索引的语句,我对优化也不是很了解。请指教
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行