UNDO表空间丢失/损坏测试

1、模拟丢失了undo表空间数据文件,SHUTDOWN ABORT,进行启动报错找不到数据文件
2、设置UNDO datafile offline后启动数据如下
SQL> alter database datafile 2 offline;
接下来试试能不能打开数据库,能打开就查看那些回退段
SQL> startup
ORACLE instance started.

Total System Global Area  599785472 bytes
Fixed Size                  2098112 bytes
Variable Size             163580992 bytes
Database Buffers          427819008 bytes
Redo Buffers                6287360 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced
查看日志还是报不能找到数据文件,如果是干净的关闭数据库这里可以直接起来
3、设置初始参数设置UNDO表空间管理为手动
*.undo_management='manual'
4、如果打不开数据库,只有按照以前的巡检或者猜测设置
*._corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

5、启动数据库
后删除需要RECOVER的undo段

SQL>  DROP ROLLBACK SEGMENT "_SYSSMU10$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU1$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU2$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU3$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU4$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU5$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU6$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU7$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU8$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU9$";

Rollback segment dropped.

SQL> DROP ROLLBACK SEGMENT "_SYSSMU10$";

然后删除表空间

SQL>  DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

6、新建表空间UNDO

 CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'C:\UNDOTBS03.DBF' SIZE 20M;
7、最后停止数据库,更改参数UNDO_MANAGE
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS2'
去掉
_offline_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

8、最后检查一下

select * from dba_rollback_segs;查看一下状态

本次测试使用SHUTDOWN ABORT模拟掉电,在10.2.0.5没有通过,10.2.0.4测试通过,可见这个方法并不适用所有,而且可能导致数据混乱,因为没有提交的数据,已经提交,没有回滚。
所以做好备份时最重要的,如果有UNDO表空间备份那么直接恢复一下就好了。

另外如果数据库是干净的关闭的,10.2.0.5,10.2.0.4都一致,那么即使UNDO损坏直接OFFLINE数据文件后就能打开数据库,而不会报错
ORA-01092: ORACLE instance terminated. Disconnection forced,这样修复起来更加简单,这个就是碰运气了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7728585/viewspace-777441/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7728585/viewspace-777441/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值