今天在公司的数据库上看到这样的一个RMAN备份脚本:
run {
allocate channel c1 type disk maxpiecesize = 2G;
allocate channel c2 type disk maxpiecesize = 2G;
backup incremental level 1 database format '/backup/osedb_osedb01/data/%d_DF_%T_%s_%p.bak'
plus archivelog format '/backup/osedb_osedb01/arch/%d_AF_%T_%s_%p.log' all delete all input;
release channel c1;
release channel c2;
}
注意上面红色字体部分。我一看,感觉好像有些问题,于是在测试机上做了一下试验,发现果然是有错误的。下面进行详细说明。
1. 首先,上面的脚本是错误的,应该将上面红色字体的第一个"all"去掉即可。
2. delete input和delete all input的区别
(1)如果归档日志目录只是一个时,即归档时只有一份归档日志时,上面的两种写法是没有区别的;
(2)如果归档日志目录有多个时,即归档时保存有多份归档日志时,那么:
delete input当备份了归档日志后,会删除第一个归档目录(如:log_archive_dest_1)下的所有归档日志;