zoukankan      html  css  js  c++  java
  • 己亥清爽恢复系列之数据文件1篇:SYSTEM物理损坏或丢失(关键表空间)

    己亥清爽系列说明:清爽系列是作为恢复系列的基础篇,基于FS(File System)文件系统的手工还原恢复,也叫基于用户管理的还原恢复。来自于博客园AskScuti

    实验说明:在有完全备份基础下,物理删除关键系统数据文件 system01.dbf ,模拟介质损坏或丢失,并进行手工还原恢复操作。

    基于版本:Oracle 11gR2 11.2.0.4 AskScuti

    概念说明:请严格区分什么叫还原(Restore)什么叫恢复(Recover)。

    还原(Restore):如果是基于用户管理(手工)的还原恢复,需要用户主动在系统层面进行拷贝粘贴,这个操作过程称之为还原;如果是基于恢复管理器(RMAN)的恢复,则通过Restore命令进行还原(自动进行),后者不在基础篇讨论。

    恢复(Recover):在完成还原动作之后,数据回到了还原点,但从这个还原点到宕机时间点之间的数据,就要利用归档日志和在线日志进行前滚,直至应用到宕机前最后一次commit提交的状态(完全恢复),或应用到指定的某个时间点(不完全恢复)。

    目录

    1. 备份

      1.1 确定当前数据库核心文件位置

      1.2 干净一致关闭数据库

      1.3 OS拷贝核心文件

      1.4 开启数据库

    2. 实验

      2.1 删除 system01.dbf

      2.2 重启数据库

      2.3 还原数据文件

      2.4 恢复数据文件

      2.5 打开数据库

    1. 备份

    1.1 确定当前数据库核心文件位置(实验环境,生产库还需留意口令密码文件、参数文件、归档日志)

    SQL> select name from v$datafile;
    
    NAME
    ------------------------------------------
    /u01/app/oracle/oradata/PROD1/system01.dbf
    /u01/app/oracle/oradata/PROD1/sysaux01.dbf
    /u01/app/oracle/oradata/PROD1/undotbs01.dbf
    /u01/app/oracle/oradata/PROD1/users01.dbf
    /u01/app/oracle/oradata/PROD1/example01.dbf
    
    SQL> select name from v$controlfile;
    
    NAME
    -------------------------------------------
    /u01/app/oracle/oradata/PROD1/control01.ctl
    /u01/app/oracle/fast_recovery_area/PROD1/control02.ctl
    
    SQL> select member from v$logfile;
    
    MEMBER
    ----------------------------------------
    /u01/app/oracle/oradata/PROD1/redo03.log
    /u01/app/oracle/oradata/PROD1/redo02.log
    /u01/app/oracle/oradata/PROD1/redo01.log

    1.2 干净一致关闭数据库

    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.

    1.3 OS拷贝核心文件

    SQL> !mkdir /u01/app/oracle/backup
    SQL> !cp /u01/app/oracle/oradata/PROD1/*.dbf /u01/app/oracle/backup/
    SQL> !cp /u01/app/oracle/oradata/PROD1/*.ctl /u01/app/oracle/backup/
    SQL> !cp /u01/app/oracle/fast_recovery_area/PROD1/control02.ctl /u01/app/oracle/backup/
    SQL> !cp /u01/app/oracle/oradata/PROD1/*.log /u01/app/oracle/backup/

    1.4 开启数据库

    SQL> startup
    ORACLE instance started.
    
    Total System Global Area  417546240 bytes
    Fixed Size               2228944 bytes
    Variable Size            293604656 bytes
    Database Buffers         117440512 bytes
    Redo Buffers              4272128 bytes
    Database mounted.
    Database opened.

    2. 实验

    2.1 删除 system01.dbf

    SQL> !rm -rf /u01/app/oracle/oradata/PROD1/system01.dbf

    2.2 重启数据库

    SQL> startup force;
    ORACLE instance started.
    
    Total System Global Area  417546240 bytes
    Fixed Size               2228944 bytes
    Variable Size            293604656 bytes
    Database Buffers         117440512 bytes
    Redo Buffers              4272128 bytes
    Database mounted.
    ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
    ORA-01110: data file 1: '/u01/app/oracle/oradata/PROD1/system01.dbf'

    2.3 还原数据文件

    2.3.1 查询当前数据库状态

    SQL> select status from v$instance;
    
    STATUS
    -------
    MOUNTED

    2.3.2 查询动态性能视图 v$recover_file 确认哪些文件需要恢复

    SQL> select * from v$recover_file;
    
         FILE# ONLINE  ONLINE_STATUS ERROR          CHANGE#   
    ---------- ------- ------------- -------------- -------
         1    ONLINE  ONLINE       FILE NOT FOUND 0

    2.3.3 ERROR列显示根本就没有1号文件,下面进行还原

    SQL> !cp /u01/app/oracle/backup/system01.dbf /u01/app/oracle/oradata/PROD1/

    2.3.4 再次查询动态性能视图 v$recover_file 确认哪些文件需要恢复

    SQL> select * from v$recover_file;
    
         FILE# ONLINE ONLINE_STATUS ERROR CHANGE# TIME
    ---------- ------ ------------- ----- ------- -------------------
         1    ONLINE ONLINE              1288399 2019-05-16 16:41:47

    2.4 恢复数据文件

    SQL> recover datafile 1;
    Media recovery complete.

    2.5 打开数据库

    SQL> alter database open;
    
    Database altered. 
  • 相关阅读:
    使用一行Python代码从图像读取文本
    FastAI 简介
    OpenCV-Python 轮廓:更多属性 | 二十四
    Numpy和OpenCV中的图像几何变换
    从云计算到边缘计算
    OpenCV-Python 轮廓属性 | 二十三
    c# GetType()和typeof()的区别
    C# 子类父类方法同名,三种处理方式
    C# string 与 String的区别
    decimal
  • 原文地址:https://www.cnblogs.com/askscuti/p/10876922.html
Copyright © 2011-2022 走看看