1、備份分類:
物理備份
手工備份,RMAN
邏輯備份
2、手工備份
歸檔模式:冷備,熱備,徹底恢復,不徹底恢復
非歸檔模式:冷備,徹底恢復
冷備:關庫-拷貝控制文件-數據文件
熱備:..begin backup;-拷貝(數據文件處於可操做狀態)-end backup;
1.塊分裂:begin backup會鎖定數據文件的頭部SCN,標誌恢復的起點,由於oracle塊包含多個OS塊,拷貝過程當中可
能會使oracle塊內的SCN不一致。將塊內容鏡像到redolog,end backup重作恢復使得SCN一致同時解鎖SCN。
2.dbv file=/u01/app/oracle/oradata/ipemsdb/datafile/o1_mf_example_bv77pklo_.dbf
對數據文件進行檢查,是否存在壞塊,直接執行,不用登錄oracle
3.備份相關set命令
set echo off #用在腳本中,開關命令執行的結果和命令自己
set trimspool off #行之間的行距
set heading off #開關表頭信息
set feedback off #開關查詢後的行數統計
set verify off #開關新舊值
set time off #開關>前的時間
set pagesize 0 #不分頁
set linesize 200 #行寬
3、備份腳本
1.冷備份:
當數據庫的全部可讀寫的物理文件具備相同的系統改變號(SCN)時進行的備份,這個狀態的惟一方法是數據庫正常關閉,
因此也叫一致性備份。使用於歸檔和非歸檔模式;
優勢:快速簡單(拷貝);容易恢復到備份的時間點上;低度維護高度安全
缺點:備份時數據庫必須關閉;只能恢復到備份時間點;
冷備cold_bak.sql
set echo off trimspool off heading off feedback off verify off time off
set pagesize 0 linesize 200
define bakdir='/u01/app/backdir/cold_bak'
define bakscp='/u01/app/backdir/cold_bak/cold_cmd.sql'
spool &bakscp
select 'host cp '|| name||' &bakdir' name from v$datafile order by 1;
select 'host cp '|| name||' &bakdir' name from v$controlfile order by 1;
spool off
shutdown immediate
@ &bakscp
startup
平常手動冷備時須要備份的文件:
數據文件,控制文件,聯機日誌文件(select member from v$logfile;),參數文件,密碼文件
2.熱備hot_back.sql
set echo off trimspool off heading off feedback off verify off time off
set pagesize 0 linesize 200
define bakdir='/u01/app/backdir/hot_bak'
define bakscp='/u01/app/backdir/hot_bak/hot_cmd.sql'
set serveroutput on
spool &bakscp
prompt alter system switch logfile;;
declare
cursor cu_tablespaces is
select tablespace_name from dba_tablespaces where contents not like 'TEMP%' and status ='ONLINE';
cursor cu_datafiles(name varchar2) is
select file_name from dba_data_files where tablespace_name=name;
begin
for i in cu_tablespaces loop
dbms_output.put_line('alter tablespace '||i.tablespace_name||' begin backup ;');
for j in cu_datafiles(i.tablespace_name) loop
dbms_output.put_line('host cp '||j.file_name||' &bakdir ');
end loop;
dbms_output.put_line('alter tablespace '||i.tablespace_name||' end backup ;');
end loop;
dbms_output.put_line('alter database backup controlfile to trace;');
dbms_output.put_line('alter database backup controlfile to ''&bakdir/controlfile.ctl'';');
end;
/
spool off
@ &bakscpsql
熱備還能夠
alter database begin backup;
alter database end backup;數據庫