清理RMAN Catalog恢复目录

简介:
有这样一个需求,用户使用RMAN Catalog恢复目录保存多台Database Server的备份信息。 由于每天都会执行大量的backup操作,而且所备份的DB的结构本身都已经十分复杂了,导致recovery catalog恢复目录占用空间迅速增长,且用户的磁盘空间较为紧张,可能在短期内无法扩disk space,这就让我们考虑到需要清理RMAN Recovery Catalog中一些不再需要的记录。 首先搞清楚在Catalog库中那些数据段占用了最多的空间Space:  
这里 RMAN 用户是Catalog Schema 的拥有者

SQL>  select bytes/1024/1024 "MB" ,segment_name,segment_type
from dba_segments where owner='RMAN' order by bytes desc;

        MB SEGMENT_NAME         SEGMENT_TYPE
---------- -------------------- ------------------
        88 ROUT                 TABLE
        47 ROUT_U1              INDEX
        31 ROUT_I_RSR           INDEX
        23 ROUT_I_DB            INDEX
      .125 RSR                  TABLE
  可以看到是ROUT表占用了最多的空间,那么这张表是做什么用处的呢? ROUT表用于记录RMAN在执行backup等命令时的输出内容,实际上堆积了V$RMAN_OUTPUT视图中的内容,当目标数据库连接到CATALOG库执行操作或Resync Catalog时会将V$RMAN_OUTPUT中的信息同步到Catalog库的ROUT表中。  
SQL> desc v$rman_output;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 SID                                                NUMBER
 RECID                                              NUMBER
 STAMP                                              NUMBER
 SESSION_RECID                                      NUMBER
 SESSION_STAMP                                      NUMBER
 OUTPUT                                             VARCHAR2(130)
 RMAN_STATUS_RECID                                  NUMBER
 RMAN_STATUS_STAMP                                  NUMBER
 SESSION_KEY                                        NUMBER

SQL> select output from v$rman_output where output is not null and rownum <3;

OUTPUT
--------------------------------------------------------------------------------
connected to target database: VPROD (DBID=881465081)
connected to recovery catalog database
  ROUT表的定义存放在$ORACLE_HOME/rdbms/admin/recover.sql 中,具体如下:  
CREATE TABLE rout
(
db_key          NUMBER NOT NULL,        -- database output belongs to
rsr_key         NUMBER NOT NULL,        -- command that generated the output
rout_skey       NUMBER NOT NULL,        -- session that created the output
rout_recid      NUMBER NOT NULL,        -- record id from server
rout_stamp      NUMBER NOT NULL,        -- timestamp when row was added
rout_text       VARCHAR2(130) NOT NULL, -- RMAN output
CONSTRAINT rout_u1 UNIQUE(db_key, rout_skey, rsr_key, rout_recid, rout_stamp),
CONSTRAINT rout_f1 FOREIGN KEY(db_key)
  REFERENCES db ON DELETE CASCADE,
CONSTRAINT rout_f2 FOREIGN KEY(rsr_key)
  REFERENCES rsr ON DELETE CASCADE
) &tablespace&
  正是因为该Catalog恢复目录每天都会记录大量结构复杂(拥有众多数据文件、归档日志)的数据库的备份输出信息,导致ROUT表迅速膨胀,可能会存放几十万条记录,在我们的例子中:  
SQL> select count(*) from rman.rout;

  COUNT(*)
----------
   1069485

  根据文档<Rman Catalog Resync Operation is Very slow at 10G [ID 378234.1]>的介绍ROUT表包含了所有RMAN会话的输出内容,且这些内容仅对 Enterprise Manager企业管理器有用。 默认情况下ROUT表也会在每次Resync Catalog操作时被清理(clean up),但是在版本10.2.0.1-10.2.0.3仍会保留最近60天来的记录,当RMAN被频繁使用时60天的ROUT数据也可能非常多。(The ROUT table contains the RMAN output generated during all rman sessions and is used only by Enterprise Manager. The ROUT table is cleaned up automatically during each resync operation leaving by default, the last 60 days worth of entries in ROUT.


本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1278171


相关文章
|
6月前
|
Oracle 关系型数据库 数据库
rman 恢复脚本
rman 恢复脚本
67 1
|
数据库 SQL 关系型数据库
|
Oracle 关系型数据库 数据库
|
Oracle 关系型数据库 数据库
|
Oracle 关系型数据库 Linux
1207catalog copy的数据文件作为0级备份2
[20151207]catalog copy的数据文件作为0级备份补充.txt --  前一阵子写了1篇blog,使用热备份模式备份的文件是否可以作为0级备份。 --  以及使用backpup as copy备份的数据文件是否可以作为0级备份. --  链接:http://blog.itpub.net/267265/viewspace-1832475/ --  当时困惑的是使用catalog datafilecopy '/home/oracle/backup/datafile_4_USERS.dbf' level 0 ;作为0级。
965 0
|
Oracle 关系型数据库
1112catalog copy的数据文件作为0级备份
[20151112]catalog copy的数据文件作为0级备份.txt --使用热备份模式备份的文件是否可以作为0级备份呢? --以前学习rman这部分内容时候有点混乱,无法理解为什么使用rman backup as copy 的数据文件与0级备份的数据文件存在那些不同.
903 0
|
Oracle 关系型数据库 数据库
RMAN_学习笔记5_RMAN Catalog Script恢复目录脚本
2014-12-24 Created By BaoXinjian 一、摘要 简言之,将rman的备份恢复命令写成脚本并保存在恢复目录内,恢复目录内的脚本可用性及通用性高于基于文件系统的脚本。 客户端只要能够登录到RMAN恢复目录,则这些脚本可用,尤其对于global脚本,可以被任意注册的数据库调度。
1073 0
|
SQL 存储 监控
RMAN_学习笔记3_RMAN Catalog恢复目录
2014-12-23 Created By BaoXinjian 一、创建恢复目录 创建恢复目录一般分为三大步骤 Step1. 创建存放恢复目录的数据库(或使用已存在的数据库) Step2. 创建恢复目录的的所有者 Step3.
852 0