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

--下面我们来备份系统表空间,注意,备份系统表空间时,或者数据库发生结构性变化且开启了控制文件自动备份
--则在备份时即使不指定备份控制文件,控制文件仍然会被自动备份,如下
RMAN> backup tablespace system tag=system_tbs_bak;

Starting backup at 2013/10/15 13:51:30
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf
channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:51:30
channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:25
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_SYSTEM_TBS_BAK_95soz2l6_.bkp
tag=SYSTEM_TBS_BAK comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
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
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:52:29
channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:30
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_SYSTEM_TBS_BAK_95sp0x7s_.bkp
tag=SYSTEM_TBS_BAK comment=NONE   --这个备份集就包含了控制文件与spfile文件的自动备份
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2013/10/15 13:52:30

--检查快照控制文件是否被更新,此时文件的时间发生了变化为13:52,如下
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:52 snapcf_usbo.f

--下面我们来做一个全备,且在全备期间添加一个新的表空间以观察快照控制文件
RMAN> backup database tag=full_bak;

Starting backup at 2013/10/15 14:02:01   --->全备启动时间为14:02:01
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf
input datafile file number=00002 name=/u03/database/usbo/oradata/sysaux01.dbf
input datafile file number=00003 name=/u03/database/usbo/oradata/undotbs01.dbf
input datafile file number=00004 name=/u03/database/usbo/oradata/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:02:01
channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:03:56
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_FULL_BAK_95splt2p_.bkp tag=FULL_BAK comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:55
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
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:04:00
channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:04:02
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_FULL_BAK_95sppjj9_.bkp tag=FULL_BAK comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 2013/10/15 14:04:02

--我们开启另外一个session,此时时间为14:02:08,我们来添加一个表空间
14:02:08 sys@USBO> create tablespace tbs_test datafile '/u03/database/usbo/oradata/tbs_test.dbf' size 5m;

Tablespace created.

14:02:54 sys@USBO> 

--Author : Leshami
--Blog   : http://blog.csdn.net/leshami

--查看控制文件中,新添加的表空间信息已经被追加到控制文件
14:06:05 sys@USBO> ho strings /u03/database/usbo/oradata/control01.ctl | grep tbs_test
/u03/database/usbo/oradata/tbs_test.dbf

--同时新添加的表空间信息同样被追到了快照控制文件
14:07:19 sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f
-rw-r----- 1 oracle asmadmin 9.4M Oct 15 14:04 /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f

14:07:05 sys@USBO> ho strings /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f | grep tbs_test
/u03/database/usbo/oradata/tbs_test.dbf

--对于备份期间控制文件的自动备份呢?
--下面的检查结果表明,自动备份的控制文件中也存在新表空间的信息
14:10:49 sys@USBO> ho strings /u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_FULL_BAK_95sppjj9_.bkp | grep tbs_test
/u03/database/usbo/oradata/tbs_test.dbf

--查看数据字典信息,表空间已经被添加
14:10:52 sys@USBO> select file#,name from v$datafile;

     FILE# NAME
---------- ------------------------------------------------------------
         1 /u03/database/usbo/oradata/system01.dbf
         2 /u03/database/usbo/oradata/sysaux01.dbf
         3 /u03/database/usbo/oradata/undotbs01.dbf
         4 /u03/database/usbo/oradata/users01.dbf
         5 /u03/database/usbo/oradata/tbs_test.dbf

--从上面的测试可知,
--a、RMAN 开始备份,Oracle检查控制文件与快照控制文件是否一致(如果不存在,从控制文件提取信息创建),不一致则刷新快照控制文件。
--b、RMAN从快照控制文件读取信息进行备份,此时快照控制文件并不包含新的表空间,因此备份集中没有tbs_test.dbf
--c、备份完成后进行了控制文件与spfile文件自动备份
--d、刷新了快照控制文件
--e、所以上面的检测中控制文件,快照控制文件,备份的控制文件中都包含新表空间的信息。但却没有备份,因为表空间在备份开始后被添加。

--删除演示的表空间
14:16:07 sys@USBO> drop tablespace tbs_test including contents and datafiles;

Tablespace dropped.

--将快照控制文件位置调整到缺省路径
RMAN> configure snapshot controlfile name clear;

old RMAN configuration parameters:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';
RMAN configuration parameters are successfully reset to default value

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

 

    

相关参考
    中小型数据库 RMAN CATALOG 备份恢复方案(一)

    中小型数据库 RMAN CATALOG 备份恢复方案(二)

    中小型数据库 RMAN CATALOG 备份恢复方案(三)

    基于RMAN实现坏块介质恢复(blockrecover)

    用 DBMS_REPAIR 修复坏块

    RMAN 数据库克隆文件位置转换方法

    基于RMAN的异机数据库克隆(rman duplicate)

    基于 RMAN 的同机数据库克隆

    基于用户管理的同机数据库克隆

    基于RMAN从活动数据库异机克隆(rman duplicate from active DB)

    RMAN duplicate from active 时遭遇 ORA-17627 ORA-12154

    Oracle 冷备份

    Oracle 热备份

    Oracle 备份恢复概念

    Oracle 实例恢复

    Oracle 基于用户管理恢复的处理

    SYSTEM 表空间管理及备份恢复

    SYSAUX表空间管理及恢复

    Oracle 基于备份控制文件的恢复(unsing backup controlfile)

    RMAN 概述及其体系结构

    RMAN 配置、监控与管理

    RMAN 备份详解

    RMAN 还原与恢复

    RMAN catalog 的创建和使用

    基于catalog 创建RMAN存储脚本

    基于catalog 的RMAN 备份与恢复

    RMAN 备份路径困惑

    自定义 RMAN 显示的日期时间格式

    只读表空间的备份与恢复

    Oracle 基于用户管理的不完全恢复

    理解 using backup controlfile

    使用RMAN实现异机备份恢复(WIN平台)

    使用RMAN迁移文件系统数据库到ASM

    基于Linux下 Oracle 备份策略(RMAN)

    Linux 下RMAN备份shell脚本

    使用RMAN迁移数据库到异机

    RMAN 提示符下执行SQL语句

    Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)

    rman 还原归档日志(restore archivelog)

时间: 2024-08-04 05:48:59

Oracle 快照控制文件(snapshot control file)的相关文章

通过Snapshot Control File 恢复控制文件

大家好! 今天AningDBA和大家分享的是通过rman 快照控制文件恢复控制文件的方法: 我今天测试使用的oracle版本是10.2.01 由于版本问题,实验结果可能会存在差异.   1.1.  查看Snapshot Control File位置 RMAN> SHOW SNAPSHOT CONTROLFILE NAME;   using target database control file instead of recovery catalog RMAN configuration par

Oracle技术:snapshot control file enqueue

rman备份db时出现了:waiting for snapshot control file enqueue提示,很少看到这个提示,记录一下. RMAN> run{ 2> backup database; 3> delete noprompt obsolete; 4> backup archivelog all; 5> } Starting backup at 2011-09-30 15:31:00 using channel ORA_DISK_1 channel ORA_D

Oracle损坏控制文件的恢复方法

一: 损坏单个控制文件 损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件都不是一个,而且所有的控制文件都互为镜相,只要拷贝一个好的控制文件替换坏的控制文件就可以了. 1.控制文件损坏,最典型的就是启动数据库出错,不能mount数据库 SQL>startup ORA-00205: error in identifying controlfile, check alert log for more info 查看报警日志文件,有如下信息 alter database  mount M

Oracle的控制文件简介

一.Oracle 控制文件 为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 在参数文件中描述其位置,个数等等.通常采用分散放开,多路复用的原则.在mount阶段被读取,open阶段一直被使用 维护数据库一致性(数据库启动时会比较控制文件与联机日志文件中的ckpt,即起始scn号,如相等则正常启动,否则需要介质恢复) 一个控制文件只能属于一个数据库 控制文件的任意修改将写

oracle重建控制文件丢失数据文件导致悲剧

数据库最初故障 Thu Sep 25 09:27:26 2014 MMON started with pid=15, OS id=1968 starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'... starting up 1 shared server(s) ... ORACLE_BASE from environment = F:\oracle Thu Sep 25 09

Oracle 基于备份控制文件的恢复(unsing backup controlfile)

    Oracle 基于备份控制文件的恢复(unsing backup controlfile)     有关RMAN的备份恢复与管理请参考     RMAN 概述及其体系结构     RMAN 配置.监控与管理     RMAN 备份详解     RMAN 还原与恢复     RMAN catalog 的创建和使用     基于catalog 创建RMAN存储脚本     基于catalog 的RMAN 备份与恢复     RMAN 备份路径困惑     使用RMAN实现异机备份恢复(WIN

Oracle bigfile大文件表空间

Database 是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成.表空间内的逻辑存 储单位为段(segment),段又可以继续划分为数据扩展(extent).而数据扩展是由一组连续的数据 块(datablock)构成. 大文件表空间 在Oracle中用户可以创建大文件表空间(bigfile tablespace).这样Oracle数据库使用的表空间 (tablespace)可以由一个单一的大文件构成,而不是若干个小数据文件.这使Oracle可以发挥64位 系统的能力,创建.

Oracle bigfile大文件表空间介绍及其优势和劣势分析

Database 是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成.表空间内的逻辑存 储单位为段(segment),段又可以继续划分为数据扩展(extent).而数据扩展是由一组连续的数据 块(datablock)构成. 大文件表空间 在Oracle中用户可以创建大文件表空间(bigfile tablespace).这样Oracle数据库使用的表空间 (tablespace)可以由一个单一的大文件构成,而不是若干个小数据文件.这使Oracle可以发挥64位 系统的能力,创建.

【oracle】ORA-01580 error creating control backup file

早上查看报警邮件的时候发现了ORA-01580 error creating control backup file. 通常次错误与RMAN 备份控制文件的策略有关: 比如: RMAN> backup current controlfile; Starting backup at 22-AUG-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: s