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

简介:       听说过Oracle 控制文件,还有快照控制文件这个说法呢?没错,尽管快照控制文件很少被提及,但确实是存在,只不过在使用RMAN时这个快照控制文件被使用。

      听说过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

 

Oracle 牛鹏社    Oracle DBsupport

相关参考
    中小型数据库 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)

目录
相关文章
|
2月前
|
存储 Oracle NoSQL
Oracle 表空间、数据文件、schema的关系
Oracle 表空间、数据文件、schema的关系
154 2
|
2月前
|
XML Java 数据库连接
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
|
9月前
|
Oracle 关系型数据库 数据库
9-4 Oracle管理表空间和数据文件
9-4 Oracle管理表空间和数据文件
|
1月前
|
SQL Oracle 关系型数据库
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
46 0
|
1月前
|
存储 SQL Oracle
oracle 存储过程导出sql语句 导出为文件
oracle 存储过程导出sql语句 导出为文件
131 0
|
2月前
|
存储 监控 Oracle
Oracle数据文件:数据王国的秘密藏宝图
【4月更文挑战第19天】Oracle数据文件是数据库物理存储的核心,存储实际数据,犹如数据王国的宝藏。它们对数据库性能至关重要,影响数据分布和访问效率。有效管理数据文件涉及合理规划大小、数量,监控使用情况,利用自动扩展功能,并能实现跨磁盘存储和高可靠性。理解数据文件原理有助于优化数据库性能和资源利用,发掘更多数据潜力。
|
2月前
|
运维 Oracle 关系型数据库
Oracle日志文件:数据王国的“记事本”
【4月更文挑战第19天】Oracle日志文件是数据库稳定运行的关键,记录数据变更历史,用于恢复和故障处理。它们协调并发操作,确保数据一致性和完整性。日志文件实时写入操作信息并定期刷新到磁盘,便于数据恢复。然而,日志文件需备份和归档以保证安全性,防止数据丢失。日志文件,数据王国的“记事本”,默默守护数据安全。
|
2月前
|
运维 Oracle 安全
Oracle的三重奏:密码文件、警告文件与跟踪文件
【4月更文挑战第19天】Oracle数据库的三大守护者:密码文件保护系统免受未经授权访问,如同宝藏的“密码锁”;警告文件似“哨兵”,记录错误信息,助于及时解决问题;跟踪文件扮演“侦探”角色,详尽记录操作,便于性能优化和故障排查。这三份文件共同确保数据王国的安全与稳定。作为管理员,重视并善用它们是关键。
|
2月前
|
运维 Oracle 关系型数据库
Oracle服务器参数文件:数据王国的“调控大师”
【4月更文挑战第19天】Oracle服务器参数文件,数据库的“调控大师”,掌控着内存管理、进程调度等关键设置。通过参数调整如SGA_MAX_SIZE和PROCESSES,实现性能优化和故障防控。虽然挑战重重,但成功的性能调优带来无尽成就感。它在备份恢复中也扮演重要角色,保障数据一致性与可用性。成为真正的“调控大师”,为数据王国效力!
|
2月前
|
存储 Oracle 安全
Oracle控制文件:数据王国的导航仪
【4月更文挑战第19天】Oracle控制文件是数据库的关键组件,存储结构信息和元数据,用于数据库启动、恢复。它指引数据库找到所需文件,保证数据完整性。控制文件的多重备份和定期更新确保其安全可靠。作为数据库导航仪,它对管理员理解和维护数据库至关重要,为数据存储和恢复提供关键支持。