用戶管理的幾種場景的數據庫恢復
2024-07-21 02:33:03
供稿:網友
先簡單說明兩種用戶治理的備份方式
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 文件號 或 '<file_name>' begin backup
備份對應的數據文件
alter database datafile 文件號 或 '<file_name>' 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 open2)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