最近拜读Todd Bao《oracle 11g 数据库恢复技术》整理一下:
针对device type disk
RMAN:
主要组成部分:
1)目标数据库
2)RMAN客户端(执行备份命令)
3)通道(channel)
4)RMAN备份资料库
5)备份地点
目标数据库:需要备份的数据库
RMAN客户端:执行命令端
channel(通道):
是指由服务器进程发起并控制目标数据库的文件与物理设备之间的字节流。
是RMAN体系中执行备份、还原操作时用来处理I/O流的物理结构和逻辑结构的结合体,确定了I/O流的源头,目的及操作者,是除了rman主会话,监控回话以外的另一个回话,即 如果使用一个通道备份数据库那么在目标数据库上将占用三个回话,三个服务器进程,(在rman中一个回话对应一个服务器进程),
RMAN料库:如果没有使用catalog,目标数据库的控制文件本身作为rman资料库,保留时间由参数control_file_record_keep_time 设置,默认为7天,最大为365天,记录备份信息,则意味着只有目标数据库mount后才能进行备份恢复,及查看备份信息,若使用catalog则可以在目标数据库nomunt状态既可以进行。
在控制文件内由records_total记录槽标记备份信息。
使用catalog后,信息记录在catalog数据库相关表中,由目标端的控制文件快照与catalog进行信息同步,rman中show snapshot controlfile name 查看控制文件快照。
使用catalog寻回备份
catalog backuppiece ‘备份文件(数据文件,控制文件)’;
catalog archivelog ‘日志备份’;
catalog db_recovery_file_dest;
原理:
客户端登陆数据库,会在目标数据库建立两个链接(两个服务器进程),一个为RMAN主会话,负责与目标数据库通信传达备份指令,另一个为监控RMAN的进程,负责监控通道。
rman target /
SELECT S.SID,S.SERIAL#,P.SPID,S.MODULE,S.ACTION FROM V$SESSION S,V$PROCESS P WHERE S.MODULE LIKE ‘%rman%’ and S.PADDR=P.ADDR;后发现有两个rman回话,action为空的为监控回话
主会话发送命令后,由channel完成备份恢复任务。
Channel备份分三个阶段完成备份任务:
1. 读
2. 复制
3. 写
备份操作:
读阶段:通道将输入文件(备份文件)的数据块从磁盘读入输入缓冲;
复制阶段:通道将输入缓冲中的数据读入输出缓冲,执行必要操作,如:校验,压缩,加密……
写:将输出缓冲数据写入disk或sbt设备
还原时执行相反操作
对数据文件及DISK设备的读写,当_backup_disk_io_slaves(隐藏参数)=0时,输入缓冲,输出缓冲在PGA,>0时,在SGA中。
当系统不支持异步I/O时,需要模拟异步I/O,将此参数设置大于0,在SGA中进行.
在不修改此隐藏参数前提下可将dbwr_io_slaves设置>0,且disk_asynch_io值为false也可,模拟异步I/O。设置了slaves进程,通道就利用SGA与slaves进程交换字节流,此时large_pool_size需设置>0,否则使用shard_pool
备份集优化:
所谓优化无所谓节省空间,加快备份速度,减少恢复时间
节省空间:备份集采用压缩技术三种方式:未使用快压缩,空块压缩,二进制压缩。
未使用快压缩:在通道读阶段,RMAN读取数据文件头部区分配位图,区分哪些块使用,哪些块未使用,直接读取使用块进行备份
符合条件:数据库没有确保的还原点,数据文件extent是本地(local)管理,备份集的形式是全备或等级0 的增量备份,通道类型是DISK或是OSB(oracleq安全备份软件)实现的SBT。
空块压缩:
发生在复制阶段,读入输出缓冲是会检查该块是否为从来没有修改或是以保存的块,是则跳过,空块则不进入备份集
二进制压缩:
三个等级:
LOW,BASIC/MEDIUM,HIGH
CONFIGURE COMPRESSION ALGORITHM ‘LOW’;
CONFIGURE COMPRESSION ALGORITHM ‘BASIC’;
CONFIGURE COMPRESSION ALGORITHM ‘HIGH’;
加快备份时间:
针对比较大的数据文件,通过“section size”利用多通道进行并行备份
如果数据文件5 有800m,可如下设置
Run {
Allocate channel c1 device type disk;
Allocate channel c2 device type disk;
Allocate channel c3 device type disk;
Allocate channel c4 device type disk;
Backup section size 200m datafile 5;
}
使用增量备份加快备份时间,设置数据块变化跟踪文件,加快备份
alter database enable block change tracking using file ‘d:\backup\bct.trc’ reuse;
取消:
alter database disable block change tracing;
select * from v$block_change_tracking;
验证使用增量备份的效率,查看v$backup_datafile视图
select file#,sum(blocks_read)/sum(datafile_blocks) ratio from v$backup_datafile where incremental_level >0 group by file#;比值越小越适合增量备份,若接近1,不如全备。
RMAN 监控:
查看v$session_longops
Select case when opname like ‘%aggregate%’ then ‘Total’ else opname end opname,
Truncate(sofar*100/totalwork,2) ||’%’ process,
Units from v$session_longops where opname like ‘RMAN%’ and totalwork>sofar;
基本命令:
--备份整个数据库
backup database format 'd:\backup \whole_%d_%U';
--备份整个数据库并压缩备份集
backup as compressed backupset full database format 'd:\backup\whole_%d_%U';
run{
allocate channel ch1 type disk maxpiecesize=2g --手动分配一个通道,指定 片的大小为2g
backup as compressed backupset format ‘d:\backup\whole_%d_%U' filesperset=3 database; --压缩备份集--指定备份集中允许容纳的文件数为3个
release channel ch1; --释放通道
}
查看备份:
List backupset;
备份数据文件:
backup datafile 4,5,6 format 'd:\backup\df_%d_%U';
备份表空间:
backup tablespace users format 'd:\backup\tbs_users_%d_%U';
备份控制文件:
backup current controlfile;
sql:alter database backup controlfile to trace as ‘d:\backup\controlbak.sql’;
备份spfile
backup spfile format 'd:\backup\sp_%d_%U';
注:在备份system01.dbf或system表空间时将会自动备份控制文件和参数文件,即使自动备份控制文件参数为off
备份归档文件:
backup format 'd:\backup\lf_%d_%U' archivelog all delete input; --delete input 删除所有已经备份过的归档日志
备份一定时间段内的archivelog
backup archivelog from time "sysdate-15" until time "sysdate-7";
backup database plus archivelog all delete input;
使用plus archivelog时备份数据库完成的动作
1.首先执行alter system archive log current 命令(对当前日志归档)
2.执行backup archivelog all 命令(对所有归档日志进行备份)
3.执行backup database命令中指定的数据文件、表空间等
4.再次执行alter system archive log current
5.备份在备份操作期间产生的新的归档日志
分配通道加标记
run {
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
allocate channel ch3 device type disk;
backup incremental level=0
format 'd:\backup\df_%d_%U'
(datafile 1 channel ch1 tag='sys')
(datafile 3 channel ch2 tag='aux')
(datafile 2,4,5,6 channel ch3 tag='other');
sql 'alter system archive log current';
release channel ch1;
release channel ch2;
release channel ch3;
}
自动并发:使用configure配置并发度即可
configure device type disk parallelism 3 backup type to backupset;
注:并发度取决于磁盘数和条带情况;
增量备份:
--下面启用0级增量备份
run{
allocate channel ch1 type disk;
backup incremental level 0 database
format 'd:\backup\dbi0_%d_%U'
tag=db_inc_0;
release channel ch1;
}
--下面启用1级差异增量备份
run{
allocate channel ch1 type disk;
backup incremental level 1 database
format 'd:\backup\dbi1_%d_%U'
tag=db_inc_1;
release channel ch1;
}
--下面启用1级累计增量备份
run{
allocate channel ch1 type disk;
backup incremental level 1 cumulative database
format 'd:\backup\dbc_%d_%U'
tag=db_inc_c_1;
release channel ch1;
}
检测备份文件:
obsolete:是指根据保留策略来确定该备份是否在恢复的时候需要,如不在需要或有更新的备份来替代,则该备份集被置为obsolete,即废弃的备份集或镜像副本。
expired: 是指执行crosscheck时,根据存储仓库中记录的备份信息来定位备份集或镜像副本,而找不到对应的备份集或镜像副本,则这些备份集或镜像副本被置为expired。
available: 对象处于可用状态。当一个备份集可用,则该备份集内的所有备份片同样可用
unavailabe: 对象处于不可用状态。当一个备份集不可用,则该备份集内的所有备份片同样不可用
crosscheck命令使用:
Crosscheck backupset; --校验备份集
crosscheck copy; --校验镜像副本
crosscheck backup of controlfile; --校验备份的控制文件
crosscheck backup of archivelog all; --校验所有备份的归档日志
crosscheck backup of datafile 1,2; --校验datafile 1,2
crosscheck backup of tablespace sysaux,system; --校验表空间sysaux,system
crosscheck backup completed between '2013-11-10' and '2013-11-11'; --校验时间段,时间段格式由NLS_DATE_FORMAT设置
crosscheck backupset 1067,1068;
List 命令使用:
list backup;
list copy;
list backup of database;
list backup of tablespace uers;
list backup of archivelog all;
list backup verbose;
list backup summary;
list backup of datafile { n | <dir>}
list copy of archive from time = 'sysdate - 7';
list backup of archivelog from sequence 1000 until sequence 1020;
list backupset tag= db_inc_c_1;
list backup; --列出备份信息
report命令使用:
report schema;
report need backup;
report need backup days 3;
report need backup redundancy 3;
report need backup recovery window of 3 days;
report obsolete;
report unrecoverable;
report schema at time 'sysdate-7';
report need backup days 2 tablespace system;
report need backup;
delete命令使用:
delete backupset;
delete backupset n;
delete obsolete ;
delete obsolete redundancy 2;
delete noprompt copy;
delete noprompt backupset tag TAG20101016T143521;
delete obsolete recovery window of 7 days;
delete expired backupset;
delete expired copy;
delete expired archivelog all;
validate是较crosscheck更高一级的验证操作.crosscheck仅仅是检查备份集的头部信息,校验文件的存在性,validate验证数据的有效性
BACKUP VALIDATE CHECK LOGICAL DATABASE; --check logical测试数据和索引块,将验证得到的逻辑错误填充到V$DATABASE_BLOCK_CORRUPTION
BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
validate backupset 1138,1139,1168,1181 check logical;
检测相关视图:
v$backup_files
v$backup_set
v$backup_piece
v$backup_redolog
v$backup_spfile
v$backup_device
v$rman_configuration
v$archived_log
v$backup_corruption
v$copy_corruption
v$database_block_corruption
v$backup_datafile