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

2025-04-26Linux/AIX / Oracle / RAC / RMAN

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

1、快照控制文件

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

2、配置快照控制文件 view plain copy print?

  1. a、快照控制文件位置
  2. 快照控制文件的位置取决于不同的系统平台,如果启用了快速闪回区,缺省情况下,生成的快照控制文件并不位于闪回区
  3. Linux/Unix平台为: $ORACLE_HOME/dbs/snapcf_@.f
  4. Windows平台为: %ORACLE_HOME%databasesnapcf_@.f
  5. 5.

  6. b、查看快照控制文件位置
  7. [oracle@linux1 dbs]$ export ORACLE_SID=usbo
  8. [oracle@linux1 dbs]$ rman target /
  9. 9.

  10. –查看快照控制文件的位置
  11. RMAN> show snapshot controlfile name;
  12. 12.

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

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

  19. NAME TYPE VALUE
  20. ———————————— ——————————— ——————————
  21. db_recovery_file_dest string /u03/database/usbo/fr_area
  22. db_recovery_file_dest_size big integer 3852M
  23. 23.

  24. sys@USBO> ho ls /u03/database/usbo/fr_area/USBO
  25. archivelog
  26. 26.

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

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

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

  36. –查看修改之后快照控制文件的位置
  37. RMAN> show snapshot controlfile name;
  38. 38.

  39. RMAN configuration parameters for database with db_unique_name USBO are:
  40. CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';
  41. 3、演示生成快照控制文件 view plain copy print?

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

  46. –生成控制文件快照
  47. –在备份控制文件时会生成控制文件快照,如下
  48. RMAN> backup current controlfile;
  49. 8.

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

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

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

  72. Starting backup at 2013/10/15 13:51:30
  73. using channel ORA_DISK_1
  74. channel ORA_DISK_1: starting full datafile backup set
  75. channel ORA_DISK_1: specifying datafile(s) in backup set
  76. input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf
  77. channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:51:30
  78. channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:25
  79. piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_SYSTEM_TBS_BAK_95soz2l6_.bkp
  80. tag=SYSTEM_TBS_BAK comment=NONE
  81. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
  82. channel ORA_DISK_1: starting full datafile backup set
  83. channel ORA_DISK_1: specifying datafile(s) in backup set
  84. including current control file in backup set
  85. including current SPFILE in backup set
  86. channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:52:29
  87. channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:30
  88. piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_SYSTEM_TBS_BAK_95sp0x7s_.bkp
  89. tag=SYSTEM_TBS_BAK comment=NONE –这个备份集就包含了控制文件与spfile文件的自动备份
  90. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
  91. Finished backup at 2013/10/15 13:52:30
  92. 51.

  93. –检查快照控制文件是否被更新,此时文件的时间发生了变化为13:52,如下
  94. sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap
  95. total 9.4M
  96. -rw-r—– 1 oracle asmadmin 9.4M Oct 15 13:52 snapcf_usbo.f
  97. 56.

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

  101. Starting backup at 2013/10/15 14:02:01 —>全备启动时间为14:02:01
  102. using channel ORA_DISK_1
  103. channel ORA_DISK_1: starting full datafile backup set
  104. channel ORA_DISK_1: specifying datafile(s) in backup set
  105. input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf
  106. input datafile file number=00002 name=/u03/database/usbo/oradata/sysaux01.dbf
  107. input datafile file number=00003 name=/u03/database/usbo/oradata/undotbs01.dbf
  108. input datafile file number=00004 name=/u03/database/usbo/oradata/users01.dbf
  109. channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:02:01
  110. channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:03:56
  111. piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_FULL_BAK_95splt2p_.bkp tag=FULL_BAK comment=NONE
  112. channel ORA_DISK_1: backup set complete, elapsed time: 00:01:55
  113. channel ORA_DISK_1: starting full datafile backup set
  114. channel ORA_DISK_1: specifying datafile(s) in backup set
  115. including current control file in backup set
  116. including current SPFILE in backup set
  117. channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:04:00
  118. channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:04:02
  119. piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_FULL_BAK_95sppjj9_.bkp tag=FULL_BAK comment=NONE
  120. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
  121. Finished backup at 2013/10/15 14:04:02
  122. 81.

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

  126. Tablespace created.
  127. 86.

  128. 14:02:54 sys@USBO>
  129. 88.

  130. –Author : Leshami
  131. –Blog : http://blog.csdn.net/leshami
  132. 91.

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

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

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

  144. –对于备份期间控制文件的自动备份呢?
  145. –下面的检查结果表明,自动备份的控制文件中也存在新表空间的信息
  146. 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
  147. /u03/database/usbo/oradata/tbs_test.dbf
  148. 107.

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

  152. FILE# NAME
  153. ———- ————————————————————
  154. 1 /u03/database/usbo/oradata/system01.dbf
  155. 2 /u03/database/usbo/oradata/sysaux01.dbf
  156. 3 /u03/database/usbo/oradata/undotbs01.dbf
  157. 4 /u03/database/usbo/oradata/users01.dbf
  158. 5 /u03/database/usbo/oradata/tbs_test.dbf
  159. 118.

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

  167. –删除演示的表空间
  168. 14:16:07 sys@USBO> drop tablespace tbs_test including contents and datafiles;
  169. 128.

  170. Tablespace dropped.
  171. 130.

  172. –将快照控制文件位置调整到缺省路径
  173. RMAN> configure snapshot controlfile name clear;
  174. 133.

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

  179. RMAN> show snapshot controlfile name;
  180. 139.

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

![1756814874827-fa1b409b-8225-4765-abe2-ff8187b763db.png

](http://wp.qq.com/wpa/qunwpa?idkey=63ed41c9a94b48ebc4d3d956537065ba6d18a649c353b09bfdac284518b7b8d8) ![1756814874827-fa1b409b-8225-4765-abe2-ff8187b763db.png

](http://wp.qq.com/wpa/qunwpa?idkey=9ece469d99da670d85e1576013677151012787a7bfc26894598e61853d487917)

相关参考

[中小型数据库 RMAN CATALOG 备份恢复方案(一)](http://blog.csdn.net/robinson_0612/article/details/9815271)
[中小型数据库 RMAN CATALOG 备份恢复方案(二)](http://blog.csdn.net/robinson_0612/article/details/9850665)
[中小型数据库 RMAN CATALOG 备份恢复方案(三)](http://blog.csdn.net/robinson_0612/article/details/9943407)
[基于RMAN实现坏块介质恢复(blockrecover)](http://blog.csdn.net/robinson_0612/article/details/10500997)
[用 DBMS_REPAIR 修复坏块](http://blog.csdn.net/leshami/article/details/10616687)
[RMAN 数据库克隆文件位置转换方法](http://blog.csdn.net/robinson_0612/article/details/9495975)
[基于RMAN的异机数据库克隆(rman duplicate)](http://blog.csdn.net/robinson_0612/article/details/9667847)
[基于 RMAN 的同机数据库克隆](http://blog.csdn.net/robinson_0612/article/details/9497321)
[基于用户管理的同机数据库克隆](http://blog.csdn.net/robinson_0612/article/details/9453553)
[基于RMAN从活动数据库异机克隆(rman duplicate from active DB)](http://blog.csdn.net/robinson_0612/article/details/9718153)
[RMAN duplicate from active 时遭遇 ORA-17627 ORA-12154](http://blog.csdn.net/robinson_0612/article/details/9715347)
[Oracle 冷备份](http://blog.csdn.net/robinson_0612/archive/2010/08/05/5791597.aspx)
[Oracle 热备份](http://blog.csdn.net/robinson_0612/archive/2010/08/16/5816012.aspx)
[Oracle 备份恢复概念](http://blog.csdn.net/robinson_0612/archive/2010/08/05/5791585.aspx)
[Oracle 实例恢复](http://blog.csdn.net/robinson_0612/archive/2010/07/27/5768233.aspx)
[Oracle 基于用户管理恢复的处理](http://blog.csdn.net/robinson_0612/archive/2010/11/28/6041217.aspx)
[SYSTEM 表空间管理及备份恢复](http://blog.csdn.net/robinson_0612/article/details/6041207)
[SYSAUX表空间管理及恢复](http://blog.csdn.net/robinson_0612/archive/2010/08/13/5810732.aspx)
[Oracle 基于备份控制文件的恢复(unsing backup controlfile)](http://blog.csdn.net/robinson_0612/article/details/7962187)
[RMAN 概述及其体系结构](http://blog.csdn.net/robinson_0612/archive/2010/11/24/6032525.aspx)
[RMAN 配置、监控与管理](http://blog.csdn.net/robinson_0612/archive/2010/11/24/6032597.aspx)
[RMAN 备份详解](http://blog.csdn.net/robinson_0612/archive/2010/11/24/6032739.aspx)
[RMAN 还原与恢复](http://blog.csdn.net/robinson_0612/archive/2010/11/28/6041247.aspx)
[RMAN catalog 的创建和使用](http://blog.csdn.net/robinson_0612/archive/2010/11/29/6043649.aspx)
[基于catalog 创建RMAN存储脚本](http://blog.csdn.net/robinson_0612/archive/2010/12/13/6073020.aspx)
[基于catalog 的RMAN 备份与恢复](http://blog.csdn.net/robinson_0612/archive/2010/12/13/6073069.aspx)
[RMAN 备份路径困惑](http://blog.csdn.net/robinson_0612/article/details/6414338)
[自定义 RMAN 显示的日期时间格式](http://blog.csdn.net/robinson_0612/article/details/9011789)
[只读表空间的备份与恢复](http://blog.csdn.net/robinson_0612/article/details/6646492)
[Oracle 基于用户管理的不完全恢复](http://blog.csdn.net/robinson_0612/article/details/7909887)
[理解 using backup controlfile](http://blog.csdn.net/robinson_0612/article/details/7963264)
[使用RMAN实现异机备份恢复(WIN平台)](http://blog.csdn.net/robinson_0612/article/details/6639064)
[使用RMAN迁移文件系统数据库到ASM](http://blog.csdn.net/robinson_0612/article/details/6453954)
[基于Linux下 Oracle 备份策略(RMAN)](http://blog.csdn.net/robinson_0612/article/details/6454509)
[Linux 下RMAN备份shell脚本](http://blog.csdn.net/robinson_0612/article/details/8029245)
[使用RMAN迁移数据库到异机](http://blog.csdn.net/robinson_0612/article/details/8076841)
[RMAN 提示符下执行SQL语句](http://blog.csdn.net/robinson_0612/article/details/9020727)
[Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)](http://blog.csdn.net/robinson_0612/article/details/9253867)
[rman 还原归档日志(restore archivelog)](http://blog.csdn.net/robinson_0612/article/details/9614253)

.[ ]()[ ]()

#

                                   _•_
                                   [Oracle快照控制文件(snapshot control file)](http://blog.csdn.net/xiaoweidai/article/details/20445219)

                                   _•_
                                   [Oracle 快照控制文件(snapshot control file)](http://xwk.iteye.com/blog/2129681)

                                   _•_
                                   [Oracle 11g RAC RMAN ORA-00245 control file backup operation failed 错误 与 控制文件备份 说明](http://blog.csdn.net/u011616400/article/details/39700979)

                                   _•_
                                   [RAC和ASM环境下修改控制文件control file](http://cloudtech.iteye.com/blog/1824042)

                                   _•_
                                   [快照控制文件](http://blog.csdn.net/aqszhuaihuai/article/details/7259643)

                                   _•_
                                   [Oracle 快照(snapshot )及dblink使用](http://misxjq.iteye.com/blog/1186927)

                                   _•_
                                   [ORACLE错误编码大全](http://blog.csdn.net/baidu_32739019/article/details/70665890)

                                   _•_
                                   [LVM快照(snapshot)备份](http://kouriba.iteye.com/blog/1638303)

                                   _•_
                                   [ORA-00245: control file backup failed; target is likely on a local file system](http://blog.csdn.net/g13731463274/article/details/52179916)

                                   _•_
                                   [Oracle snapshot (快照)](http://hulu26.iteye.com/blog/977609)