用户回忆说之前服务器遭遇断电,数据库undo表空间受损。之后使用_corrupted_rollback_segments参数强制打开数据库,并重建了undo表空间,数据库继续使用。于是在运行业务报表时发现某些统计出错(类似上面sql的情况)。
因此我们怀疑查询的异常和数据库的这一故障恢复有关。重建数据库后,这一问题就不再出现了。
类似的参数有:_corrupted_rollback_segments,或_offline_rollback_segments,还有_allow_resetlogs_corruption= TRUE。Oracle建议遇到undo/online redo损坏应使用备份进行恢复,只有当没有备份的情况下,才考虑用这些隐含参数。且数据库打开后,应尽快进行备份,重建数据库,否则会遇到难以遇见的问题。
通过这次故障的分析,也说明了解决问题时,了解事情来龙去脉的重要性。
当online redo log文件损坏,使用_allow_resetlogs_corruption= TRUE
若回滚段损坏导致db无法打开,使用
_corrupted_rollback_segments=(rbs_01, rbs_02, rbs_03)
或_offline_rollback_segments
强制打开db后,数据库存在严重隐患,应通过exp进行备份,然后重建数据库。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18474/viewspace-1060795/ ,如需转载,请注明出处,否则将追究法律责任。