我在 ODA(Oracle 数据库机,运行 linux)上使用 Oracle 版本 12.2.0.1.0 标准版。我的实例“xyz”正在归档日志模式下运行。RMAN 执行备份,不必要的数据文件会自动从备份集中删除。
[oracle@oda ~]$ rman TARGET /
Recovery Manager: Release 12.2.0.1.0 - Production on Fr Aug 31 16:50:05 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Mit Zieldatenbank verbunden: XYZ (DBID=4079461799)
RMAN> show all;
Kontrolldatei der Zieldatenbank wird anstelle des Recovery-Katalogs verwendet
RMAN-Konfigurationsparameter für Datenbank mit db_unique_name XYZ sind:
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/mnt/backup/rman/xyz/%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/mnt/backup/rman/xyz/%U';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/app/oracle/fast_recovery_area/XYZ/controlfile/snapcf_xyz.f';
当我检查目录时,一切看起来都很好——除了不断堆积的控制文件
[oracle@oda1 xyz]$ pwd
/mnt/backup/rman/xyz
[oracle@oda1 xyz]$ l
total 4144832
drwxr-xr-x 2 oracle oinstall 4096 Aug 31 11:00 .
drwxr-xr-x 7 oracle oinstall 4096 Jul 4 14:38 ..
-rw-r----- 1 oracle asmadmin 1072447488 Aug 29 01:02 6ntbnscr_1_1
-rw-r----- 1 oracle asmadmin 943104 Aug 29 01:02 6otbnshm_1_1
-rw-r----- 1 oracle asmadmin 18115072 Aug 29 11:00 6qtbovhi_1_1
-rw-r----- 1 oracle asmadmin 62260224 Aug 30 01:00 6stbqgoj_1_1
-rw-r----- 1 oracle asmadmin 1072734208 Aug 30 01:05 6ttbqgq1_1_1
-rw-r----- 1 oracle asmadmin 1159680 Aug 30 01:05 6utbqh2k_1_1
-rw-r----- 1 oracle asmadmin 10599424 Aug 30 11:00 70tbrjtj_1_1
-rw-r----- 1 oracle asmadmin 42828288 Aug 31 01:00 72tbt54i_1_1
-rw-r----- 1 oracle asmadmin 1073242112 Aug 31 01:02 73tbt54q_1_1
-rw-r----- 1 oracle asmadmin 2316288 Aug 31 01:02 74tbt59l_1_1
-rw-r----- 1 oracle asmadmin 17406976 Aug 31 11:00 76tbu89j_1_1
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 11:11 c-4079461799-20180620-00
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 11:25 c-4079461799-20180620-01
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 13:03 c-4079461799-20180620-02
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 13:48 c-4079461799-20180620-03
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 14:03 c-4079461799-20180620-04
-rw-r----- 1 oracle asmadmin 10698752 Jul 16 10:22 c-4079461799-20180716-00
-rw-r----- 1 oracle asmadmin 10698752 Jul 26 17:32 c-4079461799-20180726-00
-rw-r----- 1 oracle asmadmin 10698752 Jul 27 01:02 c-4079461799-20180727-00
-rw-r----- 1 oracle asmadmin 10698752 Jul 27 11:00 c-4079461799-20180727-01
..
以“c”开头的文件是控制文件。
问题:我该怎么做才能自动删除这些文件?
感谢您的见解!
控制文件和备份集的RMAN 保留策略定义如下:
(强调我的)
将上述应用到您的环境中
在您的情况下,您设置了以下内容:
意思是:
您可能会注意到,您基本上可以拥有与以下总和相同数量的备份控制文件:
……甚至更多。(阅读:Oracle 12c – 自动控制文件备份了解更多详细信息)
如果您没有备份到 Oracle 实例的闪回恢复区,那么您必须在备份数据库后通过发出以下命令手动删除这些文件:
您也可以通过首先运行来测试它:
...检查目录中的控制文件是否实际上已过时,然后使用我在此之前提到的命令在 RMAN 中手动删除它们。
概括
您可能会看到以下问题:
因为我们不知道您的确切备份脚本和其他设置,所以很难判断您遇到的是哪一点,但您有几个很好的起点。
明显的错误
在某些情况下(显然)控制文件永远不会被标记为过时:
已提交错误并提供了修复程序,但似乎并非在所有情况下都有效。
您可能必须手动删除 RMAN 中的控制文件备份。
回答你的问题
抱歉,但这取决于您遇到的情况,可能会有所不同:
REPORT OBSOLETE
and删除DELETE OBSOLETE
DELETE COPY OF CONTROLFILE LIKE ...
参考