在不完全恢复并打开 9i 数据库后,resetlogs
我们运行了一个成功完成的完整备份。备份包含一个命令,用于在完成后删除过时的备份:
delete noprompt obsolete device type sbt;
RMAN 配置为使用 REDUNDANCY 2:
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
然而,旧版本的所有备份都立即标记为过时并删除,而不考虑冗余。
- 如果我们有一个
RECOVERY WINDOW
配置而不是,这种行为会有所不同REDUNDANCY 2
吗? - 这种行为在更高版本的 Oracle 中是否相同?
编辑:添加的输出LIST INCARNATION
:
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID CUR Reset SCN Reset Time
------- ------- -------- ---------------- --- -------------- ----------
1 1 LIVE 3494832994 NO 1 19-JAN-04
2 2 LIVE 3494832994 NO 11966702870498 01-JAN-14
3 3 LIVE 3494832994 YES 12041003378277 04-JUL-18
对于感兴趣的 RMAN 初学者
RMAN 策略
REDUNDANCY
和RECOVERY WINDOW
是互斥的。这意味着您可以设置一个或另一个。冗余策略
设置
REDUNDANCY 2
将始终仅保留最后两个备份并删除(或标记为过时)任何其他以前的备份,这些备份不再需要使数据库恢复到一致状态。注意:
如果在 FULL 和/或 LEVEL 0 备份之间有 LEVEL 1 和 ARCHIVELOG 备份,则应保留它们直到不再需要。
附加信息
根据 PDF 文件Oracle 数据库 - 备份和恢复参考,您的保留策略
REDUNDANCY 2
不应该删除旧备份:上面的示例使用值 1,但清楚地表明完整备份的早期备份不会被删除,直到它们大于配置的值。
回答您的问题
这取决于,....(参见 2. 和“可能的问题”)
根据文档
retention policy
,所有版本的设置似乎仍然相同:可能的问题
使用 Oracle 12c 进行复制
因为 Oracle RDBMS 9i 几乎已经过时并且我们的环境几乎是最新的,所以我只能在 12c 环境中重新迭代/重现这些步骤。
RMAN 配置
RMAN 使用默认设置:
RMAN 备份
通过发出一个简单的
backup database;
命令来执行 RMAN 备份:验证备份、检查过时的备份和列出化身
在执行了一段时间的备份后,我再次检查了 RMAN 目录:
验证周围没有过时的备份:
并列出了当前的化身:
执行首次还原/恢复
发出以下命令以将数据库恢复/恢复到一致状态:
还原成功,并且没有备份被标记为过时,即使在还原后化身已更改并且已
ALTER DATABASE OPEN RESETLOGS
发布。替代化身列表
可以使用以下命令实现化身的替代表示:
输出:
在数据库实例中查询本地目录的优点是将化身表示为要遵循的路径
执行第二次还原/恢复
发出以下命令以再次将数据库恢复/恢复到一致状态:
好的,我们在恢复路径中遇到了一个化身“碰撞”。我们目前处于化身 3,如下面的化身列表所示,我从上面复制了该列表:
...我们的目标是在化身 2 的 RESETLOGS 之后进行备份。让我们将化身重置为 2 并继续备份:
似乎工作。让我们再次重新启动还原/恢复:
还原成功并且没有备份被标记为过时,即使在还原之后化身发生了变化并且
ALTER DATABASE OPEN RESETLOGS
再次发出了 。现在我们是一个更新的化身,仍然没有Obsolete Backups
报告。第二次还原后的当前化身列表 (SQL)
Initiate Backup
After restoring the second time let's backup the database again:
Check Obsolete
We'll now check which (backup) files have become obsolete:
Check Incarnations (SQL)
As can be seen the incarnation 3 is now orphaned, because its direct line of heritage in regards to the current state of the database is broken. After the first restore we went back in time an re-restored the database again which results in the incarnation path
1 -> 2 -> 4
being the direct line of current ancestors for the open database.Because the direct line for restoring the current database is along the incarnations of 1, 2, 4 there is no need for RMAN to keep the obsolete backups listed above. They can safely be deleted.
Delete Obsolete
Let's go ahead and delete the obsolete backups:
List Backup Summary
Now that we have deleted some backup files and RMAN has performed some internal cleaning, let's have a look at the backup summary:
As we can see we still have "at least" two complete backup that will allow us to restore the database two backups in the past. RMAN (in 12c) did not delete any other backups along the incarnation path or outside of the orphaned incarnation.
Conclusion
Regarding the deleted backups after your initial restore in 9i I believe there are two possible scenarios:
Reference Material
从我的头顶。化身设置为防止您恢复太旧的备份。这样他们就过时了。
但是,您仍然可以使用它们来恢复,但在这种情况下,您需要自己将化身更改为“以前的”化身。同时,您的最新备份已过时。
这种行为仍然相同。