歸檔模式下無備份資料檔案損壞的完全恢復-2
阿新 • • 發佈:2019-02-14
資料檔案在無備份的情況下恢復
如果控制檔案,聯機重做日誌檔案都沒有損壞,而只是資料檔案損壞,並且沒有備份喲,但是歸檔日誌必須存在,則可以完全恢復。
啟動實驗
create tablespace test2
datafile 'D:\oracle\product\10.2.0\oradata\TEST\test2.dbf' size 50m;
create user muwei identified by muwei default tablespace test2;
grant dba to muwei;
conn muwei/muwei
create table muwei(id number, name varchar2(20));
begin
for i in 1..100 loop
insert into muwei values(i,'小牟');
end loop;
end;
/
commit;
現在我沒有對該資料檔案進行任何形式的備份,現在我關閉資料庫,模擬刪掉的資料檔案
alter system flush buffer_cache; --清掉buffer cache中的資料
shutdown immediate;
然後我去把test2.dbf這個資料檔案給它刪了,我手動刪哈,我直接點。
startup;
ORA-01157: 無法標識/鎖定資料檔案 8 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 8: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\TEST2.DBF'
現在演示如何恢復沒有備份的資料檔案
alter database datafile 8 offline;
alter database create datafile 'D:\oracle\product\10.2.0\oradata\TEST\test2.dbf'; --這兒特別注意哈,需要重新建立表
空間
alter database datafile 8 online;
recover datafile 8;
完成介質恢復。
alter database open;
conn muwei/muwei;
select count(*) from muwei;
COUNT(*)
---------
100
大功告成
顯然這兒沒有備份的介質恢復的過程就是將歸檔日誌或者當前重做日誌中的資料應用到資料檔案中去,切記成功恢復的關鍵是啟動了
資料庫的歸檔模式,並且自該表空間建立後,所有插入的資料被重做日誌或者歸檔日誌保護,最終通過recover指令完全恢復。。