我需要每周六做一个0备份,没天(除周六)做一个1备份,兵器备份以及归档只保留一个月,下面是我找的一个脚本,前面备份部分能理解,后面的删除部分 不太懂,谁能帮我解释下,或者有没有能实现我需求的脚本。
run {
allocate channel oem_backup_disk1 type disk format 'F:\\BACKUP\\FULL\\\\KHT\%U' maxpiecesize 80 G;
backup incremental level 0 cumulative as COMPRESSED BACKUPSET tag '%TAG' database include current controlfile;
sql 'alter system checkpoint';
sql 'alter system switch logfile';
sql 'alter system archive log current';
backup as COMPRESSED BACKUPSET tag '%TAG' archivelog all not backed up delete all input;
release channel oem_backup_disk1;
allocate channel t2 type disk ;
crosscheck backup;
crosscheck archivelog all;
delete noprompt archivelog until time 'sysdate-7';
delete noprompt archivelog all completed before 'sysdate-7';
delete expired archivelog all;
report obsolete;
delete noprompt obsolete recovery window of 60 days;
delete noprompt expired backup;
release channel t2;
}
不需要这样,可以备份完后自动删除归档日志。
1、先设置参数,保留1个月备份及归档
rman target /
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 31 DAYS;
2、全备份脚本
run {
show all;
allocate channel c1 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backup;
delete noprompt expired backup;
sql \'alter system archive log current\';
backup incremental level 0 database format \'e:\\dbbackup\\full_%d_%T_%s_%p\' plus archivelog format \'e:\\dbbackup\\arch_%d_%T_%s_%p\' delete all input;
backup current controlfile format \'e:\\dbbackup\\ctrl_%d_%T_%s_%p\';
report obsolete;
delete noprompt obsolete;
release channel c1;
}
3、增量备份
run {
show all;
allocate channel c1 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backup;
delete noprompt expired backup;
sql \'alter system archive log current\';
backup incremental level 1 database format \'e:\\dbbackup\\incr_%d_%T_%s_%p\' plus archivelog format \'e:\\dbbackup\\arch_%d_%T_%s_%p\' delete all input;
backup current controlfile format \'e:\\dbbackup\\ctrl_%d_%T_%s_%p\';
report obsolete;
delete noprompt obsolete;
release channel c1;
}
4、把脚本放到windows计划任务,实现你的周六全备,其余时间增量备份的目的。
收起首先建议楼主去看看官方的文档,这些内容都写的非常明白。
http://docs.oracle.com/cd/E11882_01/backup.112/e10642/toc.htm
http://docs.oracle.com/cd/E11882_01/backup.112/e10643/toc.htm
首先看一下Oracle备份的概念:完全备份和增量备份
1.Full backup:与whole database backup不同;它是从数据文件备份的那一刻,所有数据文件中包含数据的块的拷贝;
1.rman拷贝了所有数据块到备份集,除了那些从来没有被使用过的块;
2.对于full image copy,整个数据文件都被复制;
3.full backup不能是增量备份策略的一部分,因为接下来的增量备份不能基于它还原;
2.Incremental Backup:上次备份之后,所有发生改变的数据块的拷贝;
1.Oracle支持两种级别的增量备份,即0级增量备份和1级增量备份;
2.0级增量备份等同于full backup,但是必须被标记为0级备份;
3.1级增量备份又分为两种类型:cumulative和differential(即累计增量备份和差异增量备份);
4.累计增量备份是备份上次0级备份之后所有改变的块;差异增量备份是备份上次0级或者1级增量备份后改变的块;
一些备份的选项:
1. CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO \'%F\':规定了控制文件备份的目录和格式;
2. CONFIGURE CONTROLFILE AUTOBACKUP OFF;若为OFF,就不备份控制文件,如果为ON,则备份控制文件,建议为ON;如果备份file 1,即SYSTEM表空间,则无论是否自动备份控制文件,都会备份;
3. CONFIGURE MAXSETSIZE TO UNLIMITED/2G;设置备份集的最大大小,备份片的最大大小用maxpiecesize指定;
4. CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT \'/tmp/backup/%U\';设置备份设备和位置;
5. CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET:配置备份时的并发度,缺省使用备份集,而不是镜像备份;
6.CONFIGURE DATAFILE/ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;配置数据文件/归档日志文件每次产生2个备份,最大为4;
7. CONFIGURE xxxxxx CLEAR:清除某一个配置到默认设置;
8. LIST BACKUPSET/COPY:查看当前备份集/镜像拷贝信息;
9. LIST BACKUPSET/COPY OF DATAFILE n/TABLESPACE tbs_name/CONTROLFILE/ARCHIVELOG/SPFILE:列出某一个数据文件/表空间/控制文件/归档日志/配置文件的备份集/镜像拷贝;
10. REPORT SCHEMA:查看当前数据库的结构;
11. DELETE BACKUPSET:删除全部的备份集;
12. DELETE BACKUPSET bs1, bs2, ...:删除指定的备份集;
收起