恢复没有备份的数据文件,关键是启动数据库归档模式,可以从重做日志或者归档日志所保护好。
建表空间和表
create tablespace bank_tbs datafile '/oracle/oradata/kgdb/bank_data02.dbf';
create table tsb (id number,name varch2(20)) tablespace bank_tbs;
向表插入数据
SQL> begin for i in 1..1000 loop
2 insert into tsb values(i,'name'||i);
3 end loop;
4 end;
5 /
PL/SQL 过程已成功完成。
SQL> commit
SQL> select count(*) from tsb;
COUNT(*)
----------
1000
模拟事故 rm -fr /oracle/oradata/kgdb/bank_data02.dbf
oracle@linux235:/oracle>rm -fr /oracle/oradata/kgdb/bank_data02.dbf
oracle@linux235:/oracle>sqlplus / as sysdba;
SQL*Plus: Release 11.2.0.3.0 Production on 星期四 8月 4 17:34:33 2016
Copyright (c) 1982, 2011, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter system flush buffer_cache; 清除buffer cache数据查询tsb
系统已更改。
SQL> select * from tsb;
select * from tsb
*
第 1 行出现错误:
ORA-01116: 打开数据库文件 6 时出错
ORA-01110: 数据文件 6: '/oracle/oradata/kgdb/bank_data02.dbf'
ORA-27041: 无法打开文件
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL> alter database datafile 6 offline; -
数据库已更改。
SQL> alter database create datafile '/oracle/oradata/kgdb/bank_data02.dbf';
数据库已更改。
SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出现错误:
ORA-01113: 文件 6 需要介质恢复
ORA-01110: 数据文件 6: '/oracle/oradata/kgdb/bank_data02.dbf'
SQL> recover datafile 6;
完成介质恢复。
SQL> alter database datafile 6 online;
数据库已更改。
SQL> select count(*) from tsb;
COUNT(*)
----------
1000
SQL> select count(*) from tsb;
COUNT(*)
----------
1000
SQL> select count(*) from tsb;
COUNT(*)
----------
1000