模擬在資料檔案在無備份情況下如何進行恢復
建立測試的tablespace
sql> create tablespace test datafile '/data/cebpm/datafile/test01.dbf' size 10m;
tablespace created.
建立乙個表並插入資料,資料儲存在新建的表空間test中
sql> begin for i in 1..100 loop
2 insert into test values(i,'name'||i);
3 end loop;
4 end;
5 /
pl/sql procedure successfully completed.
sql> commit;
commit complete.
sql> select count(*) from test;
count(*)
----------
100我們沒有對該資料檔案進行任何形式的備份,下面刪除該資料檔案,模擬資料檔案損壞
cebpm:/data/cebpm/datafile@cebpm>rm -rf /data/cebpm/datafile/test01.dbf
下面,我們清除buffer cache 中的資料,然後查詢test中的資料,看如何報錯:
sql> alter system flush buffer_cache;
system altered.
sql> select * from test;
select * from test
*error at line 1:
ora-01116: error in opening database file 5
ora-01110: data file 5: '/data/cebpm/datafile/test01.dbf'
ora-27041: unable to open file
linux-x86_64 error: 2: no such file or directory
additional information: 3
提示資料檔案5無法開啟,linux沒有這個檔案,下面我們演示如何恢復沒有備份的資料檔案,首先將資料檔案5 offline.
sql> alter database datafile 5 offline;
database altered.
其次建立乙個新的資料檔案,目錄和檔名都相同
sql> alter database create datafile '/data/cebpm/datafile/test01.dbf';
database altered.
下面,我們嘗試將資料檔案online,檢視提示資訊:
sql> alter database datafile 5 online;
alter database datafile 5 online
*error at line 1:
ora-01113: file 5 needs media recovery
ora-01110: data file 5: '/data/cebpm/datafile/test01.dbf
顯然,需要介質恢復,這裡恢復的過程就是將歸檔日誌或者當前重做日誌中的資料應用到資料檔案中去,下面恢復資料檔案並將資料檔案online.
sql> recover datafile 5;
media recovery complete.
sql> alter database datafile 5 online;
database altered.
sql> select count(*) from test;
count(*)
----------
100輸出說明,我們成功恢復了沒有備份的資料檔案,切記成功恢復的關鍵是啟動了資料庫的歸模式,並且自該表空間建立後,所有插入的資料被重做日誌或者歸檔日誌保護,最終通過recovery指令得以完全恢復。
關於該情況下的另一種恢復方式如下:
無備份資料檔案的恢復
無備份資料檔案的恢復 流程 1.新建表空間及表,向表裡插入一條資料 2.關閉資料庫 3.在作業系統刪除新建表空間的資料檔案 4.重新啟動資料庫,報錯 5.手動將資料檔案下線 6.開啟資料庫,先讓資料正常對外工作 7.recover datafile 前提是從資料檔案誕生起日誌檔案都存在 8.手動將資...
無備份資料檔案的恢復
無備份資料檔案的恢復 流程 1.新建表空間及表,向表裡插入一條資料 2.關閉資料庫 3.在作業系統刪除新建表空間的資料檔案 4.重新啟動資料庫,報錯 5.手動將資料檔案下線 6.開啟資料庫,先讓資料正常對外工作 7.recover datafile 前提是從資料檔案誕生起日誌檔案都存在 8.手動將資...
備份恢復 資料檔案
如果不能離線,只能到mount階段恢復 能離線的資料檔案 使用者表空間,sysaux表空間,臨時 表空間 中的資料檔案 不能離線的資料檔案 system表空間,nudo表空間中的資料檔案 可離線的資料檔案損壞 1 如果現在資料庫已經open了,讓資料檔案離線 可以用資料檔案編號,也可以指定資料檔案路...