问题描述
你好,
我们想清除主数据库和备用数据库中V $ ARCHIVED_LOG中的旧条目,因为我们注意到某些使用V $ DATABASE,V $ BACKUP_SET和V $ ARCHIVED_LOG的查询有时会很慢。
我们将control_file_record_keep_time设置为25,但是在同一数据库中,我们有时在V $ ARCHIVED_LOG中有成千上万的条目,这些条目较旧: 有时2个月大,有时超过1年。
示例:
有没有办法在主数据库中的V $ ARCHIVED_LOG中运行选择性清除?我知道MOS Note 845361.1,但这是一个完整的清除。
谢谢。
我们想清除主数据库和备用数据库中V $ ARCHIVED_LOG中的旧条目,因为我们注意到某些使用V $ DATABASE,V $ BACKUP_SET和V $ ARCHIVED_LOG的查询有时会很慢。
我们将control_file_record_keep_time设置为25,但是在同一数据库中,我们有时在V $ ARCHIVED_LOG中有成千上万的条目,这些条目较旧: 有时2个月大,有时超过1年。
示例:
> show parameter control_file_record_keep_time
control_file_record_keep_time integer 25
> select sysdate - min(first_time) from v$archived_log;
SYSDATE-MIN(FIRST_TIME)
-----------------------
705.846887
有没有办法在主数据库中的V $ ARCHIVED_LOG中运行选择性清除?我知道MOS Note 845361.1,但这是一个完整的清除。
谢谢。
专家解答
那些旧的存档日志还存在吗?如果是这样,这将是值得一些调查,为什么他们是浮动,因为这可能意味着一些问题,你的备份认为他们需要一个旧的存档 (这可能反过来意味着一个备份问题)。
如果您对备份/存档的完整性充满信心,则可以首先确保controlfile通过以下方式反映现实:
但是请记住,这意味着RMAN不再有这些档案记录。如果事实证明您确实需要其中之一,那么在恢复方面会遇到麻烦。“交叉检查” 不是您应该运行的常规命令。
如果这不起作用,则意味着这些档案必须仍然存在于磁盘上
只是为了补充,如果你的v $ archive_log在某个阶段由于大量的存档日志而扩展,那么存档日志的数量不会影响性能,但总大小 (认为它像一个完整的表扫描)。
如果你 * 真的 * 想要一个干净的石板,你可以重新创建你的控制文件,然后重新编录档案的子集,但这似乎是一个激烈的步骤。
如果您对备份/存档的完整性充满信心,则可以首先确保controlfile通过以下方式反映现实:
RUN
{
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
DELETE NOPROMPT OBSOLETE;
}但是请记住,这意味着RMAN不再有这些档案记录。如果事实证明您确实需要其中之一,那么在恢复方面会遇到麻烦。“交叉检查” 不是您应该运行的常规命令。
如果这不起作用,则意味着这些档案必须仍然存在于磁盘上
只是为了补充,如果你的v $ archive_log在某个阶段由于大量的存档日志而扩展,那么存档日志的数量不会影响性能,但总大小 (认为它像一个完整的表扫描)。
如果你 * 真的 * 想要一个干净的石板,你可以重新创建你的控制文件,然后重新编录档案的子集,但这似乎是一个激烈的步骤。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




