免责声明:我不是 DBA,也没有完整地阅读RMAN 文档,所以这可能涵盖得很好,但我找不到它。
问题很简单,这两个命令有什么区别:
delete copy of archivelog all completed before 'SYSDATE-7';
delete archivelog all completed before 'SYSDATE-7';
从 RMAN 运行这些时在什么情况下从哪里删除了什么?
可能相关的信息:(?)
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 5785
Next log sequence to archive 5787
Current log sequence 5787
SQL> select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
---------------- ----------- ---------- ----------------- -----
e:\oracle\backup 2.1475E+11 4.7820E+10 4.6097E+10 1246
-
RMAN> show retention policy;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ****** are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
根据文档:
即使是原始归档日志也算作副本,因为它们是归档重做日志的副本。即使您在磁盘上有 1 次或 10 次相同的归档日志,这 2 个语句也是等效的。COMPLETED BEFORE 'SYSDATE - 7' 子句将删除早于 7 天的归档日志。
然而,对于数据文件而言,情况并非如此。原始的实际数据文件不算作副本。如果您使用 BACKUP AS COPY 命令创建数据文件的副本,该副本将具有复制时文件中的数据,并且数据库不会使用该副本,恢复过程除外。如果使用 SWITCH 命令将数据文件切换为其副本,则副本成为原始文件,而之前的原始文件成为副本。