RMAN深入解析之--控制文件

    控制文件负责数据库的物理结构,控制文件控制数据库查找物理文件的位置,并控制每个文件当前包含的头信息,其内容包含数据文件信息,重做日志信息和归档日志信息;控制文件还还有与数据库关联的关键文件的每一个文件头的快照(snapshot)。

    由于控制文件存储的是数据文件信息,所以RMAN会利用控制文件获取备份所需的信息,具体操作方式是:RMAN使用控制文件来编译文件列表而不需要用户创建文件列表,并且额在添加一个新文件时不需要更改这个脚本,控制文件会储存这个新文件的信息,因此RMAN也可以从控制文件中得到这个新文件的信息。

     控制文件还能用作RMAN目录。RMAN完成数据库任何部分备份后,会在控制文件中添加该记录,以及说明备份开始和结束时间的检查点信息。

    控制文件将其内部数据记录分为两类:循环重用记录和非循环重用记录。循环重用记录包含可以从控制文件删除的信息。例如:归档日志历史信息可以删除,并且不会影响产品数据库。非循环重用记录是那些不能被删除的记录,如果控制文件因这类记录而空间不足,则会删除这些记录已得到更多的空间。非循环重用记录包括数据文件列表和日志文件列表。

    控制文件中的RMAN备份记录属于循环重用记录类别,如果含有这些记录的控制文件区域已满,这些记录就会被删除。这会给恢复带来灾难。

    可以通过设置controlfile_record_keep_time参数控制保留时间,参数默认值为7天,表明如果记录的保留时间少于7天,就不会删除该记录,此时只能扩展控制文件区域。参数设置为0时将不会发生重用记录,相应的控制文件将不断扩展直至无法管理(不建议)。

   如果重建控制文件丢失,将导致RMAN备份的元数据丢失。

SQL> show parameter control
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
SQL> alter system set control_file_record_keep_time=20;
System altered.
SQL> show parameter control
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     20
[oracle@aix211 ~]$rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Wed Jun 18 15:02:45 2014
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database: PROD (DBID=259825570, not open)
RMAN> show all;  
using target database control file instead of recovery catalog
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 15 DAYS;
control_file_record_keep_time指定的时间应该超过recovery window。

快照控制文件:

   RMAN在备份期间需要得到一个一致的控制文件视图,RMAN需要知道备份开始时的最新的检查点信息和文件结构信息。开始备份后,RMAN需要这些信息在备份操作期间保持一致。

   在热备份期间,控制文件是在不断的发生变化,RMAN又如何获得一个控制文件一致性的视图呢?

    RMAN使用快照控制文件(snapshot controlfile)来解决前面的问题,快照控制文件时控制文件的副本。RMAN只在备份和同步操作期间使用快照控制文件。这些操作开始时,RMAN会根据实际控制文件内容来刷新快照控制文件,这样会短暂地锁定控制文件;随后,RMAN会切换到快照并在备份期间持续使用这个快照。这种方式具有读取一致性,且不妨碍数据库活动。

    快照控制文件默认在dbs目录下,文件名:snapcf_<ORACLE_SID>.f

[oracle@aix211 ~]$cd $ORACLE_HOME/dbs
[oracle@aix211 dbs]$ls
ab_+ASM.dat     hc_prod.dat     init.ora        initprod.ora    lkPROD          snapcf_prod.f
hc_+ASM.dat     init+ASM.ora    initdw.ora      lk+ASM          orapwprod       spfileprod.ora
[oracle@aix211 dbs]$


   重命名快照控制文件:

   configure  snapshot controlfile name to '<location\file_name>';