eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« 我的Blog Rss订阅用户分布 | Blog首页 | 今天买入的几本图书 »

修改默认的undo_retention参数设置
modb.pro

昨天,一个朋友的数据库数据被误操作删除掉了,请求我帮忙进行恢复。

数据库版本是Oracle10g Release 2的,我首先想到的是使用Flashback Query进行闪回恢复,不幸的是ORA-01555,数据已经不能被闪回了。

查看当时的数据库参数undo_retention设置,发现这个参数被在10g中缺省的被设置为900秒,这个时间长度是不足够的。

马上将这个参数修改为10800,3个小时:

ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;

记得以前一度这个参数的缺省值被设为10800,可是随之而来的是UNDO表空间的过分扩展,难以回收,Oracle在不同版本中,也在进行不停的加权和折中。

Oracle也许会这样想:如果很少有人使用Flashback Query,而过大的undo_retention又会带来麻烦,那么干脆,设小点。

恢复之后,将朋友的另外几个数据库的undo_retention同样修改为10800。
这一设置,应该被更新如安装手册,安装完数据库后即刻作出调整。

另外一点需要记录的是,误删除操作是由于应用程序逻辑错误导致的,这种情况真是屡见不鲜;8.31时还处理过一个重大故障,同样是由于程序编写错误,导致数据库崩溃。
可见,我们的程序员们在编码过程中,同样疏忽不得。

-The End-


历史上的今天...
    >> 2009-09-15文章:
    >> 2007-09-15文章:
    >> 2005-09-15文章:
           我的哈根达斯月饼
           Oracle数据字典说明

By eygle on 2006-09-15 16:35 | Comments (6) | Oracle12c/11g | 900 |

6 Comments

冒死谏言,帅哥
你把首页字的颜色改了可真不咋滴,看起来好累喔!

我们的数据仓库环境我把这个改为0了,默认保留最长时间

在 10gr2 中,oracle 默认会以尽量多地保留 undo record 为目标,而不是超过 undo_retention 就覆盖或者回收了。

如果需要保持9i的这个特征,需要修改
ALTER TABLESPACE undotbs RETENTION GUARANTEE;

据我观察,在 存在大量并发小事务 + 较小 undo_retention + 较小的undo表空间 的前提下

Oracle并不会去扩展Undo表空间,而是选择将超过undo_retention的undo信息覆盖。

这就会导致flash query很快就不可用了。

o,因为我们数据文件都是不允许自动扩展的…… 所以都提前准备好文件的,所以才有上文。


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com