归档日志填满闪回恢复区 (FRA) 空间

Gar*_*eld 6 oracle backup oracle-11g-r2

我被聘来填补一个我还没有准备好填补的 DBA 职位,虽然培训让我到达那里,但我正在接近一个潜在的问题。

我的 oracle 11g 数据库的闪回恢复区 (FRA) 快要满了(还剩 2.5%)。它处于 ARCHIVELOG 模式,因为我们进行实时备份(至少这是我被告知的原因)。我们已经通过企业管理器清除了所有不需要的备份,但存档日志仍然占用超过 50% 的已分配 FRA 空间。是否可以删除一些较旧的存档日志以释放空间?服务器仍然保存几个月前的日志,我们真的不需要那么远的备份。

如果我可以删除它们,最好的方法是什么?

小智 5

Oracle 会自动删除过时的文件。通常,您不必手动删除任何内容。

RMAN 维护的一个重要部分是删除不再需要的备份。如果配置了快速恢复区,那么数据库会自动删除该区不需要的文件

来自RMAN 备份和存储库维护概述

首先,确定您的空间是否不足。例如使用以下查询(包括示例输出):

SELECT * FROM V$RECOVERY_FILE_DEST;

NAME            SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
--------------  ----------- ---------- ----------------- ---------------
/mydisk/rcva     5368709120 109240320             256000              28
Run Code Online (Sandbox Code Playgroud)

如果空间不足,则必须减少保留策略或增加 FRA 的大小。


小智 3

我强烈建议为此编写一个小型 RMAN 脚本。像这样的东西应该有效:

run {
    allocate channel "dsk1" device type disk;
    allocate channel "dsk2" device type disk;
    crosscheck backup;
    crosscheck archivelog all;
    delete noprompt expired backup;
    delete noprompt expired archivelog all;
    report obsolete recovery window of 7 days;
    delete noprompt obsolete recovery window of 7 days;
    backup as compressed backupset archivelog all;
    delete noprompt archivelog until time 'sysdate-1' backed up 1 times to device type disk;
}
Run Code Online (Sandbox Code Playgroud)

解释:

allocate channel <TAG> device type disk;
Run Code Online (Sandbox Code Playgroud)

这些行是可选的,但如果您通过多个物理通道连接到存储,则允许您分配多个通道

crosscheck backup;
crosscheck archivelog all;
Run Code Online (Sandbox Code Playgroud)

这些交叉检查行将根据存储上的内容检查实际的 RMAN 库存(在控制文件中)。不再存储的那些备份和/或存档日志将被标记为“已过期”

delete noprompt expired backup;
delete noprompt expired archivelog all;
Run Code Online (Sandbox Code Playgroud)

这些会删除存储中不匹配的所有库存条目。

report obsolete recovery window of 7 days;
Run Code Online (Sandbox Code Playgroud)

此行会将不再需要将数据库恢复到 7 天前一致状态的任何备份文件标记为“OBSOLETE”

delete noprompt obsolete recovery window of 7 days;
Run Code Online (Sandbox Code Playgroud)

此命令删除所有标记为“OBSOLETE”的文件

backup as compressed backupset archivelog all;
Run Code Online (Sandbox Code Playgroud)

此命令将所有当前存档备份为压缩备份集。

delete noprompt archivelog until time 'sysdate-1' backed up 1 times to device type disk;
Run Code Online (Sandbox Code Playgroud)

此命令将删除所有早于 1 天且已备份的存档。

希望这对您有帮助!