日期:2014-05-16  浏览次数:20723 次

Oracle 快照控制文件(snapshot control file)

      听说过Oracle 控制文件,还有快照控制文件这个说法呢?没错,尽管快照控制文件很少被提及,但确实是存在,只不过在使用RMAN时这个快照控制文件被使用。回顾一下 Oracle 控制文件,我们知道控制文件是Oracle体系结构中的重要组成部分之一,记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息,也记录了系统当前SCN的值等等。那快照控制文件也就是控制文件的一个副本,本文介绍了什么是快照控制文件以及何时被使用。

 

1、快照控制文件
     快照控制文件是由RMAN恢复管理器在系统指定位置生成的当前控制文件的一个副本
     我们知道控制文件在整个数据库生命期中在不断的时时刻刻发生变化,RMAN备份需要依赖于控制文件或恢复目录,也就是说需要知道备份开
     始时的检查点SCN以及所有文件结构信息并且在整个备份期间这些信息需要保持一致,但又不能锁定控制文件(锁定操作无法执行检查点,切
     换日志等)。因此既要保持一致性,又不影响数据库的正常操作。快照控制文件就应运而生了。RMAN只在备份或同步操作期间对实际控制文
     件进行一个短暂的锁定,并根据其内容来生成或刷新快照控制文件。一旦该动作完成之后,RMAN将切换到使用快照控制文件进行备份及同步
     操作。从而保证备份期间控制文件,数据文件等等的一致性。
     综上所述,其主要作用是使用RMAN同步恢复目录或备份时能得到一个一致性的控制文件。

 

2、配置快照控制文件

a、快照控制文件位置
 快照控制文件的位置取决于不同的系统平台,如果启用了快速闪回区,缺省情况下,生成的快照控制文件并不位于闪回区
 Linux/Unix平台为: $ORACLE_HOME/dbs/snapcf_@.f
 Windows平台为: %ORACLE_HOME%\database\snapcf_@.f
 
b、查看快照控制文件位置
 [oracle@linux1 dbs]$ export ORACLE_SID=usbo
 [oracle@linux1 dbs]$ rman target /

 --查看快照控制文件的位置
 RMAN> show snapshot controlfile name;

 RMAN configuration parameters for database with db_unique_name USBO are:
 CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/db_1/dbs/snapcf_usbo.f'; # default

c、修改快照空文件位置
 sys@USBO> show parameter db_recov

 NAME                                 TYPE                              VALUE
 ------------------------------------ --------------------------------- ------------------------------
 db_recovery_file_dest                string                            /u03/database/usbo/fr_area
 db_recovery_file_dest_size           big integer                       3852M

 sys@USBO> ho ls /u03/database/usbo/fr_area/USBO
 archivelog

 sys@USBO> ho mkdir -p /u03/database/usbo/fr_area/USBO/snap

 --使用configure命令来配置快照控制文件的位置,如下,我们修改到使用闪回区来存放
 RMAN> configure snapshot controlfile name to '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';

 new RMAN configuration parameters:
 CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';
 new RMAN configuration parameters are successfully stored

 --查看修改之后快照控制文件的位置
 RMAN> show snapshot controlfile name;

 RMAN configuration parameters for database with db_unique_name USBO are:
 CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';

3、演示生成快照控制文件

--下面查看新的快照控制文件位置无任何文件
sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap
total 0

--生成控制文件快照
--在备份控制文件时会生成控制文件快照,如下
RMAN> backup current controlfile;

Starting backup at 2013/10/15 13:46:03
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=143 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:46:05
channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:46:07
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncnnf_TAG20131015T134604_95sonxsx_.bkp 
tag=TAG20131015T134604 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 2013/10/15 13:46:07

--我们看以看到已经生成了一个控制文件快照时间为13:46
sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap
total 9.4M
-rw-r----- 1 oracle asmadmin 9.4M Oct 15 13:46 snapcf_usbo.f

--下面我们来备份系统表空间,注意,备份系统表空间时