http://blog.csdn.net/leshami/article/details/9253867

 

  1. -->创建测试用表并插入记录  
  2. 10:07:01 SQL> create table t2(id varchar2(10), dt varchar2(20));  
  3.   
  4. 10:07:57 SQL> insert into t2 select 'Robinson',to_char(sysdate,'yyyymmdd hh24:mi:ss'from dual;  
  5.   
  6. 10:08:15 SQL> commit;  
  7.   
  8. 10:08:18 SQL> alter system archive log current;  -->对当前日志进行归档  
  9.   
  10. -->下面的查询可知产生新的归档日志29  
  11. 10:08:28 SQL> SELECT name,sequence# seq#,status,completion_time FROM v$archived_log where sequence#>=28;  
  12.   
  13. NAME                                                         SEQ# S COMPLETION_TIME  
  14. ------------------------------------------------------------ ---- - -----------------  
  15. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_28_8xdbcrht_.arc         28 A 20130705 10:03:36  
  16. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_29_8xdbnqx9_.arc         29 A 20130705 10:08:23  
  17.   
  18. -->应证归档日志中包含记录Robinson  
  19. 10:09:53 SQL> ho strings /u02/DB/oradb/arch/2013_07_05/o1_mf_1_29_8xdbnqx9_.arc | grep "Robinson"  
  20. Robinson  
  21.   
  22. --->第二次插入记录  
  23. 10:10:48 SQL> insert into t2 select 'Jackson',to_char(sysdate,'yyyymmdd hh24:mi:ss'from dual;  
  24.   
  25. 10:11:27 SQL> commit;  
  26.   
  27. 10:11:30 SQL> alter system archive log current;  
  28.   
  29. 10:11:47 SQL> SELECT name,sequence# seq#,status,completion_time FROM v$archived_log where sequence#>=28;  
  30.   
  31. NAME                                                       SEQ# S COMPLETION_TIME  
  32. ---------------------------------------------------------- ---- - -----------------  
  33. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_28_8xdbcrht_.arc       28 A 20130705 10:03:36  
  34. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_29_8xdbnqx9_.arc       29 A 20130705 10:08:23  
  35. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_30_8xdbv338_.arc       30 A 20130705 10:11:47  
  36.   
  37. 10:12:17 SQL> ho strings /u02/DB/oradb/arch/2013_07_05/o1_mf_1_30_8xdbv338_.arc | grep "Jackson"  
  38. Jackson  
  39.   
  40. -->查看当前数据库的SCN  
  41. 10:12:34 SQL> select name,current_scn from v$database;  
  42.   
  43. NAME                           CURRENT_SCN  
  44. ------------------------------ -----------  
  45. ORADB                              1365679  
  46.   
  47. --->第三次插入记录  
  48. 10:15:07 SQL> insert into t2 select 'Winson',to_char(sysdate,'yyyymmdd hh24:mi:ss'from dual;  
  49.   
  50. 10:15:47 SQL> commit;  
  51.   
  52. 10:21:18 SQL> alter system switch logfile;        
  53.   
  54. --->第四次插入记录  
  55. 10:22:53 SQL> insert into t2 select 'LastRecord',to_char(sysdate,'yyyymmdd hh24:mi:ss'from dual;  
  56.   
  57. 10:23:44 SQL> commit;  
  58.   
  59. 10:23:47 SQL> select * from t2;  
  60.   
  61. ID         DT  
  62. ---------- --------------------  
  63. Robinson   20130705 10:08:15  
  64. Jackson    20130705 10:11:27  
  65. Winson     20130705 10:15:47  
  66. LastRecord 20130705 10:23:44  
  67.   
  68. 10:23:52 SQL> alter system switch logfile;  
  69.   
  70. -->下面是最终的归档日志情况  
  71. 10:24:00 SQL> SELECT name,sequence# seq#,status,completion_time FROM v$archived_log where sequence#>=28;  
  72.   
  73. NAME                                                         SEQ# S COMPLETION_TIME  
  74. ------------------------------------------------------------ ---- - -----------------  
  75. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_28_8xdbcrht_.arc         28 A 20130705 10:03:36  
  76. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_29_8xdbnqx9_.arc         29 A 20130705 10:08:23  
  77. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_30_8xdbv338_.arc         30 A 20130705 10:11:47  
  78. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_31_8xdcg1wc_.arc         31 A 20130705 10:21:53  
  79. /u02/DB/oradb/arch/2013_07_05/o1_mf_1_32_8xdcl0rx_.arc         32 A 20130705 10:24:00  
  80.   
  81. 10:24:12 SQL> ho strings /u02/DB/oradb/arch/2013_07_05/o1_mf_1_31_8xdcg1wc_.arc | grep "Winson"  
  82. Winson  
  83.   
  84. --->最后一次插入记录  
  85. 10:25:16 SQL> insert into t2 select 'Completed',to_char(sysdate,'yyyymmdd hh24:mi:ss'from dual;  
  86.   
  87. 10:26:20 SQL> commit;  
  88.   
  89. -->此时数据库当前的redo log并没有归档,因此插入的数据位于联机日志  
  90. 10:27:40 SQL> ho strings /u02/DB/oradb/redo/redo03.log | grep "Completed"  
  91.         Completed  
  92.   
  93. --->下面列出完成的记录与日志对照关系  
  94. SQL> select * from t2;  
  95.   
  96. ID         DT                    对应的归档日志            对应的sequence  
  97. ---------- --------------------  ------------------------  --------------  
  98. Robinson   20130705 10:08:15     o1_mf_1_29_8xdbnqx9_.arc              29  
  99. Jackson    20130705 10:11:27     o1_mf_1_30_8xdbv338_.arc              30  
  100. Winson     20130705 10:15:47     o1_mf_1_31_8xdcg1wc_.arc              31  
  101. LastRecord 20130705 10:23:44     o1_mf_1_32_8xdcl0rx_.arc              32  
  102. Completed  20130705 10:26:20     redo03.log  
  103.   
  104. 2、实施不完全恢复  
  105. a、基于时间点的不完全恢复  
  106. [oracle@node1 ~]$ rman target /  
  107.   
  108. Recovery Manager: Release 11.2.0.1.0 - Production on Fri Jul 5 10:28:53 2013  
  109.   
  110. Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.  
  111.   
  112. connected to target database: ORADB (DBID=2557712192)  
  113.   
  114. RMAN> run{  
  115. 2> shutdown immediate;  
  116. 3> startup mount;  
  117. 4> set until time "to_date('20130705 10:09:53','yyyymmdd hh24:mi:ss')";  
  118. 5> restore database;  
  119. 6> recover database;  
  120. 7> }  
  121.   
  122. using target database control file instead of recovery catalog  
  123. database closed  
  124. database dismounted  
  125. Oracle instance shut down  
  126.   
  127. connected to target database (not started)  
  128. Oracle instance started  
  129. database mounted  
  130.   
  131. Total System Global Area     263639040 bytes  
  132.   
  133. executing command: SET until clause  
  134.   
  135. Starting restore at 20130705 10:33:36  
  136. allocated channel: ORA_DISK_1  
  137. channel ORA_DISK_1: SID=24 device type=DISK  
  138.   
  139. channel ORA_DISK_1: starting datafile backup set restore      ---->启动数据文件还原  
  140. channel ORA_DISK_1: specifying datafile(s) to restore from backup set  
  141. channel ORA_DISK_1: restoring datafile 00001 to /u02/DB/oradb/oradata/system01.dbf  
  142. channel ORA_DISK_1: restoring datafile 00003 to /u02/DB/oradb/oradata/undotbs01.dbf  
  143. channel ORA_DISK_1: reading from backup piece /u02/rman/full_ORADB_04odvgv7_1_1  
  144. channel ORA_DISK_1: piece handle=/u02/rman/full_ORADB_04odvgv7_1_1 tag=FULL_BAK  
  145. channel ORA_DISK_1: restored backup piece 1  
  146. channel ORA_DISK_1: restore complete, elapsed time: 00:01:05  
  147. channel ORA_DISK_1: starting datafile backup set restore  
  148. channel ORA_DISK_1: specifying datafile(s) to restore from backup set  
  149. channel ORA_DISK_1: restoring datafile 00002 to /u02/DB/oradb/oradata/sysaux01.dbf  
  150. channel ORA_DISK_1: restoring datafile 00004 to /u02/DB/oradb/oradata/users01.dbf  
  151. channel ORA_DISK_1: restoring datafile 00005 to /u02/DB/oradb/oradata/example01.dbf  
  152. channel ORA_DISK_1: reading from backup piece /u02/rman/full_ORADB_05odvgv7_1_1  
  153. channel ORA_DISK_1: piece handle=/u02/rman/full_ORADB_05odvgv7_1_1 tag=FULL_BAK  
  154. channel ORA_DISK_1: restored backup piece 1  
  155. channel ORA_DISK_1: restore complete, elapsed time: 00:00:45     --->完成数据文件还原  
  156. Finished restore at 20130705 10:35:28  
  157.   
  158. Starting recover at 20130705 10:35:29   --->启动数据恢复  
  159. using channel ORA_DISK_1  
  160.   
  161. starting media recovery  
  162. ---->下面提示归档日志已经存在,是由于我们备份归档日志后并没有对其清除              
  163. archived log for thread 1 with sequence 27 is already on disk as file /u02/DB/oradb/arch/2013_07_05/o1_mf_1_27_8xd9c0f0_.arc  
  164. archived log for thread 1 with sequence 28 is already on disk as file /u02/DB/oradb/arch/2013_07_05/o1_mf_1_28_8xdbcrht_.arc  
  165. archived log for thread 1 with sequence 29 is already on disk as file /u02/DB/oradb/arch/2013_07_05/o1_mf_1_29_8xdbnqx9_.arc  
  166. archived log for thread 1 with sequence 30 is already on disk as file /u02/DB/oradb/arch/2013_07_05/o1_mf_1_30_8xdbv338_.arc  
  167. archived log file name=/u02/DB/oradb/arch/2013_07_05/o1_mf_1_27_8xd9c0f0_.arc thread=1 sequence=27 --->列出日志对应的sequence  
  168. archived log file name=/u02/DB/oradb/arch/2013_07_05/o1_mf_1_28_8xdbcrht_.arc thread=1 sequence=28  
  169. archived log file name=/u02/DB/oradb/arch/2013_07_05/o1_mf_1_29_8xdbnqx9_.arc thread=1 sequence=29  
  170. archived log file name=/u02/DB/oradb/arch/2013_07_05/o1_mf_1_30_8xdbv338_.arc thread=1 sequence=30  
  171. media recovery complete, elapsed time: 00:00:09   --->介质恢复完成,可以看到介质恢复,日志apply到了30(不包含sequence 30的内容)  
  172. Finished recover at 20130705 10:35:42             --->完成恢复  
  173.   
  174. RMAN> alter database open resetlogs;              --->手动open resetlogs  
  175.   
  176. database opened  
  177.   
  178. RMAN> host;         
  179.   
  180. [oracle@node1 ~]$ more query_t2.sh  
  181. #!/bin/bash  
  182. if [ -f ~/.bashrc ]; then     
  183.         . ~/.bashrc     
  184. fi     
  185.   
  186. export ORACLE_SID=oradb  
  187. sqlplus -S /nolog <<EOF  
  188. connect scott/tiger  
  189. select * from scott.t2;  
  190. exit;  
  191. EOF  
  192. exit  
  193.   
  194. -->验证结果,记录Robinson已经被恢复  
  195. [oracle@node1 ~]$ ./query_t2.sh   
  196.   
  197. ID         DT  
  198. ---------- --------------------  
  199. Robinson   20130705 10:08:15  
  200.   
  201. [oracle@node1 ~]$ exit  
  202. exit  
  203. host command complete  
  204.   
  205. -->新的incarnation已经被产生,为3  
  206. RMAN> list incarnation;  
  207.   
  208. List of Database Incarnations  
  209. DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time  
  210. ------- ------- -------- ---------------- --- ---------- ----------  
  211. 1       1       ORADB    2557712192       PARENT  1          20090813 23:00:48  
  212. 2       2       ORADB    2557712192       PARENT  754488     20130111 17:37:07  
  213. 3       3       ORADB    2557712192       CURRENT 1365530    20130705 10:37:15  
  214.   
  215. b、基于SCN的不完全恢复  
  216. RMAN> shutdown immediate;  
  217. RMAN> startup mount;  
  218. RMAN> reset database to incarnation 2;   --->在此需要reset incarnation  
  219. database reset to incarnation 2  
  220.   
  221. RMAN> run{  
  222. 2> set until scn 1365679;  
  223. 3> restore database;  
  224. 4> recover database;  
  225. 5> alter database open resetlogs;}  
  226.   
  227. executing command: SET until clause  
  228.   
  229. Starting restore at 20130705 11:01:14  
  230. allocated channel: ORA_DISK_1  
  231. channel ORA_DISK_1: SID=25 device type=DISK  
  232.   
  233. channel ORA_DISK_1: starting datafile backup set restore  
  234.            ......................  
  235. channel ORA_DISK_1: restored backup piece 1  
  236. channel ORA_DISK_1: restore complete, elapsed time: 00:00:55  
  237. Finished restore at 20130705 11:03:05  
  238.   
  239. Starting recover at 20130705 11:03:06  
  240. using channel ORA_DISK_1  
  241.   
  242. starting media recovery  
  243.   
  244. archived log for thread 1 with sequence 27 is already on disk as file /u02/DB/oradb/arch/2013_07_05/o1_mf_1_27_8xd9c0f0_.arc  
  245.                  .............................  
  246. archived log for thread 1 with sequence 31 is already on disk as file /u02/DB/oradb/arch/2013_07_05/o1_mf_1_31_8xdcg1wc_.arc  
  247. archived log file name=/u02/DB/oradb/arch/2013_07_05/o1_mf_1_27_8xd9c0f0_.arc thread=1 sequence=27  
  248. archived log file name=/u02/DB/oradb/arch/2013_07_05/o1_mf_1_28_8xdbcrht_.arc thread=1 sequence=28  
  249. archived log file name=/u02/DB/oradb/arch/2013_07_05/o1_mf_1_29_8xdbnqx9_.arc thread=1 sequence=29  
  250. archived log file name=/u02/DB/oradb/arch/2013_07_05/o1_mf_1_30_8xdbv338_.arc thread=1 sequence=30  --->该日志包含记录Jackson   
  251. archived log file name=/u02/DB/oradb/arch/2013_07_05/o1_mf_1_31_8xdcg1wc_.arc thread=1 sequence=31    
  252. media recovery complete, elapsed time: 00:00:10                               --->此时apply到了31(不包含sequence 31的内容)  
  253. Finished recover at 20130705 11:03:19  
  254.   
  255. database opened  
  256.   
  257. RMAN> host;  
  258.   
  259. -->验证结果,记录Jackson已经被恢复  
  260. [oracle@node1 ~]$ ./query_t2.sh   
  261.   
  262. ID         DT  
  263. ---------- --------------------  
  264. Robinson   20130705 10:08:15  
  265. Jackson    20130705 10:11:27  
文章標籤
全站熱搜
創作者介紹
創作者 to52016 的頭像
to52016

Eason [資料科學//Python學習/資料庫] & [拍片&剪片]

to52016 發表在 痞客邦 留言(0) 人氣(31)