11.09.20 学习笔记:数据库恢复


打开数据库

※成功打开数据库的条件:

  1. 所有控制文件都必须存在且已同步
  2. 所有联机数据文件都必须存在且已同步
  3. 每个重做日志组必须至少有一个成员

 

※数据库从关闭到完全打开,数据库会在相应阶段执行一致性检查,包括:

①NOMOUNT阶段:实例要到达NOMOUNT状态,就必须读取初始化参数文件。

②MOUNT阶段:实例进入MOUNT状态,要经过检查控制文件是否存在且已同步。即使有一个控制文件缺失或损坏都会报错并保持在NOMOUNT状态。

③OPEN阶段:

  1. 检查控制文件知道的所有重做日志组是否都至少有一个成员。
  2. 验证所有联机数据文件是否存在,但不验证脱机文件。
  3. 验证所有联机数据文件或只读文件是否与控制文件同步。

    △只要数据文件不属于SYSTEM或UNDO 表空间,管理员就可使数据文件脱机并打开实例。

 

※更改实例状态

  1. NOMOUNT:SQL>STARTUP NOMOUNT;
  2. MOUNT:SQL>ALTER DATABASE MOUNT;
  3. OPEN:SQL>ALTER DATABASE OPEN;

 


 

实例失败

※打开实例后,丢失以下项时,实例会失败:

  1. 任何控制文件
  2. 属于系统或者还原表空间的数据文件(丢失其他表空间的数据文件不会导致故障,可在实例处于打开状态时恢复数据库,此时其他表空间中的工作可以继续运行)
  3. 整个重做日志组(只要组中至少有一个成员可用,实例就会保持在打开状态)

※多数情况下,实例失败后并没完全关闭,但不能继续工作。

△必须在关闭数据库后才能从这些类型的介质故障进行恢复,因此,管理员必须先执行SHUTDOWN ABORT命令,然后才能开始恢复工作。

 


 

恢复方法——丢失控制文件

※只要至少保留了一个控制文件,可按如下步骤恢复:

  1. 如果实例尚未失败,使用SHUTDOWN ABORT关闭实例。
  2. 将剩余的一个控制文件复制到缺失文件的位置(或将控制文件复制到其他位置,然后更新参数文件来指向新位置。也可以从初始化参数文件中删除对缺失控制文件的引用)
  3. 启动实例

建议在任何时间至少要保留两个控制文件

 


 

恢复方法——丢失重做日志文件

 

※丢失了单个重做日志组成员后进行恢复并不会影响运行的实例,按如下步骤恢复:

①检查预警日志,确定是否有缺失的日志文件

②通过以下方式恢复缺失的文件,先删除丢失的重做日志成员:

 SQL> ALTER DATABASE DROP LOGFILE MEMBER 'redo01a.log';
   
③然后添加新的成员以替换丢失的重做日志成员:

 SQL> ALTER DATABASE ADD LOGFILE MEMBER 'redo01a.log' TO GROUP 2;

 

※△如果介质故障是由于丢失了磁盘驱动器或控制器造成的,请重命名缺失文件。

 

※如果重做日志组已归档,或者您处于NOARCHIVELOG 模式下,恢复如下:

①选择清除受影响的日志组

 SQL> ALTER DATABASE CLEAR LOGFILE GROUP #;

#为相应组号

②重新创建缺失文件来解决问题

 SQL>ALTER DATABASE ADD LOGFILE GROUP # 'redo#.rdo';

 

△清除未归档的日志组,使用以下命令:

 SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP #;

 

   


 

恢复方式——NOARCHIVELOG/ARCHIVELOG模式下

 

(一)NOARCHIVELOG模式下丢失数据文件

※如果在NOARCHIVELOG 模式下丢失了数据库中的任何数据文件,则需要完全还原数据库,包括控制文件和所有数据文件。

※恢复步骤如下:

  1. 关闭实例(如果尚未关闭)。
  2. 从备份还原整个数据库,包括数据文件与控制文件。
  3. 打开数据库。
  4. 让用户重新输入自上次备份以来所做过的所有修改

 

(二)ARCHIVELOG模式下丢失非关键数据文件

※如果在NOARCHIVELOG 模式下丢失了数据库中的任何数据文件,则需要完全还原数据库,包括控制文件和所有数据文件。

  1. 无需关闭数据库实例
  2. 选择需要恢复的数据文件与还原时间
  3. 提交RMAN作业以还原并恢复缺失的文件

※由于数据库处于ARCHIVELOG 模式,因此可恢复到上次提交的时间,用户不必重新输入任何数据

 

(三)ARCHIVELOG模式下丢失系统关键数据文件

※如果某个数据文件丢失或损坏了,且该文件属于SYSTEM或UNDO 表空间,恢复过程如下:

  1. 若实例未关闭,使用SHUTDOWN ABORT关闭实例
  2. 装载数据库(即启动到MOUNT状态)
  3. 选择需要恢复的数据文件与还原时间
  4. 提交RMAN作业以还原并恢复缺失的文件

※由于数据库处于ARCHIVELOG 模式,因此可恢复到上次提交的时间,用户不必重新输入任何数据。

 


 

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

转载于:http://blog.itpub.net/26121819/viewspace-707988/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值