ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 11.09.20 学习笔记:数据库恢复

11.09.20 学习笔记:数据库恢复

原创 Linux操作系统 作者:c_shore 时间:2011-09-21 01:43:06 0 删除 编辑


打开数据库

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

  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博客 ” ,链接:https://blog.itpub.net/26121819/viewspace-707988/ ,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2011-08-01

  • 博文量
    32
  • 访问量
    28183