AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 216429
Accepted
Tortoise
Tortoise
Asked: 2018-09-01 07:02:05 +0800 CST2018-09-01 07:02:05 +0800 CST 2018-09-01 07:02:05 +0800 CST

如何配置 RMAN 以自动删除 crontrol 文件?

  • 772

我在 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”开头的文件是控制文件。

问题:我该怎么做才能自动删除这些文件?

感谢您的见解!

oracle-12c rman
  • 1 1 个回答
  • 8704 Views

1 个回答

  • Voted
  1. Best Answer
    John K. N.
    2018-09-12T05:46:42+08:002018-09-12T05:46:42+08:00

    控制文件和备份集的RMAN 保留策略定义如下:

    (强调我的)

    [CONFIGURE]..
    

    这是启动参数配置的命令

    ... RETENTION POLICY ...
    

    为 RMAN 标记为过时的备份集和副本指定持久、持续的策略,即不需要且符合删除条件。
    随着时间的推移,RMAN 会根据保留策略中指定的标准将备份集和副本标记为过时。当需要空间时,RMAN 会自动删除闪回恢复区中过时的备份集和副本。RMAN 不会自动删除闪回恢复区之外的过时文件:您必须手动执行 DELETE OBSOLETE才能删除它们。

    ... TO REDUNDANCY integer
    

    指定 RMAN 应保留integer每个数据文件和控制文件的完整或 0 级备份。默认保留策略设置为REDUNDANCY 1。
    如果存在多个integer数据文件或控制文件的完整或 0 级备份,则 RMAN 会将这些额外文件标记为过时。然后,RMAN 确定最旧的保留备份,并将所有归档重做日志和比此备份更早的日志备份标记为过时。该 DELETE OBSOLETE 命令删除过时的数据文件备份(完整或增量)、控制文件备份和归档日志备份或映像副本。

    将上述应用到您的环境中

    在您的情况下,您设置了以下内容:

    CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
    

    意思是:

    • 保留最多三个版本的所有完整和 0 级备份 [返回]
    • 将所有存档日志也保留在这些备份之间
    • 保留每种备份类型的所有控制文件备份
      • 完整和 0 级备份
      • 归档日志备份
      • 触发控制文件的任何自动备份时

    您可能会注意到,您基本上可以拥有与以下总和相同数量的备份控制文件:

    • 完整备份文件
    • 0级备份文件
    • 归档日志备份文件

    ……甚至更多。(阅读:Oracle 12c – 自动控制文件备份了解更多详细信息)

    如果您没有备份到 Oracle 实例的闪回恢复区,那么您必须在备份数据库后通过发出以下命令手动删除这些文件:

    DELETE OBSOLETE;
    

    您也可以通过首先运行来测试它:

    REPORT OBSOLETE; 
    

    ...检查目录中的控制文件是否实际上已过时,然后使用我在此之前提到的命令在 RMAN 中手动删除它们。

    概括

    您可能会看到以下问题:

    1. 一切正常,实例刚刚创建了很多自动备份的控制文件。
    2. 控制文件在 FRE 之外,必须手动删除
    3. 你遇到了一个错误(...阅读下文)。

    因为我们不知道您的确切备份脚本和其他设置,所以很难判断您遇到的是哪一点,但您有几个很好的起点。

    明显的错误

    在某些情况下(显然)控制文件永远不会被标记为过时:

    • 12.2 控制文件备份永远不会被标记为过时

    已提交错误并提供了修复程序,但似乎并非在所有情况下都有效。

    您可能必须手动删除 RMAN 中的控制文件备份。

    DELETE COPY OF CONTROLFILE LIKE '/mnt/backup/rman/xyz/<part_name_of_control_file>%';
    

    回答你的问题

    我该怎么做才能自动删除这些文件?

    抱歉,但这取决于您遇到的情况,可能会有所不同:

    • 会自动发生
    • 可以用REPORT OBSOLETEand删除DELETE OBSOLETE
    • 只会手动发生DELETE COPY OF CONTROLFILE LIKE ...
    • 修复错误后可能会再次工作

    参考

    • 删除 RMAN 备份和归档重做日志(Oracle Docs)
    • 配置备份保留策略(Oracle Docs)
    • 列出备份和恢复相关的对象(Oracle 文档)
    • 删除指定的备份和副本(Oracle Docs)
    • 12.2 控制文件备份永远不会被标记为过时(PATRICK'S ORACLE DBA BLOG)
    • 2

相关问题

  • 是否可以在 NOCATALOG 模式下对 rman 和 Oracle 9i 使用“还原 UNTIL SCN”?

  • rman 可以备份表的子集吗

  • RMAN 备份脚本失败

  • 我应该有多少个控制文件?

  • Oracle 11.1.0 自动备份到错误的位置

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve