ITPub博客

首页 > 数据库 > Oracle > Oracle 快照控制文件(snapshot control file)

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

Oracle 作者:lilingfeng1 时间:2016-10-09 13:29:49 0 删除 编辑

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

 

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

 

2、配置快照控制文件

[sql] view plain copy
 print?
  1. a、快照控制文件位置  
  2.  快照控制文件的位置取决于不同的系统平台,如果启用了快速闪回区,缺省情况下,生成的快照控制文件并不位于闪回区  
  3.  Linux/Unix平台为: $ORACLE_HOME/dbs/snapcf_@.f  
  4.  Windows平台为: %ORACLE_HOME%\database\snapcf_@.f  
  5.    
  6. b、查看快照控制文件位置  
  7.  [oracle@linux1 dbs]$ export ORACLE_SID=usbo  
  8.  [oracle@linux1 dbs]$ rman target /  
  9.   
  10.  --查看快照控制文件的位置  
  11.  RMAN> show snapshot controlfile name;  
  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.   
  16. c、修改快照空文件位置  
  17.  sys@USBO> show parameter db_recov  
  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.   
  24.  sys@USBO> ho ls /u03/database/usbo/fr_area/USBO  
  25.  archivelog  
  26.   
  27.  sys@USBO> ho mkdir -p /u03/database/usbo/fr_area/USBO/snap  
  28.   
  29.  --使用configure命令来配置快照控制文件的位置,如下,我们修改到使用闪回区来存放  
  30.  RMAN> configure snapshot controlfile name to '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';  
  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.   
  36.  --查看修改之后快照控制文件的位置  
  37.  RMAN> show snapshot controlfile name;  
  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';  

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

[sql] view plain copy
 print?
  1. --下面查看新的快照控制文件位置无任何文件  
  2. sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap  
  3. total 0  
  4.   
  5. --生成控制文件快照  
  6. --在备份控制文件时会生成控制文件快照,如下  
  7. RMAN> backup current controlfile;  
  8.   
  9. Starting backup at 2013/10/15 13:46:03  
  10. allocated channel: ORA_DISK_1  
  11. channel ORA_DISK_1: SID=143 device type=DISK  
  12. channel ORA_DISK_1: starting full datafile backup set  
  13. channel ORA_DISK_1: specifying datafile(s) in backup set  
  14. including current control file in backup set  
  15. channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:46:05  
  16. channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:46:07  
  17. piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncnnf_TAG20131015T134604_95sonxsx_.bkp   
  18. tag=TAG20131015T134604 comment=NONE  
  19. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02  
  20. Finished backup at 2013/10/15 13:46:07  
  21.   
  22. --我们看以看到已经生成了一个控制文件快照时间为13:46  
  23. sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap  
  24. total 9.4M  
  25. -rw-r----- 1 oracle asmadmin 9.4M Oct 15 13:46 snapcf_usbo.f  
  26.   
  27. --下面我们来备份系统表空间,注意,备份系统表空间时,或者数据库发生结构性变化且开启了控制文件自动备份  
  28. --则在备份时即使不指定备份控制文件,控制文件仍然会被自动备份,如下  
  29. RMAN> backup tablespace system tag=system_tbs_bak;  
  30.   
  31. Starting backup at 2013/10/15 13:51:30  
  32. using channel ORA_DISK_1  
  33. channel ORA_DISK_1: starting full datafile backup set  
  34. channel ORA_DISK_1: specifying datafile(s) in backup set  
  35. input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf  
  36. channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:51:30  
  37. channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:25  
  38. piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_SYSTEM_TBS_BAK_95soz2l6_.bkp   
  39. tag=SYSTEM_TBS_BAK comment=NONE  
  40. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55  
  41. channel ORA_DISK_1: starting full datafile backup set  
  42. channel ORA_DISK_1: specifying datafile(s) in backup set  
  43. including current control file in backup set  
  44. including current SPFILE in backup set  
  45. channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:52:29  
  46. channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:30  
  47. piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_SYSTEM_TBS_BAK_95sp0x7s_.bkp   
  48. tag=SYSTEM_TBS_BAK comment=NONE   --这个备份集就包含了控制文件与spfile文件的自动备份  
  49. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01  
  50. Finished backup at 2013/10/15 13:52:30  
  51.   
  52. --检查快照控制文件是否被更新,此时文件的时间发生了变化为13:52,如下  
  53. sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap  
  54. total 9.4M  
  55. -rw-r----- 1 oracle asmadmin 9.4M Oct 15 13:52 snapcf_usbo.f  
  56.   
  57. --下面我们来做一个全备,且在全备期间添加一个新的表空间以观察快照控制文件  
  58. RMAN> backup database tag=full_bak;  
  59.   
  60. Starting backup at 2013/10/15 14:02:01   --->全备启动时间为14:02:01  
  61. using channel ORA_DISK_1  
  62. channel ORA_DISK_1: starting full datafile backup set  
  63. channel ORA_DISK_1: specifying datafile(s) in backup set  
  64. input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf  
  65. input datafile file number=00002 name=/u03/database/usbo/oradata/sysaux01.dbf  
  66. input datafile file number=00003 name=/u03/database/usbo/oradata/undotbs01.dbf  
  67. input datafile file number=00004 name=/u03/database/usbo/oradata/users01.dbf  
  68. channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:02:01  
  69. channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:03:56  
  70. piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_FULL_BAK_95splt2p_.bkp tag=FULL_BAK comment=NONE  
  71. channel ORA_DISK_1: backup set complete, elapsed time: 00:01:55  
  72. channel ORA_DISK_1: starting full datafile backup set  
  73. channel ORA_DISK_1: specifying datafile(s) in backup set  
  74. including current control file in backup set  
  75. including current SPFILE in backup set  
  76. channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:04:00  
  77. channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:04:02  
  78. piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_FULL_BAK_95sppjj9_.bkp tag=FULL_BAK comment=NONE  
  79. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02  
  80. Finished backup at 2013/10/15 14:04:02  
  81.   
  82. --我们开启另外一个session,此时时间为14:02:08,我们来添加一个表空间  
  83. 14:02:08 sys@USBO> create tablespace tbs_test datafile '/u03/database/usbo/oradata/tbs_test.dbf' size 5m;  
  84.   
  85. Tablespace created.  
  86.   
  87. 14:02:54 sys@USBO>   
  88.   
  89. --Author : Leshami  
  90. --Blog   : http://blog.csdn.net/leshami  
  91.   
  92. --查看控制文件中,新添加的表空间信息已经被追加到控制文件  
  93. 14:06:05 sys@USBO> ho strings /u03/database/usbo/oradata/control01.ctl | grep tbs_test  
  94. /u03/database/usbo/oradata/tbs_test.dbf  
  95.   
  96. --同时新添加的表空间信息同样被追到了快照控制文件  
  97. 14:07:19 sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f  
  98. -rw-r----- 1 oracle asmadmin 9.4M Oct 15 14:04 /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f  
  99.   
  100. 14:07:05 sys@USBO> ho strings /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f | grep tbs_test  
  101. /u03/database/usbo/oradata/tbs_test.dbf  
  102.   
  103. --对于备份期间控制文件的自动备份呢?  
  104. --下面的检查结果表明,自动备份的控制文件中也存在新表空间的信息  
  105. 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  
  106. /u03/database/usbo/oradata/tbs_test.dbf  
  107.   
  108. --查看数据字典信息,表空间已经被添加  
  109. 14:10:52 sys@USBO> select file#,name from v$datafile;  
  110.   
  111.      FILE# NAME  
  112. ---------- ------------------------------------------------------------  
  113.          1 /u03/database/usbo/oradata/system01.dbf  
  114.          2 /u03/database/usbo/oradata/sysaux01.dbf  
  115.          3 /u03/database/usbo/oradata/undotbs01.dbf  
  116.          4 /u03/database/usbo/oradata/users01.dbf  
  117.          5 /u03/database/usbo/oradata/tbs_test.dbf  
  118.      
  119. --从上面的测试可知,  
  120. --a、RMAN 开始备份,Oracle检查控制文件与快照控制文件是否一致(如果不存在,从控制文件提取信息创建),不一致则刷新快照控制文件。  
  121. --b、RMAN从快照控制文件读取信息进行备份,此时快照控制文件并不包含新的表空间,因此备份集中没有tbs_test.dbf  
  122. --c、备份完成后进行了控制文件与spfile文件自动备份  
  123. --d、刷新了快照控制文件  
  124. --e、所以上面的检测中控制文件,快照控制文件,备份的控制文件中都包含新表空间的信息。但却没有备份,因为表空间在备份开始后被添加。  
  125.   
  126. --删除演示的表空间     
  127. 14:16:07 sys@USBO> drop tablespace tbs_test including contents and datafiles;  
  128.   
  129. Tablespace dropped.  
  130.   
  131. --将快照控制文件位置调整到缺省路径  
  132. RMAN> configure snapshot controlfile name clear;  
  133.   
  134. old RMAN configuration parameters:  
  135. CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';  
  136. RMAN configuration parameters are successfully reset to default value  
  137.   
  138. RMAN> show snapshot controlfile name;  
  139.   
  140. RMAN configuration parameters for database with db_unique_name USBO are:  
  141. CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/db_1/dbs/snapcf_usbo.f'; # default  

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30192548/viewspace-2125983/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-04-05

  • 博文量
    51
  • 访问量
    38500