暂无图片
报错误:ora--1555 :快照过旧:回退段号 9(名称为 "_SYSSMU9_1650507775$")过小)
我来答
分享
汤姆凯特
2020-04-29
报错误:ora--1555 :快照过旧:回退段号 9(名称为 "_SYSSMU9_1650507775$")过小)

有一张大表大约7亿,想删除历史数据,delete from 表 where time<sysdate-180 (只保留半年的数据) 报错误:ora–1555 :快照过旧:回退段号 9(名称为 “_SYSSMU9_1650507775$”)过小)说明:redo 三个log组 每个200M,undo:retention大约4小时,大小60G,临时表空间 32G

我来答
添加附件
收藏
分享
问题补充
7条回答
默认
最新
zouxiang

你这张7亿的表占了多少block,段大小多少G了?undo block的状态占比什么情况?undo:retention开启guarantee了没?

暂无图片 评论
暂无图片 有用 0
打赏 0
汤姆凯特

retention没有开启guarantee? 要开启下吗块段信息.jpg

暂无图片 评论
暂无图片 有用 0
打赏 0
zouxiang

delete来处理你就不要想了,我觉得搞不出来,换个思维方式吧

暂无图片 评论
暂无图片 有用 0
打赏 0
JiekeXu
暂无图片

7 亿条数据不算小吧,保留半年的数据。
那么这个半年的数据要比删除的少吧,何不新建一个表只要这半年的数据呢?这样简单点吧.

暂无图片 评论
暂无图片 有用 0
打赏 0
汤姆凯特

好的 感谢解答

暂无图片 评论
暂无图片 有用 0
打赏 0
文成

ora01555是undo的报错,要把undo和redo分清楚,大表删除,一般可以新建一张表,插入保留的数据,然后truncate原表,再rename新表。

要注意,对于你这种表,可以设置分区表,后期清理更方便

当然你的redo设置可能是默认的,要根据业务情况调整

暂无图片 评论
暂无图片 有用 0
打赏 0
汤姆凯特

感谢感谢

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交