早上一客戶說,將資料表空間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
資料檔案已成功恢複。