直接删除数据文件并重启数据库的紧急救援

归档模式下直接删除数据文件并重启数据库,通常情况下需要备份来恢复,但是如果从创建这个数据文件到目前为止的归档都在,那是可以一条命令快速恢复的。

重要事情说三遍:确保所有的归档日志都存在

重要事情说三遍:确保所有的归档日志都存在

重要事情说三遍:确保所有的归档日志都存在

模拟数据

  • 模拟业务表空间test

    create tablespace test datafile '/u01/app/oracle/oradata/orcl/test01.dbf' size 5M autoextend off;
  • 新建用户test并指定表空间test

    create user test identified by test default tablespace test;
    grant dba to test;
  • 模拟数据直至空间不足

    create table test as select * from dba_segments;
    insert  into test     select * from test;

    file

  • 增加数据文件

    alter tablespace test add   datafile '/u01/app/oracle/oradata/orcl/test02.dbf' size 5M autoextend on;
  • 再次复制数据

    insert  into test     select * from test;

    file

  • 检查数据文件
    file

模拟破坏

  • 删除文件test02.dbf

    cd  /u01/app/oracle/oradata/orcl
    rm -f test02.dbf
  • 再次插入数据报错
    file

  • 关库报错,强制重启到mount阶段
    file

  • 检查日志
    file

  • 检查文件目录
    file

恢复过程

  • 恢复数据文件

    alter database create datafile 7;

    file

  • 检查数据文件目录,test02.dbf恢复出来了,但是文件大小不对
    file

  • 继续恢复,追加归档

    recover datafile 7;

    file

    • 复核数据文件目录,文件大小已恢复

    file

  • 开库
    file

  • 验证
    file

参考官方文档(ID 286355.1)

Related Posts