备份类型:映像副本。
场景:我想要 1 个完整数据库 + 6 个增量备份,并在存储上保留最近 7 天的备份。
这是我的脚本:
RUN {
allocate channel c1 device type disk format '/path/%U';
allocate channel c2 device type disk format '/path/%U';
allocate channel c3 device type disk format '/path/%U';
allocate channel c4 device type disk format '/path/%U';
allocate channel c5 device type disk format '/path/%U';
allocate channel c6 device type disk format '/path/%U';
allocate channel c7 device type disk format '/path/%U';
allocate channel c8 device type disk format '/path/%U';
CROSSCHECK ARCHIVELOG ALL;
CROSSCHECK BACKUP;
CROSSCHECK BACKUPSET;
CROSSCHECK COPY;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT EXPIRED BACKUPSET;
DELETE NOPROMPT EXPIRED COPY;
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'my_tag_01' DATABASE;
RECOVER COPY OF DATABASE WITH TAG 'my_tag_01';
DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-3';
BACKUP SPFILE FORMAT '/path/spfile_%T_%U';
BACKUP CURRENT CONTROLFILE FORMAT '/path/cfile_%T_%U';
}
exit
如何根据我的场景设计我的脚本?
太感谢了。
此致,
我假设你想要这样的东西:
第一次运行需要 0 级备份(即使备份语句具有
level 1
)所有以下备份都是level 1
备份,仅包含与先前备份的差异。恢复语句恢复到SYSDATE-7
,即直到一周前。删除所有不需要的备份后,磁盘上有以下备份:我从未尝试过这种策略,但我认为 7 天的恢复窗口是合适的策略。
对于控制文件,可以在数据库备份和恢复用户指南中找到以下内容
我们对包含数据文件 1 备份的整个数据库进行备份,因此它也将包含控制文件的备份。但我也建议启用控制文件的自动备份。
或者
您希望能够恢复到过去 7 天的每个时间点,因此您应该配置
此删除策略还包括存档日志的备份。
您还可以配置归档日志删除策略:
此删除策略与存档目标有关,与存档日志备份无关。通常归档到“recovery_file_dest”。
所以最后你有以下脚本:
您必须运行一次的配置脚本:
每日备份的脚本:
以及用于频繁备份存档日志的以下脚本。也许您想为归档日志使用更少的通道。
如果您不希望在每次备份后进行恢复,那么另一种方法是使用增量备份的以下策略
每周运行一次以下脚本以获得 0 级备份
每隔一天进行一次 1 级备份
或者你可以做一个
同样,您应该指定 7 天的恢复窗口并经常进行归档日志备份。
您避免在每次备份后恢复数据库副本,但现在您需要更多空间用于备份,因为现在您的备份空间上始终有两个完整备份。1 级备份的数量也超过 6 个。
假设您的保留策略是 7 天,并且您总是在同一天同一时间进行 0 级备份(这是通常的做法),例如,您总是在周日 12:00 开始备份。现在我们有星期天 29日12:00。我们已经在磁盘上有两个 0 级备份,一个在 22日12:00开始,一个在 15日12:00 开始。如果您现在想将数据库恢复到 22 日 12:00 的时间点,这应该是可能的,因为您的保留策略是 7 天。但是对于此还原,您需要 15日的备份,因为备份在 22 日12:00还没有完成(甚至没有开始)。因此,如果您在 29日发出“DELETE OBSOLETE”命令, 12:00,这不会删除从 15日12:00 开始的 0 级备份。如果您现在开始 0 级备份,您将在磁盘上拥有三个 0 级备份。如果您想避免这种情况以节省空间,您可以考虑使用 6 天而不是 7 天的恢复窗口。
DELETE OBSOLETE
然后您可以在 29日12:00发出声明,然后再开始备份,15日进行的备份将被删除。所以最后你会得到这些脚本:
您必须运行一次的配置脚本:
每周 0 级备份的脚本
级别 1 备份的每日脚本(级别 0 运行的那一天除外):
和存档日志备份的脚本