热备份之恢复UNDO


热备份之恢复UNDO

	# 没有备份的恢复,请先保护现场

	undo表空间损坏的恢复
	
		模拟场景:
			dml(do not commit) -> shutdown abort -> mv undo datafile

		恢复过程:
		1. startup -> mount;
			alter database datafile '/u01/app/oracle/oradata/huayd/undotbs01.dbf' offline drop;
			alter system set undo_management=manual scope=spfile;
			alter system set undo_tablespace=undotbs2 scope=spfile;
			alter system set "_corrupted_rollback_segments"='(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)' scope=spfile;

			create pfile='/home/oracle/p.ora' from spfile;
			vim p.ora 
			
		2.alter database open;
			create undo tablespace undotbs2 datafile 'xxx' size 10m;
			select segment_name,tablespace_name, owner,status from dba_rollback_segs;
				# find out the segment_name NEEDS RECOVERY

			startup force
			DROP ROLLBACK SEGMENT "_SYSSMU10$";
			drop tablespace undotbs1 including contents and datafiles;

		SQL> select segment_name,tablespace_name, owner,status from dba_rollback_segs;

		SEGMENT_NAME                   TABLESPACE_NAME                OWNER  STATUS
		------------------------------ ------------------------------ ------ ----------------
		SYSTEM                         SYSTEM                         SYS    ONLINE
		_SYSSMU1$                      UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU2$                      UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU3$                      UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU4$                      UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU5$                      UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU6$                      UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU7$                      UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU8$                      UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU9$                      UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU10$                     UNDOTBS1                       PUBLIC NEEDS RECOVERY
		_SYSSMU11$                     UNDOTBS2                       PUBLIC ONLINE
		_SYSSMU12$                     UNDOTBS2                       PUBLIC ONLINE
		_SYSSMU13$                     UNDOTBS2                       PUBLIC ONLINE
		_SYSSMU14$                     UNDOTBS2                       PUBLIC ONLINE
		_SYSSMU15$                     UNDOTBS2                       PUBLIC ONLINE
		_SYSSMU16$                     UNDOTBS2                       PUBLIC ONLINE
		_SYSSMU17$                     UNDOTBS2                       PUBLIC ONLINE
		_SYSSMU18$                     UNDOTBS2                       PUBLIC ONLINE
		_SYSSMU19$                     UNDOTBS2                       PUBLIC ONLINE
		_SYSSMU20$                     UNDOTBS2                       PUBLIC ONLINE

		(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

		#alter system set "_offline_rollback_segments"=10 scope=spfile;

		alter system set "_allow_resetlogs_corruption"=true scope=spfile;
		alter system set events='10231 trace name context forever, level 10';

-- 11g
	在11g之前的版本中,回滚段名称是”_SYSTEMn$”之类,而到了11g回滚段的名称变为了”_SYSTEMn_时间戳$”,因为时间戳我们不知道,所以我们不能通过n的值,来确定回滚段的名称,从而也就不能很明确的使用_offline_rollback_segments和_corrupted_rollback_segments来标明异常回滚段。
请使用浏览器的分享功能分享到微信等