系统数据文件备份与恢复及只读数据文件备份与恢复

系统数据文件又称为 关键性数据文件
   
   关键性数据文件分为:SYSTEM表空间的数据文件 和  UNDO_TABLESPACE 撤销表空间的数据文件
   undo_tablespace 自动撤销表空间的数据文件可以通过查询参数 undo_tablespace 指向的撤销表空间。
  
   system 表空间的数据文件默认就是 1号数据文件,其内部保存的是 oracle数据库系统表即数据字典,是对数据库本身的
   描述,是数据库正常运行的基本保障。系统回滚段(以名为sys.system的撤销段)能够保存数据字典变更的撤销数据。也是
   1号数据文件的内容。
   system表空间 1号数据文件的损坏分为:数据文件丢失、文件头损坏、数据字典损坏、sys.system撤销段损坏。
   1、文件丢失或不能访问:启动oracle时只能讲实例带到mount状态
   2、文件头损坏:运行检查点发起后实例会崩溃,启动oracle时也只能带到mount状态。
   3、数据字段损坏:数据库内的对象定义系统、名称解析系统、用户账号系统、权限管理系统等基础设施将出现部分或全部崩溃。
   4、以名为 sys.system的撤销段损坏:如果实例在运行时sys.system 撤销段与 undo_tablespace 表空间撤销段同时损坏,实例运行的
                                                                DDL及对SYSTEM表空间内的任意DML 都将失败;在启动实例阶段SYS.SYSTEM撤销段头部损坏
                                                                实例被强行中断。 连NOMOUNT 状态也进不了,必须用 “startup mount” 才能进入MOUNT状态。
 
    在发生检查点时,若数据文件 或 撤销表空间数据文件头部损坏,实例会被强行中止。这也可作为判断该文件是否为关键数据文件的一个指标。
    但是 检查点CKPT进程不会因为普通文件头部损坏而中止实例。
   
    undo_tablespace 数据文件损坏
    udo数据文件是用来保存所有的变更类命令所产生的撤销数据。
    udo数据文件损坏分为 3种:
    1、udo数据文件丢失或不能访问,实例只能启动到 mount状态
    2、udo数据文件头部损坏,也只能启动到mount状态,运行检查点发起后实例崩溃。
    3、udo表空间某些撤销段损坏,DML命令可能失败;oracle启动时任意一个撤销段头部损坏,实例将被强制关闭,必须 startup mount才能
        进入 mount 状态。撤销段的拥有者是 SYS。实例启动时对撤销段损坏进行 零容忍,有一个撤销段损坏就崩溃。
       
  备份
        使用 BACKUP DATABASE、  backup tablespace  、  backup datafile  、backup as copy  数据文件镜像复制  都可以备份数据文件。
   
 恢复
        恢复的核心步骤是:将数据库进入到mount状态、从备份还原(即restore 或 switch命令)、使用增量备份或重做日志恢复(recovery)
                                          打开数据库。关键数据文件的恢复整个过程都是在 MOUNT状态下完成的。即不能在OPEN状态下进行恢复,也就是
                                          说 关键数据文件不可采用 高可用恢复策略。mount状态需要打开控制文件。
       
     恢复的流程为:
        1、如果实例在运行,则使用 shutdown  abort 关闭实例或 KILL 系统命令关闭实例;
        2、startup mount  ;进入到 MOUNT状态(即打开控制文件);
        3、使用RMAN 执行 restore  或  switch 命令还原损坏的关键数据文件;
        4、使用 recover database 命令利用归档日志和在线重做日志恢复数据文件;
        5、执行 alter  database   open  命令打开数据库,恢复完成。
       
        RUN
        {
            STARTUP  MOUNT;
            RESTORE TABLESPACE SPACE_NAME;
            RECOVER DATABASE;
            ALTER DATABASE OPEN;
        }
        当数据文件的镜像复制处于磁盘上时,使用 switch 命令取代restore命令将控制文件中的数据文件名立即换成镜像复制文件名,
            这样恢复的速度更快。 SWITCH命令的作用是将当前数据文件与镜像复制文件互换。
        STARTUP MOUNT;
        ---以下两步不是必须的
        LIST DATAFILECOPY ALL;
        validate datafilecopy all;
        ---以上两步不是必须的   
        RUN
        {
            SWITCH DATAFILE 1 TO DATAFILECOPY 'PATH';
            RECOVER DATABASE;
            ALTER DATABASE OPEN;
        }

 

只读数据文件是只读表空间的数据文件。
    备份:
        备份只读数据文件方式 和备份其他数据文件的方式一样。
       
     恢复:
     由于只读文件没有 “写(更改)”的操作,所有就不用归档日志和重做日志恢复了。只需 还原即可。
      在MOUNT状态下的 低可用恢复策略的恢复 步骤:
     1、执行 startup mount 进入 MOUNT 状态
     2、执行 restore 或 switch 命令还原数据文件
     3、执行 alter database open 命令打开数据库,恢复完成
 
     在OPEN状态下的高可用恢复策略的恢复步骤:
     1、执行 alter database 命令让受损坏的只读数据文件下线
     2、执行 restore force  或 switch 命令还原数据文件
     3、执行 alter database datafile 5 online 命令使数据文件上线。
    
   低可用恢复 需要 参数文件和控制文件必须就位。 高可用恢复 还需要关键数据库文件必须就位。
  
   控制文件无损情况下的恢复
    指:只读数据文件损坏时控制文件没有损坏。
    ---如果数据块损坏,通道认为只读数据文件还存在,无须还原,这时必须用 restore datafile  5 force命令还原
    run
    {sql 'alter databae datafile 5 offline';
    restore datafile 5 force;
    sql' alter database datafile 5 online';
    }
    使用镜像复制就不必使用 force关键字
    run
    {
        sql' alter database datafile 5 offline';
        switch datafile 5 to datafilecopy 'path';
        sql' alter database datafile 5 online';
    }
   
  控制文件损坏情况下的恢复
    指:只读数据文件与控制文件一并损坏时的恢复。其恢复步骤包括 恢复控制文件与只读数据文件
    1、将数据库启动至 NOMOUNT状态
    2、用 restore 命令还原控制文件
    3、将数据库启动到 MOUNT 状态
    4、用 restore 命令还原只读数据文件
    5、用 recover 命令恢复整个数据
    6、用 resetlogs 方式打开数据库
    run
    {
        restore controlfile from autobackup;
        mount database;
        restore datafile 5;
        recover database;
        ---如果只读数据文件改为 读写状态后,没有备份,这时数据文件和控制文件都损坏,则需再加一次 recover databae,否则不需要
        recover database;
          ---如果只读数据文件改为 读写状态后,没有备份,这时数据文件和控制文件都损坏,则需再加一次 recover databae
        alter database open resetlogs;
    }
   

 

你可能感兴趣的:(数据文件)