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


    系统数据文件又称为 关键性数据文件
       
       关键性数据文件分为: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;
        }
       

  • 相关阅读:
    SpringMVC配置双数据源,一个java项目同时连接两个数据库
    Jquery EasyUI封装简化操作
    C#中Math.Round()实现中国式四舍五入
    Entity Framework6 with Oracle
    在C#中如何读取枚举值的描述属性
    MVC视图中处理Json
    ASP.NET MVC中实现多个按钮提交的几种方法
    asp.net MVC的EF与easyui DataGrid数据绑定
    idea maven下载包太慢了如何解决
    ssh报错No operations allowed after connection closed.Connection was implicitly clos
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3225768.html
Copyright © 2020-2023  润新知