归档模式下直接删除数据文件并重启数据库,通常情况下需要备份来恢复,但是如果从创建这个数据文件到目前为止的归档都在,那是可以一条命令快速恢复的。
重要事情说三遍:确保所有的归档日志都存在
重要事情说三遍:确保所有的归档日志都存在
重要事情说三遍:确保所有的归档日志都存在
模拟数据
-
模拟业务表空间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;
-
增加数据文件
alter tablespace test add datafile '/u01/app/oracle/oradata/orcl/test02.dbf' size 5M autoextend on;
-
再次复制数据
insert into test select * from test;
-
检查数据文件
模拟破坏
-
删除文件test02.dbf
cd /u01/app/oracle/oradata/orcl rm -f test02.dbf
-
再次插入数据报错
-
关库报错,强制重启到mount阶段
-
检查日志
-
检查文件目录
恢复过程
-
恢复数据文件
alter database create datafile 7;
-
检查数据文件目录,test02.dbf恢复出来了,但是文件大小不对
-
继续恢复,追加归档
recover datafile 7;
- 复核数据文件目录,文件大小已恢复
-
开库
-
验证
参考官方文档(ID 286355.1)