早上一客户说,将表空间USERS中新增加的一个数据文件USERS02.DBF,USERS03.DBF脱机后,误删除了。恢复时发现这两个文件都没有有效备份。问数据能否恢复出来。
1、模拟场景:
SQL> select file_id,file_name,tablespace_name,online_status from dba_data_files;
FILE_ID FILE_NAME TABLESPACE_NAME ONLINE_STATUS
1 /Oracle/oradata/orcl/system01.dbf SYSTEM SYSTEM
2 /oracle/oradata/orcl/undotbs01.dbf UNDOTBS1 ONLINE
3 /oracle/oradata/orcl/sysaux01.dbf SYSAUX ONLINE
4 /oracle/oradata/orcl/users01.dbf USERS ONLINE
5 /oracle/oradata/orcl/users02.dbf USERS ONLINE
1.1 将数据文件users02.dbf脱机
SQL> alter database datafile 5 offline;
FILE_ID FILE_NAME TABLESPACE_NAME ONLINE_STATUS
1 /oracle/oradata/orcl/system01.dbf SYSTEM SYSTEM
2 /oracle/oradata/orcl/undotbs01.dbf UNDOTBS1 ONLINE
3 /oracle/oradata/orcl/sysaux01.dbf SYSAUX ONLINE
4 /oracle/oradata/orcl/users01.dbf USERS ONLINE
5 /oracle/oradata/orcl/users02.dbf USERS RECOVER
1.2 删除脱机的数据文件
$ rm /oracle/oradata/orcl/users02.dbf
2、数据恢复
2.1 直接恢复数据文件再online
SQL> recover datafile 5;
ORA-00283: recovery session canceled due to errors
ORA-01110: data file 5: '/oracle/oradata/orcl/users02.dbf'
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/oracle/oradata/orcl/users02.dbf'
提示找不到数据文件datafile5。
2.2 先创建数据文件,再恢复
SQL> alter database create datafile 5;
数据库已更改。
SQL> recover datafile 5;
完成介质恢复。
SQL> alter database datafile 5 online;
数据库已更改。
2.3 查看恢复的数据文件
SQL> select file_id,file_name,tablespace_name,online_status from dba_data_files;
FILE_ID FILE_NAME TABLESPACE_NAME ONLINE_STATUS
1 /oracle/oradata/orcl/system01.dbf SYSTEM SYSTEM
2 /oracle/oradata/orcl/undotbs01.dbf UNDOTBS1 ONLINE
3 /oracle/oradata/orcl/sysaux01.dbf SYSAUX ONLINE
4 /oracle/oradata/orcl/users01.dbf USERS ONLINE
5 /oracle/oradata/orcl/users02.dbf USERS ONLINE
数据文件已成功恢复。