2.UNDO
2.1undo产生量的对比
(1) 有索引的表数据的修改产生的undo信息会多,这个很容易理解,修改这些数据的时候可能修改索引数据,所以会生成额外的undo信息。
(2)相同情况下:delete产生的undo信息最多,因为回滚需要的反删除(insert)信息必然是一行的所有信息,所以产生的undo信息最多,其次就是update,它只需要记录修改的列的信息,一般不会修改主键所以必然比delete少,最后就是insert了,回滚的时候只需要记住他的rowid就可以了。
2.2查看你的会话产生了多少undo快
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
2.3 ORA-01555:snapshot too old
(1)原因:undo段太小,块清除,跨commit(?),根本原因
(2)解决方法
a.增大UNDO_RETENTION
b.添加回滚段.
c.查询调优,尽量减少长查询.
d.收集对象的统计信息