ORACLE數據庫備份與恢復分爲:
1、物理備份與恢復(介質恢復:磁盤或操作系統文件損壞的恢復)
(1)冷備份(脫機備份)與冷恢復(脫機恢復)
(2)熱備份(聯機備份)與熱恢復(聯機恢復)
2、邏輯備份與恢復
熱備份(聯機備份)與熱恢復(聯機恢復)
一、熱備份(聯機備份)
1、概念
熱備份的前提是數據庫必須運行在歸檔模式下,而且必須備份的只有數據文件,控制文件、重做日誌文件、歸檔日誌文件都是靠物理冗餘來保護的
2、操作步驟
(1)select name from v$datafile;--查看所有數據文件位置
(2)select * from v$backup;--查看所有文件備份狀態
(3)alter tablespace my begin backup;--將表空間置爲備份狀態(此處my爲表空間名稱)
(4)host copy E:\disk3\MY01.DBF E:\disk4\TBSbackup--複製數據文件到備份位置
(5)alter tablespace my end backup;--將表空間置爲正常非備份狀態
(6)select * from v$backup;--重新查看所有文件備份狀態
(7)查看備份文件是否生成
(8)select group#,sequence#,status,archived from v$log;--查看重做日誌切換的相關信息
(9)alter system archive log current;--將當前重做日誌文件的信息寫到歸檔日誌文件中
(10)select group#,sequence#,status,archived from v$log;--再次查看重做日誌切換的相關信息
3、聯機備份自動自動化
(1)編寫一個.sql文件
conn sys/123456 as sysdba
alter tablespace my begin backup;
host copy E:\disk3\MY01.DBF E:\disk4\TBSbackup
host copy E:\disk3\MY02.DBF E:\disk4\TBSbackup
alter tablespace my end backup;
exit
(2)編寫一個.bat文件
sqlplus /nolog @E:\disk4\auto_backup.sql
nolog是爲了執行的時候不顯示sql文件的內容,避免密碼泄露之類的問題
@後面加.sql文件的路徑
需要備份的時候點擊一下bat文件執行即可
二、熱恢復(聯機恢復)
1、最初處於打開狀態下進行的開啓數據庫恢復
(1)適用場景
a、所需恢復的數據文件不屬於系統(system)表空間或還原(redo)/回滾(rollback)段表空間
b、磁介質的損壞、數據文件的崩潰或丟失沒有造成數據庫的關閉
c、數據庫是已7*24運行的方式操作的
(2)操作步驟
(1)查看數據文件的位置、狀態等相關信息
select * from dba_data_files;
或者
select * from v$datafile;
(2)查看錶空間狀態
select tablespace_name,status from dba_tablespaces;
(3)將表空間或數據文件置爲脫機狀態
若表空間沒有數據文件損壞或丟失:
alter tablespace my offline;
或者
alter database datafile MY01.DBF offline;
若表空間中有數據文件損壞或丟失:
alter tablespace my offline immediate;
或者
alter system checkpoint;
alter tablespace my offline temporary;
(4)複製備份數據文件到數據庫原位置
host copy E:\disk4\TBSbackup\MY01.DBF E:\disk3\MY01.DBF
若文件不是恢復到原位置,則:
ALTER database rename file '舊文件名' to '新文件名';
例:ALTER database rename file 'E:\disk3\MY01.DBF' to 'E:\disk5\MY01.DBF';
(5)介質恢復,將重做日誌文件和歸檔日誌文件的已提交的數據寫入數據文件
recover tablespace my
或者
recover datafile MY01.DBF
(6)將表空間或數據文件重置爲聯機狀態
alter tablespace online;
或者
alter database datafile MY01.DBF online;
(7)查看數據文件是否處理聯機狀態
select * from dba_data_files;
或者
select * from v$datafile;
(8)查看錶空間狀態是否處理聯機狀態
select tablespace_name,status from dba_tablespaces;
(9)查詢表數據,看是否恢復
2、最初處於關閉狀態下進行的開啓數據庫恢復
(1)適用場景
a、所需恢復的數據文件不屬於系統(system)表空間或還原(redo)/回滾(rollback)段表空間
b、磁介質的損壞、數據文件的崩潰或丟失已經造成數據庫的關閉
c、數據庫是已7*24運行的方式操作的
(2)操作步驟
(1)將數據庫置爲加載狀態
startup mount
(2)查看數據文件狀態等信息
select * from v$datafile;
(select * from dba_data_file只能在數據庫打開時使用)
(3)將數據文件置爲脫機狀態
alter database datafile MY01.DBF offline;
(alter tablespace my offline;只能在數據庫打開時使用)
(5)打開數據庫
alter database open;
(5)複製備份的數據文件到數據庫原位置
host copy E:\disk4\TBSbackup\MY01.DBF E:\disk3\
若不是回覆到原位置,則:
ALTER database rename file '舊文件名' to '新文件名';
(6)介質恢復,將重做日誌文件和歸檔日誌文件中提交的數據寫入數據文件
recover tablespace my
或者
recover datafile MY01.DBF
(7)將表空間或數據文件置爲聯機狀態
alter tablespace online;
或者
alter database datafile MY01.DBF online;
(8)查看數據文件是否爲聯機狀態
select * from dba_data_feiles;
(9)查看錶空間是否爲聯機狀態
select * from dba_tablespaces;
(10)查詢表數據看是否恢復
3、恢復沒有備份的數據文件
(1)適用場景
a、所需恢復的數據文件不屬於系統(system)表空間或還原(redo)/回滾(rollback)段表空間
b、數據文件損壞或丟失,但是該數據文件從來沒有備份過
c、從這個數據文件創建以來的所有歸檔日誌文件都完好無損
(2)操作步驟
(1)若數據庫是關閉狀態,需要先將數據庫啓動,若數據是打開狀態,省略第(1)步
將數據庫已加載方式打開
startup mount
查看數據文件狀態
select * from v$datafile;
將數據文件置爲脫機狀態
alter database datafile MY01.DBF offline;
打開數據庫
alter database open;
(2)查看數據文件和表空間狀態
select * from dba_data_files;
select tablespace_name,status from dba_tablespaces;
(3)將表空間或數據文件置爲脫機狀態,若已爲脫機狀態可省略
若表空間沒有數據文件損壞或丟失:
alter tablespace my offline;
或者
alter database datafile MY01.DBF offline;
若表空間中有數據文件損壞或丟失:
alter tablespace my offline immediate;
或者
alter system checkpoint;
alter tablespace my offline temporary;
(4)查看數據文件的恢復狀態
select * from v$recover_file;
(5)重建數據文件
重建與原數據文件名相同的數據文件
alter database create datafile '原文件名';
例:alter database create datafile 'E:\disk3\MY01.DBF';
重建與原數據文件名不同的數據文件
alter database create datafile '原文件名' as '新文件名';
例alter database create datafile 'E:\disk3\MY01.DBF' as 'E:\disk4\MY02.DBF'
(6)將所有提交的數據從重做日誌文件和歸檔日誌文件重新寫入已經修復的數據文件
recover tablespace my
或者
recover datafile MY01.DBF
(7)將表空間或者數據文件置爲聯機狀態
alter tablespace my online;
或者
alter database datafile MY01.DBF online;
(8)查看數據文件和表空間是否爲聯機狀態
select * from dba_tablespaces;
select * from dba_data_files;
(9)查詢表數據是否恢復
4、關閉狀態下的數據庫恢復
(1)適用場景
a、所需恢復的數據文件屬於系統(system)表空間或還原(redo)/回滾(rollback)段表空間
b、整個數據庫或大多數數據文件都需要恢復
c、數據庫不是以7*24的運行方式操作,工作期間可關閉的
(2)操作步驟
(1)若數據庫處於打開狀態,先關閉數據庫,再以加載方式啓動數據庫
shutdown abort
startup mount
(2)將備份的數據文件複製到數據庫原位置
host copy E:\disk4\TBSbackup\MY01.DBF E:\disk3\
若不是恢復到元爲止,還需修改數據文件名
ALTER database rename file '舊文件名' to '新文件名';
(3)將所有提交的數據從歸檔文件和重做日誌文件重新寫入已經修復的數據文件
recover database
(4)打開數據庫
alter database open;
(5)查看數據文件和表空間是否爲聯機狀態,確認是否恢復到正確位置
select * from dba_data_files;
select tablespace_name,status from dba_tablespaces;