您的位置:首页 > 数据库 > Oracle

oracle undo损坏修复方法

2014-10-16 12:06 309 查看
对于undo损坏的情况 有两种情形分别是有活动事务和没有活动事务的情况

1,没有活动事务

 在没有活动事务的情况下个人觉得最快捷的方法就是offline并drop相关的数据文件然后打开数据库 新建undo表空间,将系统默认表空间指定到新建的undo表空间即可。(个人观点)

2,有活动事务的情况

 误区 像之前已没有活动事务的情况一样解决,数据库能正常启动,但是当访问当时正在操作的表时会发生数据不一致的情况

解决方法:

1,涉及的数据字典视图

v$rollstat v$rollname dba_rollback_segs v$transaction v$session

2,将丢失的文件offline掉

alter databae datafile ‘。。。。。.dbf' offline drop;

3,查看回滚段状态

select status ,count(*) from dba_rollback_segs group by status;

4,尝试新建undo表空间 (不出意外会报错)

5.创建pfile参数文件,在参数文件中修改参数

增加 undo_meanagement='menual'

     undo_tablespace='undo2'

     _offline_rollback_segments=('_syssmu*$.....’)

6,用pfile启动数据库

查看当前需要need recover的回滚段

删除这些回滚段

drop rollback segment“$1";

知道就剩下一个系统回滚段

然后drop undo表空间

新建undo表空间

7,关闭数据库 用spfile启动,这时候修改的所有操作都记录在pfile里面

还需要重新指定表空间,修改管理方式。

8,重启 查询正在修改的表,测试数据

该方式是将没有提交的事务默认提交。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息