Welcome 微信登录

首页 / 数据库 / MySQL / [Oracle] 在没有备份的情况下undo损坏怎么办?

如果Oracle在运行中很不幸遇到undo损坏,当然最好的方法是完全恢复,不过如果没有备份,可以采用一种非常规的手段(利用Oracle的隐藏参数),如果此时undo包含未提交的事务,会造成一点点的数据丢失(一般都是可忍受的),如果没有未提交的事务,则不会有数据丢失。其主要步骤有:1. 修改undo表空间管理为手动;
2. 设置隐藏参数(_offline_rollback_segments或_corrupted_rollback_segments)标识受影响的回滚段,使Oracle忽略其上的未提交事务;
3. 手动删除受影响的回滚段和undo表空间,然后重建新的undo表空间;
4. 还原undo表空间管理为自动。实验如下:Step 1.
如果undo数据文件损坏,数据库只能到mount状态,open时会出现以下错误:
ORA-01157: cannot identify/lock data file 14 - see DBWR trace file
ORA-01110: data file 14: "I:INTEL_DATAO06DMS0UNDO1.O06DMS0"
说明该undo文件已经损坏或丢失,把该文件offline之后就可以打开数据库了:
SQL> alter database datafile "I:INTEL_DATAO06DMS0UNDO1.O06DMS0" offline drop;
SQL> alter database open;
打开数据库的目的是为了找出受影响的回滚段:
SQL> select segment_name,status from dba_rollback_segs;


SEGMENT_NAME STATUS
------------------------------ ----------------
SYSTEM ONLINE
_SYSSMU10_1201331463$ OFFLINE
_SYSSMU9_2926456744$ OFFLINE
_SYSSMU8_640224757$ OFFLINE
_SYSSMU7_3984293596$ OFFLINE
_SYSSMU6_3694658906$ OFFLINE
_SYSSMU5_3475919656$ OFFLINE
_SYSSMU4_168502732$ OFFLINE
_SYSSMU3_1987193959$ OFFLINE
_SYSSMU2_3908286755$ OFFLINE
_SYSSMU1_3281912951$ OFFLINE


SQL> show parameter undo


NAME TYPE VALUE
------------------------------------ ----------- -------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string undo1
关闭数据库:
SQL> shutdown immediate;


Step 2.
创建一个临时的pfile:
SQL> create pfile="H:initO06DMS0.ora" from spfile;
修改pfile如下:
*.undo_management="manual" -- undo表空间管理方式修改为手动
*.undo_tablespace="undo2" --指定一个新的undo表空间
*._offline_rollback_segments=("_SYSSMU10_1201331463$","_SYSSMU9_2926456744$","_SYSSMU8_640224757$","_SYSSMU7_3984293596$","_SYSSMU6_3694658906$","_SYSSMU5_3475919656$","_SYSSMU4_168502732$","_SYSSMU3_1987193959$","_SYSSMU2_3908286755$","_SYSSMU1_3281912951$") --把所有受影响的回滚段都列在这里
并以改pfile重新启动数据库:
SQL> startup pfile="H:initO06DMS0.ora"
  • 1
  • 2
  • 下一页
关于Oracle 11g 统计信息的收集Oracle获取执行计划的几种方法相关资讯      Oracle Undo 
  • Oracle中利用undo进行数据的恢复操  (11/27/2015 09:31:30)
  • Oracle Undo tablespace恢复(无备  (06/27/2014 20:31:17)
  • Oracle Undo的一些理解  (09/05/2013 16:28:02)
  • Oracle UNDO 监控  (08/03/2014 07:26:01)
  • Oracle undo 机制  (01/23/2014 14:49:33)
  • Oracle undo 镜像数据探究  (08/19/2013 16:16:37)
本文评论 查看全部评论 (0)
表情: 姓名: 字数