oracle 热备份

  
  
  
  
  1. Oracle 热备份是指数据库处于open状态下,对数据库的数据文件、控制文件、参数文件、密码文件等
  2. 进行一系列备份操作。 
  3.  
  4. 热备是基于用户管理备份恢复的一种方式,也是除了RMAN备份之外较为常用的一种备份方式。 
  5.  
  6. 进行oracle热备份日志必须开启归档模式(数据库在mount状态下运行----alter  database archivelog) 
  7.  
  8. SQL> startup  mount; 
  9. ORACLE instance started. 
  10.  
  11. Total System Global Area  524288000 bytes 
  12. Fixed Size          2022016 bytes 
  13. Variable Size         159384960 bytes 
  14. Database Buffers      356515840 bytes 
  15. Redo Buffers            6365184 bytes 
  16. Database mounted. 
  17.  
  18. SQL> archive log list(查看日志是否归档) 
  19. Database log mode          Archive Mode 
  20. Automatic archival         Enabled 
  21. Archive destination        USE_DB_RECOVERY_FILE_DEST 
  22. Oldest online log sequence     5 
  23. Next log sequence to archive   7 
  24. Current log sequence           7 
  25.  
  26. SQL> select log_mode from v$database;(查看日志是否归档) 
  27.  
  28. LOG_MODE 
  29. ------------ 
  30. ARCHIVELOG 
  31. @@@@@ 
  32. 基于表空间的热备份实验: 
  33. SQL> select checkpoint_change#,name from v$datafile; 
  34.  
  35. CHECKPOINT_CHANGE# NAME 
  36. ------------------ ---------------------------------------------------------------------------------------------------- 
  37.         674728 /u01/app/oracle/oradata/orcl/system01.dbf 
  38.         674728 /u01/app/oracle/oradata/orcl/undotbs01.dbf 
  39.         674728 /u01/app/oracle/oradata/orcl/sysaux01.dbf 
  40.         674728 /u01/app/oracle/oradata/orcl/users01.dbf 
  41.         674728 /u01/app/oracle/oradata/orcl/example01.dbf 
  42.  
  43.  
  44. SQL> alter tablespace users begin backup;锁定了users表空间对应的数据文件头的change scn。  
  45.     数据库怎么用日志文件做恢复:查找不一致的数据文件(根据文件头中旧的scn) 
  46.     如果锁定了文件头,这个文件头中的scn就不会改变(当然了数据块还是会变化的,还可以做读写)。
  47.  然后就会应用这个scn到现在的日志。 
  48.     那我锁定了scn,不管你后边怎么修改,总之做恢复的时候是应用锁定的时候的scn一直到现在的日志
  49. (完全恢复的话)  
  50.  
  51.  
  52. SQL> select * from v$backup; 
  53.  
  54.      FILE# STATUS        CHANGE# TIME 
  55. ---------- ------------------ ---------- ------------------ 
  56.      1 NOT ACTIVE              0 
  57.      2 NOT ACTIVE              0 
  58.      3 NOT ACTIVE              0 
  59.      4 ACTIVE         676082 02-MAR-13 
  60.      5 NOT ACTIVE              0 
  61.  
  62. 路径(/u01/app/oracle/oradata/orcl)
  63.  [oracle@station7 orcl]$ cp users01.dbf /home/oracle/backup/(备份users表空间) 
  64.  
  65. SQL> alter tablespace users end backup; 
  66.  
  67. SQL> select * from v$backup; 
  68.  
  69.      FILE# STATUS        CHANGE# TIME 
  70. ---------- ------------------ ---------- ------------------ 
  71.      1 NOT ACTIVE              0 
  72.      2 NOT ACTIVE              0 
  73.      3 NOT ACTIVE              0 
  74.      4 NOT ACTIVE         676082 02-MAR-13 
  75.      5 NOT ACTIVE              0 
  76. @@@@@ 
  77. 热备份时相关SCN 如何处理? 
  78.  
  79. 在开始进行热备份时,数据文件头的checkpoint scn 和控制文件中该文件的scn lock住,
  80. 但是数据文件的dml操作可以正常进行,也就意味着block 的scn 是正常增加的,数据文件并没有锁定。
  81. 为什么要Lock 文件的checkpoint scn(实际上对应了恢复时的rba)
  82.  主要是为了标示进行恢复操作时需要的redo log, 这样就可以保证数据文件内所有的块都能得到恢复,
  83. 因为在进行数据文件拷贝时无法保证数据文件头是最先拷贝完成的。
  84. 如果先拷贝的是数据文件的其他部分然后才 去拷贝的数据文件头,
  85. 这时候很有可能数据文件头的checkpoint scn已经改变了而恢复时应用redo log的范围是由数据文件头的rba决定的。
  86. 当热备份结束时,在备份结束的时候,oracle会把数据文件头和control文件中关于这个数据文件的SCN号
  87. 更新为数据库的SCN号 
  88.  
  89. @@@@ 
  90. 表空间级检查点 
  91. 为什么储存在CONTROL FILE中要分为两个地方(SYSTEM CHECKPOINT SCN,DATAFILE CHECKPOINT SCN) ? 
  92.  
  93. 当你把一个tbs设为read-only时,他的SCN会冻结停止,此时DATAFILE CHECKPOINT SCN是不会再递增改变的,
  94.  但是整体的SYSTEM CHECKPOINT SCN却仍然会不断递增前进。 
  95. 所以,这就是为什么需要分别在两个地方储存SCN。 
  96. --测试前 
  97. SQL> select checkpoint_change#,name from v$database ; 
  98.  
  99. CHECKPOINT_CHANGE# NAME 
  100. ------------------ --------- 
  101.         678717 ORCL 
  102.  
  103. SQL> select checkpoint_change#,name from v$datafile where name like '%user%';  
  104.  
  105. CHECKPOINT_CHANGE# 
  106. ------------------ 
  107. NAME 
  108. -------------------------------------------------------------------------------- 
  109.         678717  
  110. /u01/app/oracle/oradata/orcl/users01.dbf 
  111.  
  112.  
  113. --测试 
  114. SQL> alter tablespace users read only
  115.  
  116. Tablespace altered 
  117.  
  118.  
  119. --测试后 
  120. SQL> select checkpoint_change#,name from v$database ; 
  121.  
  122. CHECKPOINT_CHANGE# NAME 
  123. ------------------ --------- 
  124.         678717(不变) ORCL  
  125.  
  126. SQL> select checkpoint_change#,name from v$datafile where name like '%user%';  
  127.  
  128. CHECKPOINT_CHANGE# 
  129. ------------------ 
  130. NAME 
  131. -------------------------------------------------------------------------------- 
  132.         679072(增加) 
  133. /u01/app/oracle/oradata/orcl/users01.dbf 
  134.  
  135. @@@@@ 
  136.  
  137. select checkpoint_change# from v$database
  138. CHECKPOINT_CHANGE# 
  139. -------------------- 
  140. 293184 
  141. select name,checkpoint_change#,last_change# from v$datafile where name like '%user%'
  142. NAME CHECKPOINT_CHANGE# LAST_CHANGE# 
  143. ----------------------------------- -------------------- -------------- 
  144. /u02/oradata/OMFD1/users01.dbf 293184 293184 
  145. 正常shutdown database后,SCN会发生什么变化? 
  146. 我们可以把数据库开在mount mode 
  147. 可以看到储存在control file中的三个SCN位置都是相同,注意此时的stop scn不会是NULL,而是等于start scn 
  148.  
  149.  
  150. 我们来查询datafile header SCN: 
  151. select name,checkpoint_change# from v$datafile_header where name like '%users01%'
  152. NAME CHECKPOINT_CHANGE# 
  153. ----------------------------------- -------------------- 
  154. /u02/oradata/OMFD1/users01.dbf 293184 
  155.  
  156. 当clean shutdown 时,checkpoint会进行,并且此时datafile的stop scn和start scn会相同。
  157.  等到我门开启数据库时,Oracle检查datafile header中的start scn和存于control file中的datafile的scn
  158. 是否相同,
  159.  如果相同,接着检查start scn和stop scn是否相同,如果仍然相同,数据库就会正常开启,
  160. 否则就需要recovery...
  161.  等到数据库开启后,储存在control file中的stop scn就会恢复为NULL值,
  162. 此时表示datafile是open在正常模式下了。 
  163. @@@@@ 
  164. crash recovery 和media recovery 的比较 
  165. 启动数据库时,如果发现STOP SCN = NULL,表示需要进行crash recovery;启动数据库时,
  166. 如果发现有datafile header的START SCN 不等于储存于CONTROLFILE的DATAFILE SCN,
  167. 表示需要进行Media recovery 

 

你可能感兴趣的:(oracle,热备份)