今天遇到一个问题,undo表空间占用率比较高。
查看undo_retention=900.而且当前别没有大的事务,应该会很快释放空间。为何没有释放呢?
经过查看文档,发现在oracle 10G,undo_retention的值实际上已经不起作用了,而是有v$undostat视图中的TUNED_UNDORETENTION这个字段的值来确定,这个值是有oracle动态算出的。
这虽然提高了undo的可用性,但是也会带来其他的问题甚至bug,如果undo的数据库文件是raw设备并且是不可扩展的,这样一开始TUNED_UNDORETENTION的值就会设置的非常大,undo的回收时间就会很长。这样当有大的事务产生时,也许会导致undo表空间满的错误。
解决方法是最好关闭oracle这个自动调整的功能
Alter system set "_undo_autotune" = false; 这个参数可以动态调整
也可以参看Bug 5387030
阅读(530) | 评论(0) | 转发(0) |