RMAN> backup database format'/u01/app/oracle/rmanbak/whole_%d_%U';--备份整个数据库
RMAN> backup as compressed backupset --备份整个数据库并压缩备份集
2> database format'/u01/app/oracle/rmanbak/whole_%d_%U';
RMAN> run{
2> allocate channel ch1 type disk--手动分配一个通道
3> maxpiecesize=2g;--指定备份片的大小为2g
4> backupas compressed backupset--压缩备份集
5> format'/u01/app/oracle/rmanbak/whole_%d_%U'filesperset=3--指定备份集中允许容纳的文件数为个
6>database;
7> release channel ch1;}--释放通道
RMAN> configure device type disk parallelism 3;--将并行度改为
备份归档日志方式:
单独备份归档日志:backup archivelog all
在执行备库时一起备份归档日志:backup database plus archivelog;
这两种方式有什么区别呢?
运行backup archivelog all 命令时执行的步骤:
1.alter system archive log current; 归档当前日志
2.backup archivelog all ; 备份所有归档日志
而运行backup database plus archivelog,的运行步骤是;
1.alter system archive log current; 归档当前日志
2.backup archivelog all; 备份所有归档日志
3.backup database; 备份数据库
4.alter system archive log current; 归档当前日志
5.backup archivelog recently generated ; 备份刚生成的归档日志
等罩疽话阍诒阜莨榈等罩就奔由弦桓霾问篸elete all input
例如:backup database plus archivelog delete all input; 执行此命令是会将所有的归档日志进行备份,并且在备份的同时删除已备份的归档日志。
所以如果在RMAN备份脚本中有plus archivelog 参数 就无需在备份归档日志之前执行: sql 'alter system archive log current';
Backup database plus archivelog
会备份归档日志
Backup database plus archivelog delete input;
会备份归档日志并且会在备份结束后删除默认目录下的归档日志、datafile copy还有backup set。适用于单个归档dest路径如FRA。
Backup database plus archivelog delete all input;
会备份归档日志并且会在备份结束后删除所有目录下的归档日志、datafile copy还有backup set。适用于复数归档dest路径。
RMAN 提供了 DELETE ALL INPUT 参数,加在 BACKUP 命令后,则会在完成备份后自动删除归档目录中已备份的归档日志
backup archivelog all DELETE ALL INPUT
backup archivelog all delete input 删除归档目录下的所有归档日志,不包含备份目录
backup archivelog all delete all input 删除归档目录下所有归档日志,包含备份的目录
backup database plus archivelog delete input; 查看日志可以发现oracle删除的归档日志仅仅是其备份过的
backup database plus archivelog delete all input ;查看日志发现oracle删除的归档日志 发现删除了两个目录下的所有日志
如果指定delete input ,则rman将仅删除已备份的归档日志,例如对于有两个归档目录 /arc_dest1 和 /arc_dest2 如果把/arc_dest1做为backup的源,
delete input将删除 /arc_dest1 中的内容,保留dest2中的归档日志,通过实验可以看出,就算有两个归档位置,rman备份的时候貌似是以日志文件为源,备份过的日志删除。
如果指定delete all input RMAN对于所有归档目录中的日志序列号只备份一次,同时rman会删除dest1 和dest2 中所有归档日志。
结论:对于仅有一个归档目录 delete input 和 delet all input 没啥区别。
当你使用delete all input参数之后,就会删除备份的归档日志。
备份的归档你要以循环的眼光看,比如昨天晚上备份了归档并删除,那么今天将要备份的归档就是昨天备份之后到今天备份之间的所有归档。
如果你的库一个月没有备份,那么备份的归档则是1个月的归档,也就是你备份的时候存在的归档。
在 RAC环境中
delete input 表示只删除target数据库的节点输入的归档文件。
delete all input 标识删除所有节点输入的归档文件。
all 关键字表示 RAC的所有节点。
第一种情况,配置了归档删除策略
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
在这种情况下,未被applied的归档会被保留,RMAN日志中有明显的提示
backup format "/tmp/AL_%d_%s_%p_%t" archivelog all delete input;
--未被applied的归档日志有如下提示:
RMAN-08120: WARNING: archived log not deleted, not yet applied by standby
第二种情况,未配置归档删除策略
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
backup format "/tmp/AL_%d_%s_%p_%t" archivelog all delete input;
--可以看到如下提示,看来未传输到备库的归档日志在正常的delete input下是不会被删除的,效果与配置了归档删除策略是一样的。
RMAN-08137: WARNING: archived log nost deleted, needed for standby or upstream capture process
结论:没有配置归档删除策略的情况下,未传输到备库的归档日志也是不会被删除的,
rman target
crosscheck archivelog all;
run {
allocate channel c1 type disk ;
allocate channel c2 type disk ;
allocate channel c3 type disk ;
allocate channel c4 type disk ;
backup as compressed backupset database format '/backup/backup20190730/%d_%I_%s_%p.bak';
backup as compressed backupset archivelog all format '/backup/backup20190730/%d_%I_%s_%p.arc';
backup current controlfile for standby format '/backup/backup20190730/%d_%I_%s_%p.ctl';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
备份脚本内容
#!/bin/bash
#ScriptName:backup_all.sh
#Usage: backup all files in oracle user environment.
#ex: nohup /bin/bash backup_all.sh > backup.log &
#Author: Alfred Zhao
#Creation: 2015-09-11
#Version: 1.0.0
#Define variable <You may need to change the value of basedir.>
basedir=/u01/orabak
date=`date +%Y%m%d`
#Create pfile
sqlplus / as sysdba <<EOF
create pfile='$basedir/pfile$date.ora' from spfile;
EOF
#RMAN BACKUP
rman target / log=$basedir/backup_all_$date.log <<EOF
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup database filesperset 4 format '$basedir/full_%d_%T_%s_%p';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup archivelog all format '$basedir/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '$basedir/ctl_%d_%T_%s_%p';
release channel c1;
release channel c2;
}
EOF
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




