幾種場景的資料庫恢復

tolywang發表於2007-07-14

先簡單說明兩種使用者管理的備份方式

1.冷備份

shutdown immediate/normal/transactional

copy/cp備份所有的檔案

alter database open   


2.熱備份--必須在歸檔模式下

alter tablespace tbs_name begin backup

備份(copy/cp)tbs_name表空間對應的所有檔案

alter tablespace tbs_name end backup

或者

alter database datafile 檔案號 或 '' begin backup

備份對應的資料檔案

alter database datafile 檔案號 或 '' end backup

下面具體說明幾種場景的恢復

1)關閉資料庫的恢復

a)系統表空間壞了,會自動關閉資料庫

b)undo表空間壞了,會自動關閉資料庫

c)所有資料檔案壞了

這三種情況只能關閉資料庫恢復,同時可以考慮:是不是歸檔模式,有沒有歸檔模式的備份,否則就有資料丟失了

模擬: shutdown immediate,刪除system表空間對應的檔案

startup; --報錯,檢視狀態為mount,select status from v$instance

select * from v$backup --可以查詢哪個檔案丟失(status=active)

restore(copt/cp)丟失的檔案

--在mount狀態下執行

recover datafile 檔案號 或 '檔名'

alter database open

2)Open 狀態下資料檔案恢復,必須在歸檔模式下

a)某個普通資料檔案損壞 b)shutdown以後出現普通檔案損壞

模擬a: 建立一個表空間test,備份,alter system switch logfile

alter tablespace test offline

刪除test對應的檔案

--檢視那些檔案需要恢復

select * from v$recover_file;

--欄位ERROR,'OFFLINE NORMAL'表示不要恢復,NULL表示未知原因,

'FILE NOT FOUNT'等

select * from v$backup; //Status = Active

--不用關閉資料庫,直接將備份檔案複製到資料檔案目錄下

recover tablespace test;

alter tablespace test online;

b)先啟動,使壞了的表空間offline,再恢復

3)沒有任何備份的恢復

條件:必須是在歸檔模式起用後再建立的檔案和所有之後的歸檔都存在

模擬:已起用歸檔模式

create tablespace test datafile '.... est.dbf' size 5M;

create table t(id int, mc varchar2(10)) tablespace test;

insert into values(1,'test');

commit;

alter system switch logfile;

alter system switch logfile;

--多做幾次,確保歸檔

--破壞資料檔案,沒有備份

alter tablespace test offline;

刪除檔案 test.dbf

alter tablespace test online;

報錯

--恢復

alter database create datafile 檔案號 或 '檔名'

recover datafile 檔案號 或 '檔名'

--或recover tablespace test;

alter tablespace test online

--如果是drop了,就只能做不完全恢復了(時間點等)

4)將檔案移到另一個磁碟

只要rename (比如檔案存放的磁碟損壞時使用)

alter tablespace test offline

將備份的檔案複製到另一個地方

alter database rename file '檔名' to '新資料夾檔名'

recover datafile 檔案號 或 '檔名'

alter tablespace test online

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84777/,如需轉載,請註明出處,否則將追究法律責任。

相關文章