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;数据库