oracle 基於使用者管理的不完全恢復
轉:
http://blog.csdn.net/leshami/article/details/7909887
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)資料庫,併產生一個新的incarnation
檢查資料庫是否恢復到正確的時間點,也就是能否找到所需的資料,如果恢復的時間點有誤,需要重置資料庫incarnation進行再次恢復
本文中的示例為便於演示,沒有在恢復前備份故障資料,也沒有在resetlog之後進行備份
注:Oracle 10g中已經可以在 resetlogs 之後不備份資料庫,恢復的時候能夠穿越resetlogs
5、不完全介質恢復的幾種型別
基於時間的恢復(Time-based recovery) 將資料恢復到指定的時間點
使用者控制的恢復(Cancel-based
recovery) 當使用者提交CANCEL後停止恢復(此選項在使用RMAN時無效)
基於SCN 的恢復(Change-based recovery) 將資料恢復到指定的SCN
按重做日誌序號恢復(Log sequence
recovery)將資料恢復到指定的重做日誌序號(僅使用RMAN時有效)
二、演示基於使用者管理的不完全恢復
[sql] view plaincopyprint?
1. --1、until time 恢復(恢復到指定時間點)
2.
3. sys@SYBO2SZ> conn / as sysdba
4. Connected.
5. sys@SYBO2SZ> archive log list; -->當前資料庫處於歸檔模式
6. Database log mode Archive Mode
7. Automatic archival Enabled
8. Archive destination /u02/database/SYBO2SZ/archive/
9. Oldest online log sequence 0
10. Next log sequence to archive 1
11. Current log sequence 1
12.
13. sys@SYBO2SZ> @db_hot_bak -->對資料庫進行熱備份
14. ho cp /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak
15. ho cp /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak
16. ho cp /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak
17. ho cp /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ2.dbf /u02/database/SYBO2SZ/backup/hotbak
18. ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_system_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
19. ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_account_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
20. ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_stock_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
21. ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_stock_l_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak
22.
23. sys@SYBO2SZ> set time on;
24. 12:40:07 sys@SYBO2SZ> create table dept as select * from scott.dept;
25.
26. 12:40:31 sys@SYBO2SZ> create table emp as select * from scott.emp;
27.
28. 12:40:41 sys@SYBO2SZ>
29. 12:40:55 sys@SYBO2SZ> truncate table emp; -->對錶emp進行truncate
30.
31. Table truncated.
32.
33. 12:41:02 sys@SYBO2SZ> insert into dept select 50,'DEV','SZ' from dual; -->為表dept新增兩條記錄並提交
34.
35. 12:41:14 sys@SYBO2SZ> insert into dept select 60,'HR','GZ' from dual;
36.
37. 12:41:19 sys@SYBO2SZ> commit;
38.
39. Commit complete.
40.
41. 12:41:22 sys@SYBO2SZ> alter system checkpoint; -->執行檢查點程式以寫入日誌
42.
43. System altered.
44.
45. 12:41:31 sys@SYBO2SZ> shutdown immediate; -->關閉資料庫
46.
47. 12:42:25 sys@SYBO2SZ> startup mount; -->啟動資料庫到mount狀態
48. ORACLE instance started.
49.
50. Total System Global Area 599785472 bytes
51. Fixed Size 2074568 bytes
52. Variable Size 213911608 bytes
53. Database Buffers 377487360 bytes
54. Redo Buffers 6311936 bytes
55. Database mounted. -->下面將備份的資料進行還原,由於並非所有資料檔案位於相同路徑,因此進行多次cp
56. 12:42:36 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/.
57.
58. 12:42:57 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.
59.
60. 12:43:24 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.
61.
62. 12:43:50 sys@SYBO2SZ> recover database until time '2012-08-22:12:40:55'; -->使用 until time 恢復到指定時間點
63. Media recovery complete.
64. 12:44:07 sys@SYBO2SZ> alter database open resetlogs; -->介質分恢復成功之後,resetlog方式開啟資料庫
65.
66. Database altered.
67.
68. 12:44:20 sys@SYBO2SZ> select count(*) from emp; -->emp表被成功恢復
69.
70. COUNT(*)
71. ----------
72. 14
73.
74. 12:44:28 sys@SYBO2SZ> select * from dept; -->由於恢復時間點在插入新記錄之前,因此新記錄丟失
75.
76. DEPTNO DNAME LOC
77. ---------- -------------- -------------
78. 10 ACCOUNTING NEW YORK
79. 20 RESEARCH DALLAS
80. 30 SALES CHICAGO
81. 40 OPERATIONS BOSTON
82.
83. 4 rows selected.
84.
85. --2、unitl scn 恢復(基於系統改變號的恢復)
86.
87. sys@SYBO2SZ> @db_hot_bak -->熱備資料庫
88.
89. sys@SYBO2SZ> select * from dept;
90.
91. DEPTNO DNAME LOC
92. ---------- -------------- -------------
93. 10 ACCOUNTING NEW YORK
94. 20 RESEARCH DALLAS
95. 30 SALES CHICAGO
96. 40 OPERATIONS BOSTON
97.
98. 4 rows selected.
99.
100. sys@SYBO2SZ> insert into dept select 50,'DEV','SZ' from dual; -->為表dept新增記錄
101.
102. 1 row created.
103.
104. sys@SYBO2SZ> commit;
105.
106. Commit complete.
107.
108. sys@SYBO2SZ> select current_scn from v$database; -->檢視當前SCN以便後續恢復使用
109.
110. CURRENT_SCN
111. -----------
112. 471613
113.
114. sys@SYBO2SZ> insert into dept select 60,'HR','GZ' from dual; -->再次為表dept新增記錄,以便檢視恢復後是否丟失
115.
116. sys@SYBO2SZ> commit;
117.
118. Commit complete.
119.
120. sys@SYBO2SZ> delete from emp where deptno=10; -->刪除表emp上deptno=10的記錄
121.
122. 3 rows deleted.
123.
124. sys@SYBO2SZ> commit;
125.
126. Commit complete.
127.
128. sys@SYBO2SZ> alter system checkpoint; -->執行檢查點程式
129.
130. System altered.
131.
132. sys@SYBO2SZ> shutdown immediate;
133.
134. sys@SYBO2SZ> startup mount;
135. ORACLE instance started.
136.
137. Total System Global Area 599785472 bytes
138. Fixed Size 2074568 bytes
139. Variable Size 218105912 bytes
140. Database Buffers 373293056 bytes
141. Redo Buffers 6311936 bytes
142. Database mounted.
143.
144. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/. -->還原資料庫
145.
146. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.
147.
148. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.
149.
150. sys@SYBO2SZ> recover database until change 471613 -->基於 SCN 恢復資料庫
151. Media recovery complete.
152. sys@SYBO2SZ> alter database open resetlogs; -->使用resetlog方式開啟資料庫
153.
154. Database altered.
155.
156. sys@SYBO2SZ> select * from dept; -->SCN之後的操作丟失
157.
158. DEPTNO DNAME LOC
159. ---------- -------------- -------------
160. 10 ACCOUNTING NEW YORK
161. 20 RESEARCH DALLAS
162. 30 SALES CHICAGO
163. 40 OPERATIONS BOSTON
164. 50 DEV SZ
165.
166. 5 rows selected.
167.
168. --3、until cancel 恢復(基於放棄的恢復)
169.
170. --> Author: Robinson Cheng --> Blog: http://blog.csdn.net/robinson_0612
171. sys@SYBO2SZ> @db_hot_bak -->熱備資料庫
172. sys@SYBO2SZ> select * from dept;
173.
174. DEPTNO DNAME LOC
175. ---------- -------------- -------------
176. 10 ACCOUNTING NEW YORK
177. 20 RESEARCH DALLAS
178. 30 SALES CHICAGO
179. 40 OPERATIONS BOSTON
180. 50 DEV SZ
181.
182. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive -->當前已經存在的歸檔日誌
183. total 348K
184. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
185. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
186. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
187.
188. sys@SYBO2SZ> alter system switch logfile; -->切換日誌
189.
190. System altered.
191.
192. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive -->可以看到新增了arch_792003491_1_4.arc
193. total 416K
194. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
195. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
196. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
197. -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc
198.
199. sys@SYBO2SZ> insert into dept select 60,'HR','SHANGHAI' from dual;
200.
201. sys@SYBO2SZ> insert into dept select 70,'INFRA','HONGKONG' from dual;
202.
203. sys@SYBO2SZ> commit;
204.
205. Commit complete.
206.
207. sys@SYBO2SZ> alter system checkpoint; -->切換日誌
208.
209. System altered.
210.
211. sys@SYBO2SZ> alter system archive log current;
212.
213. System altered.
214.
215. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive
216. total 420K
217. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
218. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
219. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
220. -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc
221. -rw-r----- 1 oracle oinstall 2.5K 2012-08-22 17:07 arch_792003491_1_5.arc
222.
223. sys@SYBO2SZ> insert into dept select 80,'MARKET','BEIJING' from dual;
224.
225. sys@SYBO2SZ> commit;
226.
227. Commit complete.
228.
229. sys@SYBO2SZ> alter system archive log current;
230.
231. System altered.
232.
233. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive -->系統又新增了幾個歸檔日誌
234. total 424K
235. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
236. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
237. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
238. -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc
239. -rw-r----- 1 oracle oinstall 2.5K 2012-08-22 17:07 arch_792003491_1_5.arc
240. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:08 arch_792003491_1_6.arc
241.
242. sys@SYBO2SZ> ho strings /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc | grep HONGKONG -->新記錄已存在於歸檔日誌
243. HONGKONG
244.
245. sys@SYBO2SZ> ho strings /u02/database/SYBO2SZ/archive/arch_792003491_1_6.arc | grep BEIJING
246. BEIJING
247.
248. sys@SYBO2SZ> ho rm /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc -->模擬部分歸檔日誌丟失
249.
250. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive
251. total 420K
252. -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc
253. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc
254. -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc
255. -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc
256. -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:08 arch_792003491_1_6.arc
257.
258. sys@SYBO2SZ> shutdown immediate;
259.
260. sys@SYBO2SZ> startup mount;
261. ORACLE instance started.
262.
263. Total System Global Area 599785472 bytes
264. Fixed Size 2074568 bytes
265. Variable Size 243271736 bytes
266. Database Buffers 348127232 bytes
267. Redo Buffers 6311936 bytes
268. Database mounted.
269. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/. -->還原資料庫
270.
271. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.
272.
273. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.
274.
275. sys@SYBO2SZ> recover database until cancel; --> 基於 cancel 恢復資料庫
276. ORA-00279: change 494124 generated at 08/22/2012 17:02:30 needed for thread 1
277. ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc
278. ORA-00280: change 494124 for thread 1 is in sequence #4
279.
280. Specify log: {
281. /u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc -->恢復到尾數為4的歸檔日誌
282. ORA-00279: change 494189 generated at 08/22/2012 17:04:46 needed for thread 1
283. ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc
284. ORA-00280: change 494189 for thread 1 is in sequence #5
285. ORA-00278: log file '/u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc' no longer needed for this recovery
286.
287. Specify log: {
288. cancel -->第5個日誌檔案丟失,輸入cancel
289. Media recovery cancelled.
290. sys@SYBO2SZ> alter database open resetlogs; --> resetlogs 方式開啟資料庫
291.
292. Database altered.
293.
294. sys@SYBO2SZ> select * from dept; -->由於歸檔日誌5丟失,因此後續所有操作的資料丟失
295.
296. DEPTNO DNAME LOC
297. ---------- -------------- -------------
298. 10 ACCOUNTING NEW YORK
299. 20 RESEARCH DALLAS
300. 30 SALES CHICAGO
301. 40 OPERATIONS BOSTON
302. 50 DEV SZ
303.
304. 5 rows selected.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29532781/viewspace-1174710/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle基於scn的不完全恢復Oracle
- Oracle 基於使用者管理恢復的處理Oracle
- oracle基於時間點的不完全恢復Oracle
- Oracle中使用者管理的不完全恢復簡介(轉)Oracle
- Oracle 基於 RMAN 的不完全恢復(incomplete recovery by RMAN)Oracle
- ORACLE資料庫基於時間點的不完全恢復Oracle資料庫
- Oracle 不完全恢復Oracle
- 備份與恢復:用user模式基於日誌序列的不完全恢復模式
- 備份與恢復:用rman方式基於日誌序列的不完全恢復
- Oracle 12c PDB基於時間點的不完全恢復記錄Oracle
- oracle實驗記錄 (恢復-不完全恢復)Oracle
- 小記基於控制檔案的scn不完全恢復
- Oracle 11g 主動選擇的不完全恢復,基於SCN的,DML操作Oracle
- oracle基於SCN增量恢復Oracle
- Oracle基於時間點的恢復Oracle
- Oracle 11g 主動選擇的不完全恢復,基於時間,DDL操作Oracle
- oracle資料庫不完全恢復Oracle資料庫
- 基於時間執行資料庫不完全恢復資料庫
- Oracle Rman 資料庫的不完全恢復Oracle資料庫
- 使用RMAN的不完全恢復-基於時間/SCN/日誌序列
- oracle 閃回基於時間的恢復Oracle
- Oracle 11g 手工不完全恢復Oracle
- 關於不完全恢復的一些思考
- Oracle 11g 手工不完全恢復 場景1:被動的不完全恢復(日誌缺失)Oracle
- 記錄一次ORACLE的不完全恢復Oracle
- [裝載]oracle 無歸檔的不完全恢復Oracle
- 【Mysql】完全恢復與不完全恢復MySql
- oracle實驗記錄 (恢復-rman基於控制檔案的恢復)Oracle
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- oracle基於歸檔的增量異地恢復Oracle
- 【恢復】基於使用者管理的熱備份對非系統表空間的損壞進行恢復
- Oracle 不完全恢復遇到的ORA-600錯誤Oracle
- Backup And Recovery User's Guide-執行基於時間的或基於改變的不完全恢復GUIIDE
- Oracle冷備份級冷備份的不完全恢復Oracle
- 【備份與恢復】使用Flashback Database(不完全恢復)Database
- RMAN全庫【完全恢復/不完全恢復brief version】
- 基於tsm的oracle資料庫備份及恢復Oracle資料庫
- 如何進行Oracle資料庫不完全恢復RBOracle資料庫