Oracle] 解析在没有备份的情况下undo损坏怎么办

  次阅读 作者:智能小宝 来源:互联网 2016-01-28 13:12 我要评论(0)

Oracle在运行中很不幸遇到undo损坏,当然最好的方法是完全恢复,但如果是在没有备份的情况下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_NAMESTATUS

------------------------------ ----------------

SYSTEMONLINE

_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

NAMETYPEVALUE

------------------------------------ ----------- -------------

undo_managementstringAUTO

undo_retentioninteger900

undo_tablespacestringundo1关闭数据库: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'

Step 3.手动删除受影响的回滚段:

SQL>drop rollback segment "_SYSSMU10_1201331463$";

SQL>drop rollback segment "_SYSSMU9_2926456744$";

SQL>drop rollback segment "_SYSSMU8_640224757$";

SQL>drop rollback segment "_SYSSMU7_3984293596$";

SQL>drop rollback segment "_SYSSMU6_3694658906$";

SQL>drop rollback segment "_SYSSMU5_3475919656$";

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...