在Oracle中,在UNDO表空间数据文件丢失的情况下如何恢复?
恢复大约可以分为3种情况:①有备份,这种情况下直接采用备份的文件进行恢复即可。②无备份但是有完整的归档文件存在,这种情况下可以使用命令“ALTER DATABASE CREATE DATAFILE 文件号 AS '/u03/app/oracle/oradata/ora1024g/undotbs01.dbf' size 50m;”来创建丢失的UNDO文件,然后使用“RECOVER DATAFILE 文件号;”进行恢复数据库文件即可。③无备份归档文件丢失,在这种情况下的恢复比较复杂。首先应该切换UNDO表空间到一个新建的UNDO表空间中,并设置原有表空间的管理模式为手动管理模式,然后将隐含参数“_OFFLINE_ROLLBACK_SEGMENTS”设置为TRUE,一些关键性的命令如下所示:
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2 SCOPE=SPFILE;
ALTER SYSTEM SET UNDO_MANAGEMENT=MANUAL SCOPE=SPFILE;
ALTER SYSTEM SET "_OFFLINE_ROLLBACK_SEGMENTS"=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET "_CORRUPTED_ROLLBACK_SEGMENTS"='_SYSSMU1$','_SYSSMU2$','_SYSSMU3$','_SYSSMU4$','_SYSSMU5$','_SYSSMU6$','_SYSSMU7$','_SYSSMU8$','_SYSSMU9$','_SYSSMU10$' SCOPE=SPFILE;
CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '/U03/APP/ORACLE/ORADATA/ORA1024G/UNDOTBS01.DBF' SIZE 50M AUTOEXTEND ON;
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS1 SCOPE=SPFILE;
ALTER SYSTEM SET UNDO_MANAGEMENT=AUTO SCOPE=SPFILE;
ALTER SYSTEM RESET "_OFFLINE_ROLLBACK_SEGMENTS" SCOPE=SPFILE SID='*';
ALTER SYSTEM RESET "_CORRUPTED_ROLLBACK_SEGMENTS" SCOPE=SPFILE SID='*';
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:230161599
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。




