Oracle基于用户管理的不完全恢复

Oracle 基于用户管理的不完全恢复

分类: Oracle 备份恢复 528人阅读 评论(1) 收藏 举报

Oracle 数据恢复从恢复类型来说,抛开具体的文件,总共可分为两大类型的恢复,一是完全恢复,一个是不完全恢复。其实,熟悉了Oracle
体系结构之后,对于Oracle恢复就会有一个总体的概念。因为Oracle组成的外围部分,主要由不同的文件来组成,每种不同类型的文件有不同的
作用,因此只要了解了其作用,更利于了解与掌握Oralce数据库的备份与恢复。言归正传,完全恢复即是把数据库恢复到最新的SCN,出故障前
的那一刻,是无损恢复。而不完全恢复即是有损恢复,多用于恢复用户误操作,归档日志丢失等情形。本文主要描述基于用户管理的不完全恢复。

一、不完全恢复特性

1、不完全恢复

不完全恢复仅仅是将数据恢复到某一个特定的时间点或特定的SCN,而不是当前时间点。不完全恢复会影响整个数据库,需要在MOUNT状
态下进行。在不完全恢复成功之后,通常需要使用 resetlogs 选项来打开数据库。当使用resetlogs后,SCN 计数器不会被重置,原来的日
志序号 log sequence 会结束,从新开始新的日志序列号。在Oracle里称之为产生一个新的incarnation。同时Oracle还会重置联机重做日
志内容,因此resetlogs之后建议重新全备数据库。

2、不完全恢复的情形

介质故障(media failure)导致部分或全部联机重做日志(online redo log)损坏
用户操作失误(user error)导致数据丢失,例如,用户由于疏忽而移除了表,提交了无效的数据到表
由于归档重做日志(archived redo log)丢失而无法进行完全恢复(complete recovery)
当前控制文件(control file)丢失,必须使用备份的控制文件打开(open)数据库

3、不完全恢复的步骤

关闭数据库并备份数据库(以防止恢复失败)
启动数据库到mount 状态
还原所有数据文件,同时可以选择还原控制文件(注意需要还原所有数据文件,而不仅仅是受损文件)
将数据库恢复至某个时间点、序列、或系统改变号
使用RESETLOGS关键字打开数据库

4、注意

不完全恢复的前提条件是Oracl数据库够到mount状态,即参数文件,控制文件
在做不完全恢复前建议在恢复前后做一次备份,避免恢复失败导致不必要的损失
不完全恢复完成后,建议不要直接使用OPEN RESETLOGS 命令以读/写模式打开(open)数据库,而应先以只读模式打开数据库,并检查是否已
将数据库恢复到正确的时间点。如果恢复的时间点有误,在没有使用OPEN RESETLOGS命令的情况下,重新执行恢复操作相对简单。
对于恢复结果早于指定的时间点,只需重新执行恢复操作。如果恢复结果超过了指定的时间点,则应再次还原数据库并重新进行恢复。
本文中的示例为便于演示,没有在恢复前备份故障数据,也没有在resetlog之后进行备份。
注:Oracle 10g中已经可以在 resetlogs 之后不备份数据库,恢复的时候能够穿越resetlogs

5、不完全介质恢复的几种类型

基于时间的恢复(Time-based recovery) 将数据恢复到指定的时间点
用户控制的恢复(Cancel-based recovery) 当用户提交CANCEL后停止恢复(此选项在使用RMAN时无效)
基于SCN 的恢复(Change-based recovery) 将数据恢复到指定的SCN
按重做日志序号恢复(Log sequence recovery)将数据恢复到指定的重做日志序号(仅使用RMAN时有效)

二、演示基于用户管理的不完全恢复

  1. --1、until time 恢复(恢复到指定时间点)
  2. sys@SYBO2SZ> conn / as sysdba
  3. Connected.
  4. sys@SYBO2SZ> archive log list; -->当前数据库处于归档模式
  5. Database log mode Archive Mode
  6. Automatic archival Enabled
  7. Archive destination /u02/database/SYBO2SZ/archive/
  8. Oldest online log sequence 0
  9. Next log sequence to archive 1
  10. Current log sequence 1
  11. sys@SYBO2SZ> @db_hot_bak -->对数据库进行热备份
  12. ho cp /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak
  13. ho cp /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak
  14. ho cp /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak
  15. ho cp /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ2.dbf /u02/database/SYBO2SZ/backup/hotbak
  16. ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_system_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
  17. ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_account_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
  18. ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_stock_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
  19. ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_stock_l_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
  20. sys@SYBO2SZ> set time on;
  21. 12:40:07 sys@SYBO2SZ> create table dept as select * from scott.dept;
  22. 12:40:31 sys@SYBO2SZ> create table emp as select * from scott.emp;
  23. 12:40:41 sys@SYBO2SZ>
  24. 12:40:55 sys@SYBO2SZ> truncate table emp; -->对表emp进行truncate
  25. Table truncated.
  26. 12:41:02 sys@SYBO2SZ> insert into dept select 50,'DEV','SZ' from dual; -->为表dept新增两条记录并提交
  27. 12:41:14 sys@SYBO2SZ> insert into dept select 60,'HR','GZ' from dual;
  28. 12:41:19 sys@SYBO2SZ> commit;
  29. Commit complete.
  30. 12:41:22 sys@SYBO2SZ> alter system checkpoint; -->执行检查点进程以写入日志
  31. System altered.
  32. 12:41:31 sys@SYBO2SZ> shutdown immediate; -->关闭数据库
  33. 12:42:25 sys@SYBO2SZ> startup mount; -->启动数据库到mount状态
  34. ORACLE instance started.
  35. Total System Global Area 599785472 bytes
  36. Fixed Size 2074568 bytes
  37. Variable Size 213911608 bytes
  38. Database Buffers 377487360 bytes
  39. Redo Buffers 6311936 bytes
  40. Database mounted. -->下面将备份的数据进行还原,由于并非所有数据文件位于相同路径,因此进行多次cp
  41. 12:42:36 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/.
  42. 12:42:57 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.
  43. 12:43:24 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.
  44. 12:43:50 sys@SYBO2SZ> recover database until time '2012-08-22:12:40:55'; -->使用 until time 恢复到指定时间点
  45. Media recovery complete.
  46. 12:44:07 sys@SYBO2SZ> alter database open resetlogs; -->介质分恢复成功之后,resetlog方式打开数据库
  47. Database altered.
  48. 12:44:20 sys@SYBO2SZ> select count(*) from emp; -->emp表被成功恢复
  49. COUNT(*)
  50. ----------
  51. 14
  52. 12:44:28 sys@SYBO2SZ> select * from dept; -->由于恢复时间点在插入新记录之前,因此新记录丢失
  53. DEPTNO DNAME LOC
  54. ---------- -------------- -------------
  55. 10 ACCOUNTING NEW YORK
  56. 20 RESEARCH DALLAS
  57. 30 SALES CHICAGO
  58. 40 OPERATIONS BOSTON
  59. 4 rows selected.
  60. --2、unitl scn 恢复(基于系统改变号的恢复)
  61. sys@SYBO2SZ> @db_hot_bak -->热备数据库
  62. sys@SYBO2SZ> select * from dept;
  63. DEPTNO DNAME LOC
  64. ---------- -------------- -------------
  65. 10 ACCOUNTING NEW YORK
  66. 20 RESEARCH DALLAS
  67. 30 SALES CHICAGO
  68. 40 OPERATIONS BOSTON
  69. 4 rows selected.
  70. sys@SYBO2SZ> insert into dept select 50,'DEV','SZ' from dual; -->为表dept新增记录
  71. 1 row created.
  72. sys@SYBO2SZ> commit;
  73. Commit complete.
  74. sys@SYBO2SZ> select current_scn from v$database; -->查看当前SCN以便后续恢复使用
  75. CURRENT_SCN
  76. -----------
  77. 471613
  78. sys@SYBO2SZ> insert into dept select 60,'HR','GZ' from dual; -->再次为表dept新增记录,以便查看恢复后是否丢失
  79. sys@SYBO2SZ> commit;
  80. Commit complete.
  81. sys@SYBO2SZ> delete from emp where deptno=10; -->删除表emp上deptno=10的记录
  82. 3 rows deleted.
  83. sys@SYBO2SZ> commit;
  84. Commit complete.
  85. sys@SYBO2SZ> alter system checkpoint; -->执行检查点进程
  86. System altered.
  87. sys@SYBO2SZ> shutdown immediate;
  88. sys@SYBO2SZ> startup mount;
  89. ORACLE instance started.
  90. Total System Global Area 599785472 bytes
  91. Fixed Size 2074568 bytes
  92. Variable Size 218105912 bytes
  93. Database Buffers 373293056 bytes
  94. Redo Buffers 6311936 bytes
  95. Database mounted.
  96. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/. -->还原数据库
  97. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.
  98. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.
  99. sys@SYBO2SZ> recover database until change 471613 -->基于 SCN 恢复数据库
  100. Media recovery complete.
  101. sys@SYBO2SZ> alter database open resetlogs; -->使用resetlog方式打开数据库
  102. Database altered.
  103. sys@SYBO2SZ> select * from dept; -->SCN之后的操作丢失
  104. DEPTNO DNAME LOC
  105. ---------- -------------- -------------
  106. 10 ACCOUNTING NEW YORK
  107. 20 RESEARCH DALLAS
  108. 30 SALES CHICAGO
  109. 40 OPERATIONS BOSTON
  110. 50 DEV SZ
  111. 5 rows selected.
  112. --3、until cancel 恢复(基于放弃的恢复)
  113. --> Author: Robinson Cheng --> Blog: http://blog.csdn.net/robinson_0612
  114. sys@SYBO2SZ> @db_hot_bak -->热备数据库
  115. sys@SYBO2SZ> select * from dept;
  116. DEPTNO DNAME LOC
  117. ---------- -------------- -------------
  118. 10 ACCOUNTING NEW YORK
  119. 20 RESEARCH DALLAS
  120. 30 SALES CHICAGO
  121. 40 OPERATIONS BOSTON
  122. 50 DEV SZ
  123. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive -->当前已经存在的归档日志
  124. total 348K
  125. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
  126. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
  127. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
  128. sys@SYBO2SZ> alter system switch logfile; -->切换日志
  129. System altered.
  130. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive -->可以看到新增了arch_792003491_1_4.arc
  131. total 416K
  132. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
  133. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
  134. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
  135. -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc
  136. sys@SYBO2SZ> insert into dept select 60,'HR','SHANGHAI' from dual;
  137. sys@SYBO2SZ> insert into dept select 70,'INFRA','HONGKONG' from dual;
  138. sys@SYBO2SZ> commit;
  139. Commit complete.
  140. sys@SYBO2SZ> alter system checkpoint; -->切换日志
  141. System altered.
  142. sys@SYBO2SZ> alter system archive log current;
  143. System altered.
  144. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive
  145. total 420K
  146. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
  147. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
  148. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
  149. -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc
  150. -rw-r----- 1 oracle oinstall 2.5K 2012-08-22 17:07 arch_792003491_1_5.arc
  151. sys@SYBO2SZ> insert into dept select 80,'MARKET','BEIJING' from dual;
  152. sys@SYBO2SZ> commit;
  153. Commit complete.
  154. sys@SYBO2SZ> alter system archive log current;
  155. System altered.
  156. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive -->系统又新增了几个归档日志
  157. total 424K
  158. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
  159. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
  160. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
  161. -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc
  162. -rw-r----- 1 oracle oinstall 2.5K 2012-08-22 17:07 arch_792003491_1_5.arc
  163. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:08 arch_792003491_1_6.arc
  164. sys@SYBO2SZ> ho strings /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc | grep HONGKONG -->新记录已存在于归档日志
  165. HONGKONG
  166. sys@SYBO2SZ> ho strings /u02/database/SYBO2SZ/archive/arch_792003491_1_6.arc | grep BEIJING
  167. BEIJING
  168. sys@SYBO2SZ> ho rm /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc -->模拟部分归档日志丢失
  169. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive
  170. total 420K
  171. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
  172. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
  173. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
  174. -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc
  175. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:08 arch_792003491_1_6.arc
  176. sys@SYBO2SZ> shutdown immediate;
  177. sys@SYBO2SZ> startup mount;
  178. ORACLE instance started.
  179. Total System Global Area 599785472 bytes
  180. Fixed Size 2074568 bytes
  181. Variable Size 243271736 bytes
  182. Database Buffers 348127232 bytes
  183. Redo Buffers 6311936 bytes
  184. Database mounted.
  185. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/. -->还原数据库
  186. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.
  187. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.
  188. sys@SYBO2SZ> recover database until cancel; --> 基于 cancel 恢复数据库
  189. ORA-00279: change 494124 generated at 08/22/2012 17:02:30 needed for thread 1
  190. ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc
  191. ORA-00280: change 494124 for thread 1 is in sequence #4
  192. Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
  193. /u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc -->恢复到尾数为4的归档日志
  194. ORA-00279: change 494189 generated at 08/22/2012 17:04:46 needed for thread 1
  195. ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc
  196. ORA-00280: change 494189 for thread 1 is in sequence #5
  197. ORA-00278: log file '/u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc' no longer needed for this recovery
  198. Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
  199. cancel -->第5个日志文件丢失,输入cancel
  200. Media recovery cancelled.
  201. sys@SYBO2SZ> alter database open resetlogs; --> resetlogs 方式打开数据库
  202. Database altered.
  203. sys@SYBO2SZ> select * from dept; -->由于归档日志5丢失,因此后续所有操作的数据丢失
  204. DEPTNO DNAME LOC
  205. ---------- -------------- -------------
  206. 10 ACCOUNTING NEW YORK
  207. 20 RESEARCH DALLAS
  208. 30 SALES CHICAGO
  209. 40 OPERATIONS BOSTON
  210. 50 DEV SZ
  211. 5 rows selected.
--1、until time 恢复(恢复到指定时间点)

sys@SYBO2SZ> conn / as sysdba
Connected.
sys@SYBO2SZ> archive log list;  -->当前数据库处于归档模式
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u02/database/SYBO2SZ/archive/
Oldest online log sequence     0
Next log sequence to archive   1
Current log sequence           1

sys@SYBO2SZ> @db_hot_bak       -->对数据库进行热备份
ho cp /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak
ho cp /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak
ho cp /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak
ho cp /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ2.dbf /u02/database/SYBO2SZ/backup/hotbak
ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_system_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_account_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_stock_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_stock_l_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak

sys@SYBO2SZ> set time on;
12:40:07 sys@SYBO2SZ> create table dept as select * from scott.dept;

12:40:31 sys@SYBO2SZ> create table emp as select * from scott.emp;

12:40:41 sys@SYBO2SZ>   
12:40:55 sys@SYBO2SZ> truncate table emp;    -->对表emp进行truncate

Table truncated.

12:41:02 sys@SYBO2SZ> insert into dept select 50,'DEV','SZ' from dual;  -->为表dept新增两条记录并提交

12:41:14 sys@SYBO2SZ> insert into dept select 60,'HR','GZ' from dual;

12:41:19 sys@SYBO2SZ> commit;

Commit complete.

12:41:22 sys@SYBO2SZ> alter system checkpoint;   -->执行检查点进程以写入日志

System altered.

12:41:31 sys@SYBO2SZ> shutdown immediate;        -->关闭数据库

12:42:25 sys@SYBO2SZ> startup mount;             -->启动数据库到mount状态 
ORACLE instance started.

Total System Global Area  599785472 bytes
Fixed Size                  2074568 bytes
Variable Size             213911608 bytes
Database Buffers          377487360 bytes
Redo Buffers                6311936 bytes
Database mounted.                          -->下面将备份的数据进行还原,由于并非所有数据文件位于相同路径,因此进行多次cp    
12:42:36 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/.

12:42:57 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.

12:43:24 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.

12:43:50 sys@SYBO2SZ> recover database until time '2012-08-22:12:40:55';   -->使用 until time 恢复到指定时间点
Media recovery complete.
12:44:07 sys@SYBO2SZ> alter database open resetlogs;                       -->介质分恢复成功之后,resetlog方式打开数据库 

Database altered.

12:44:20 sys@SYBO2SZ> select count(*) from emp;                            -->emp表被成功恢复    

  COUNT(*)
----------
        14

12:44:28 sys@SYBO2SZ> select * from dept;                                  -->由于恢复时间点在插入新记录之前,因此新记录丢失

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

4 rows selected.

--2、unitl scn 恢复(基于系统改变号的恢复)

sys@SYBO2SZ> @db_hot_bak              -->热备数据库

sys@SYBO2SZ> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

4 rows selected.

sys@SYBO2SZ> insert into dept select 50,'DEV','SZ' from dual;   -->为表dept新增记录

1 row created.

sys@SYBO2SZ> commit;

Commit complete.

sys@SYBO2SZ> select current_scn from v$database;   -->查看当前SCN以便后续恢复使用

CURRENT_SCN
-----------
     471613

sys@SYBO2SZ> insert into dept select 60,'HR','GZ' from dual;   -->再次为表dept新增记录,以便查看恢复后是否丢失

sys@SYBO2SZ> commit;

Commit complete.

sys@SYBO2SZ> delete from emp where deptno=10;      -->删除表emp上deptno=10的记录

3 rows deleted.

sys@SYBO2SZ> commit;

Commit complete.

sys@SYBO2SZ> alter system checkpoint;             -->执行检查点进程

System altered.

sys@SYBO2SZ> shutdown immediate;

sys@SYBO2SZ> startup mount;
ORACLE instance started.

Total System Global Area  599785472 bytes
Fixed Size                  2074568 bytes
Variable Size             218105912 bytes
Database Buffers          373293056 bytes
Redo Buffers                6311936 bytes
Database mounted.

sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/.   -->还原数据库

sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.

sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.

sys@SYBO2SZ> recover database until change 471613     -->基于 SCN 恢复数据库
Media recovery complete.
sys@SYBO2SZ> alter database open resetlogs;           -->使用resetlog方式打开数据库

Database altered.

sys@SYBO2SZ> select * from dept;                      -->SCN之后的操作丢失

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        50 DEV            SZ

5 rows selected.

--3、until cancel 恢复(基于放弃的恢复)

--> Author: Robinson Cheng --> Blog: http://blog.csdn.net/robinson_0612 
sys@SYBO2SZ> @db_hot_bak           -->热备数据库
sys@SYBO2SZ> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        50 DEV            SZ

sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive    -->当前已经存在的归档日志
total 348K
-rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
-rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
-rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc

sys@SYBO2SZ> alter system switch logfile;                -->切换日志

System altered.

sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive   -->可以看到新增了arch_792003491_1_4.arc
total 416K
-rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
-rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
-rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
-rw-r----- 1 oracle oinstall  66K 2012-08-22 17:04 arch_792003491_1_4.arc

sys@SYBO2SZ> insert into dept select 60,'HR','SHANGHAI' from dual;

sys@SYBO2SZ> insert into dept select 70,'INFRA','HONGKONG' from dual;

sys@SYBO2SZ> commit;

Commit complete.

sys@SYBO2SZ> alter system checkpoint;    -->切换日志

System altered.

sys@SYBO2SZ> alter system archive log current;

System altered.

sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive
total 420K
-rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
-rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
-rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
-rw-r----- 1 oracle oinstall  66K 2012-08-22 17:04 arch_792003491_1_4.arc
-rw-r----- 1 oracle oinstall 2.5K 2012-08-22 17:07 arch_792003491_1_5.arc

sys@SYBO2SZ> insert into dept select 80,'MARKET','BEIJING' from dual;

sys@SYBO2SZ> commit;

Commit complete.

sys@SYBO2SZ> alter system archive log current;

System altered.

sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive   -->系统又新增了几个归档日志
total 424K
-rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
-rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
-rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
-rw-r----- 1 oracle oinstall  66K 2012-08-22 17:04 arch_792003491_1_4.arc
-rw-r----- 1 oracle oinstall 2.5K 2012-08-22 17:07 arch_792003491_1_5.arc
-rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:08 arch_792003491_1_6.arc

sys@SYBO2SZ> ho strings /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc | grep HONGKONG  -->新记录已存在于归档日志
HONGKONG

sys@SYBO2SZ> ho strings /u02/database/SYBO2SZ/archive/arch_792003491_1_6.arc | grep BEIJING
BEIJING

sys@SYBO2SZ> ho rm /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc     -->模拟部分归档日志丢失

sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive
total 420K
-rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
-rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
-rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
-rw-r----- 1 oracle oinstall  66K 2012-08-22 17:04 arch_792003491_1_4.arc
-rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:08 arch_792003491_1_6.arc

sys@SYBO2SZ> shutdown immediate;

sys@SYBO2SZ> startup mount;
ORACLE instance started.

Total System Global Area  599785472 bytes
Fixed Size                  2074568 bytes
Variable Size             243271736 bytes
Database Buffers          348127232 bytes
Redo Buffers                6311936 bytes
Database mounted.
sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/.  -->还原数据库

sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.

sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.

sys@SYBO2SZ> recover database until cancel;     --> 基于 cancel 恢复数据库
ORA-00279: change 494124 generated at 08/22/2012 17:02:30 needed for thread 1
ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc
ORA-00280: change 494124 for thread 1 is in sequence #4

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc     -->恢复到尾数为4的归档日志
ORA-00279: change 494189 generated at 08/22/2012 17:04:46 needed for thread 1
ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc
ORA-00280: change 494189 for thread 1 is in sequence #5
ORA-00278: log file '/u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc' no longer needed for this recovery

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel                                                 -->第5个日志文件丢失,输入cancel
Media recovery cancelled.
sys@SYBO2SZ> alter database open resetlogs;            --> resetlogs 方式打开数据库

Database altered.

sys@SYBO2SZ> select * from dept;                      -->由于归档日志5丢失,因此后续所有操作的数据丢失

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        50 DEV            SZ

5 rows selected.        

三、更多参考

基于用管理的备份备份请参

Oracle 冷备份

Oracle 热备份

Oracle 备份恢复概念

Oracle 实例恢复

Oracle 基于用户管理恢复的处理(详细描述了介及其)

SYSTEM 表空间管理及备份恢复

SYSAUX表空间管理及恢复

RMAN的备份复与管理请参

RMAN 概述及其体系结构

RMAN 配置、监控与管理

RMAN 备份详解

RMAN 还原与恢复

RMAN catalog 的创建和使用

基于catalog 创建RMAN存储脚本

基于catalog 的RMAN 备份与恢复

RMAN 备份困惑(使用plus archivelog)

ORACLE体系结构请参

Oracle 表空间与数据文件

Oracle 密码文件

Oracle 参数文件

Oracle 联机重做日志文件(ONLINE LOG FILE)

Oracle 控制文件(CONTROLFILE)

Oracle 归档日志

Oracle 回滚(ROLLBACK)和撤销(UNDO)

Oracle 数据库实例启动关闭过程

Oracle 10g SGA 的自动化管理

Oracle 实例和Oracle数据库(Oracle体系结构)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值