ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 实例恢复详细分析总汇(转)

实例恢复详细分析总汇(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-04-10 09:36:06 0 删除 编辑
实例恢复详细分析总汇,恢复详细,性能调优
 I. 数据库是处于关闭状态的
  试图打开数据库时报ORA-1157和ORA-1110错误这时的解决方法取于数据库是否是正常shutdown的(使用normal或immediate选项
  I.A.数据库是正常shutdown的
  如果数据数据库是正常shutdown的最简单的解决方法是以offline drop选项删除丢失或损坏的数据文件以restriceted模式打个数据库删除并重建这个数据文件所属的那个回滚表空间如果数据库是以shutdown abort或自己崩溃掉的则不要遵循这个过程
  步骤如下:
  1、确认数据库是正常shutdown的可以检查alter.log这个文件定位到最后几行看是否可以看到如下的信息:
  "alter database dismount
  Completed: alter database dismount"
  这当然也包括以正常方式shutdown,接然试图启动数据库确失败的状况如果最近一次你是以shutdown abort方式关闭数据库的或数据库是自己crashed掉的你应用使用下面的I.B的方法
  2、在init<sid>.ora中把属于丢失数据文件的回滚段从ROLLBACK_SEGMENTS参数中去掉如果你不能确信是哪个回滚段可以简单的把ROLLBACK_SEGMENTS这个参数注释掉
  3、以restricted模式mount数据库
  STARTUP RESTRICT MOUNT;
  4、Offline drop丢失或损坏的那个数据文件

ALTER DATABASE DATAFILE '<full_path_file_name>' OFFLINE DROP;



  5、打开数据库
  ALTER DATABASE OPEN;
  如果返回"Statement processed"这条信息转到第7步.
  如果得到ORA-604,ORA-376,和ORA-1110错误转到第6步
  6、因为打开数据库失败shutdown掉数据库并且编辑int<SID>.ora这个文件注释掉ROLLBACK_SEGMENTS这个参数并且在init<SID>.ora文件中加入如下一行:
  _corrupted_rollback_segments = (<rollback1>,...,<rollbackN> )
  需要注意的是这个参数只能在指定的情况下或在oracle的全球持术支持的指导下才应使用然后以restricted模式打开数据库:
  STARTUP RESTRICT
  7、删除掉那个文件所属的回滚段表空间

DROP TABLESPACE <tablespace name> INCLUDING CONTENTS;


  8、重建回滚段表空间及回滚段创建完后使它们online.
  9、使数据库所有用户都可用

ALTER SYSTEM DISABLE RESTRICTED SESSION;


  10、在init<SID>.ora中把你重新创建的回滚段再一次包括进来如果你使用了第6步则移除掉CORRUPTED_ROLLBACK_SEGMENTS这个参数
  I.B.数据库不是正常shutdown的
  这种情况数据库最近一次是用shutdown abort或crashed掉关闭回滚段中几乎一定包含着活动的事务因此坏的那个数据文件不能脱机(offline)或是drop掉你必需从备份恢复这个文件如果数据为是处于非归档模式的只有最近的一些事务日志还没有被重写掉的情况你才能成功恢复这个文件如果这个文件的备份也是无效的联系一下oracle的技术支持吧
  步骤如下:
  1、从备份中恢复丢失的那个数据文件.
  2、mount 上数据库
  3、执行如下的查询:

SELECT FILE#,NAME,STATUS FROM V$DATAFILE;


  如果数据文件的状态是offline的你必需先把它联机了:

ALTER DATABASE DATAFILE '<full_path_file_name>' ONLINE;


  4、执行如下的查询:

SELECT V1.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE# FROM V$LOG V1, V$LOGFILE V2 WHERE V1.GROUP# = V2.GROUP# ;



  这将列出所有的联机的重做日志和他们的序号及首次改变号(first change numbers).
  5、如果这个数据库是非归档模式的执行如下的查询:

SELECT FILE#, CHANGE# FROM V$RECOVER_FILE;


  如果其中的CHANG#比4中的最小的那个FIRST_CHANGE#大的话用联机日志就可以完成恢复
  6、如果CHANG#比4中的最小的那个FIRST_CHANGE#小则数据库是不能恢复的可以联系一下oracle的技术支持
  译者插入:如果你真是非归档方式且这个文件的备份也是无效的如果你认为可以丢失回滚段中的那事务你可以用I.A中从第6步的方法这时可以打开数据库

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

请登录后发表评论 登录
全部评论

注册时间:2007-08-29

  • 博文量
    3488
  • 访问量
    2621061