RMAN 滾動式不完全恢復 小實驗
本次試驗內容,通過 RMAN 的向前滾動式不完全恢復
假定的試驗環境:
hongye使用者: --> log sequence = 13 的時候建立 current_13 表,並插入13行資料;
--> 歸檔當前日誌,得到日誌序列號13;
--> log sequence = 14 的時候建立 current_14 表,並插入14行資料;
--> 歸檔當前日誌,得到日誌序列號14;
--> log sequence = 15 的時候建立 current_15 表,並插入15行資料;
--> 歸檔當前日誌,得到日誌序列號15;
預期的試驗結果: --> 不完全恢復到 sequence = 13 ,發現 current_* 表和資料都不存在;
--> 返回上一個incarnation,繼續尋找合適的還原點;
--> 不完全恢復到 sequence = 14 ,發現 current_14/15 表和資料都不存在;
--> 返回上一個incarnation,繼續尋找合適的還原點;
--> 不完全恢復到 sequence = 15 ,發現 current_15 表和資料都不存在;
--> 返回上一個incarnation,繼續尋找合適的還原點;
--> 不完全恢復到 sequence = 16 ,發現 current_* 表和資料都存在;
--> 不完全恢復完成!
試驗結論:次方式可用於不瞭解具體不完全恢復的截止位置時,作為向後探測式的還原。
1、試驗前得測試資料情況:
RMAN 中:
RMAN> list backup summary;
using target database control file instead of recovery catalog
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
1 B A A DISK 12-APR-11 1 1 NO TAG20110412T203232
2 B F A DISK 12-APR-11 1 1 NO TAG20110412T203242
3 B F A DISK 12-APR-11 1 1 NO TAG20110412T203242
4 B A A DISK 12-APR-11 1 1 NO TAG20110412T203411
以上是當前資料庫在試驗前的完全備份。
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 HONGYE 2428382369 PARENT 1 30-JUN-05
2 2 HONGYE 2428382369 CURRENT 446075 03-APR-11 --> 對應當前的 incarnation,這個非常重要!
建立試驗測試的相關標誌資料 current_13、current_14、current_15,此處略去相關步驟 . . . . . .
下面是建立完成之後的結果資料。
SQLPLUS 中:
IDLE > conn /as sysdba
Connected.
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
TABLE_NAME
------------------------------
CURRENT_15 -->對應日誌序列號13
CURRENT_13 -->對應日誌序列號14
CURRENT_14 -->對應日誌序列號15
7 rows selected.
SYS:45@hongye > select group#,sequence#, status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 14 INACTIVE
2 15 INACTIVE
3 16 CURRENT
2、首先,恢復到 sequence = 13 的時候,並檢視相關資料的恢復情況:
SQLPLUS中:
SYS:45@hongye > shutdown immediate
SYS:45@hongye > startup mount
RMAN 中執行不完全恢復:
RMAN> connect target /
connected to target database: HONGYE (DBID=2428382369, not open)
RMAN> run{
2> set until sequence 13;
3> restore database;
4> recover database;
5> }
. . . . . .
Finished recover at 12-APR-11
SQLPLUS 中檢視此次不完全恢復的情況是否和預期情況相符:
SYS:45@hongye > alter database open resetlogs;
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
no rows selected
沒有 current_* 的表和資料;
SYS:45@hongye > select group#,sequence#, status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 0 UNUSED
2 0 UNUSED
3 1 CURRENT
此時:注意到日誌已經歸零了,這是 resetlogs 的“後遺症”。
3、恢復到 sequence = 14 的時候,並檢視相關資料的恢復情況:
SQLPLUS 中:
SYS:45@hongye > shutdown immediate
SYS:45@hongye > startup mount
RMAN 中執行恢復操作:
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 HONGYE 2428382369 PARENT 1 30-JUN-05
2 2 HONGYE 2428382369 PARENT 446075 03-APR-11
3 3 HONGYE 2428382369 CURRENT 702481 12-APR-11
注意到,此時資料庫的生命期已經改變了,incarnation 換到下一個了,
將資料庫的生命期設定到2,這樣才能使用之前在生命期2中所作的備份
此時:要想繼續使用之前的備份和歸檔檔案,則必須將資料庫置於 incarnation=2 的生命週期中。
RMAN> reset database to incarnation 2;
database reset to incarnation 2
下面就可以進行不完全恢復,設定恢復的目標位置為: log sequence = 14 ;
RMAN> run{
2> set until sequence 14;
3> restore database;
4> recover database;
5> }
. . . . . .
Finished recover at 12-APR-11
SQLPLUS 中檢視恢復後的結果:
SYS:45@hongye > alter database open resetlogs;
Database altered.
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
TABLE_NAME
------------------------------
CURRENT_13
此時:表 CURRENT_13 已經被恢復了,因為current_13 表資訊的日誌記錄在 log sequence=13 的log中,
set until sequence 14,則 RMAN 會將日誌應用到 13 為止。
SYS:45@hongye > select * from hongye.current_13;
ID NAME
---------- ----------
1 name1
......
13 name13
13 rows selected.
4、恢復到 sequence = 15 的時候,並檢視相關資料的恢復情況:
SQLPLUS 中:
SYS:45@hongye > shutdown immediate
SYS:45@hongye > startup mount
RMAN 中執行恢復操作:
同樣,也需要在恢復之前,將資料庫的生命期設定到2,這樣才能使用之前在生命期2中所作的備份。
RMAN> reset database to incarnation 2;
using target database control file instead of recovery catalog
database reset to incarnation 2
RMAN> run{
2> set until sequence 15;
3> restore database;
4> recover database;
5> }
. . . . . .
Finished recover at 12-APR-11
SQLPLUS 中檢視恢復後的結果:
SYS:45@hongye > alter database open resetlogs;
Database altered.
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
TABLE_NAME
------------------------------
CURRENT_13
CURRENT_14
此時:表 CURRENT_13/14 都已經被恢復了,
因為current_13 表資訊的日誌記錄在 log sequence=13 的log中,
current_14 表資訊的日誌記錄在 log sequence=14 的log中,
set until sequence 15,則 RMAN 會將日誌應用到 14 為止。
SYS:45@hongye > select * from hongye.current_13;
ID NAME
---------- ----------
1 name1
......
13 name13
13 rows selected.
SYS:45@hongye > select * from hongye.current_14;
ID NAME
---------- ----------
1 name1
......
14 name14
14 rows selected.
5、恢復到 sequence = 16 的時候,並檢視相關資料的恢復情況:
SQLPLUS 中:
SYS:45@hongye > shutdown immediate
SYS:45@hongye > startup mount
RMAN 中執行恢復操作:
同樣,也需要在恢復之前,將資料庫的生命期設定到2,這樣才能使用之前在生命期2中所作的備份。
RMAN> reset database to incarnation 2;
using target database control file instead of recovery catalog
database reset to incarnation 2
RMAN> run{
2> set until sequence 16;
3> restore database;
4> recover database;
5> }
. . . . . .
Finished recover at 12-APR-11
SQLPLUS 中檢視恢復後的結果:
SYS:45@hongye > alter database open resetlogs;
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
TABLE_NAME
------------------------------
CURRENT_15
CURRENT_13
CURRENT_14
此時:三張表的資料全部都在,由於最晚建立的表 current_15 對應的日誌序列號是15,
而本次恢復使用的 until sequence 16 ,RMAN就會應用到 log sequence = 15之後才會停止!
SYS:45@hongye > select * from hongye.current_13;
ID NAME
---------- ----------
1 name1
......
13 name13
13 rows selected.
SYS:45@hongye > select * from hongye.current_14;
ID NAME
---------- ----------
1 name1
......
14 name14
14 rows selected.
SYS:45@hongye > select * from hongye.current_15;
ID NAME
---------- ----------
1 name1
......
15 name15
15 rows selected.
SYS:45@hongye >
假定的試驗環境:
hongye使用者: --> log sequence = 13 的時候建立 current_13 表,並插入13行資料;
--> 歸檔當前日誌,得到日誌序列號13;
--> log sequence = 14 的時候建立 current_14 表,並插入14行資料;
--> 歸檔當前日誌,得到日誌序列號14;
--> log sequence = 15 的時候建立 current_15 表,並插入15行資料;
--> 歸檔當前日誌,得到日誌序列號15;
預期的試驗結果: --> 不完全恢復到 sequence = 13 ,發現 current_* 表和資料都不存在;
--> 返回上一個incarnation,繼續尋找合適的還原點;
--> 不完全恢復到 sequence = 14 ,發現 current_14/15 表和資料都不存在;
--> 返回上一個incarnation,繼續尋找合適的還原點;
--> 不完全恢復到 sequence = 15 ,發現 current_15 表和資料都不存在;
--> 返回上一個incarnation,繼續尋找合適的還原點;
--> 不完全恢復到 sequence = 16 ,發現 current_* 表和資料都存在;
--> 不完全恢復完成!
試驗結論:次方式可用於不瞭解具體不完全恢復的截止位置時,作為向後探測式的還原。
1、試驗前得測試資料情況:
RMAN 中:
RMAN> list backup summary;
using target database control file instead of recovery catalog
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
1 B A A DISK 12-APR-11 1 1 NO TAG20110412T203232
2 B F A DISK 12-APR-11 1 1 NO TAG20110412T203242
3 B F A DISK 12-APR-11 1 1 NO TAG20110412T203242
4 B A A DISK 12-APR-11 1 1 NO TAG20110412T203411
以上是當前資料庫在試驗前的完全備份。
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 HONGYE 2428382369 PARENT 1 30-JUN-05
2 2 HONGYE 2428382369 CURRENT 446075 03-APR-11 --> 對應當前的 incarnation,這個非常重要!
建立試驗測試的相關標誌資料 current_13、current_14、current_15,此處略去相關步驟 . . . . . .
下面是建立完成之後的結果資料。
SQLPLUS 中:
IDLE > conn /as sysdba
Connected.
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
TABLE_NAME
------------------------------
CURRENT_15 -->對應日誌序列號13
CURRENT_13 -->對應日誌序列號14
CURRENT_14 -->對應日誌序列號15
7 rows selected.
SYS:45@hongye > select group#,sequence#, status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 14 INACTIVE
2 15 INACTIVE
3 16 CURRENT
2、首先,恢復到 sequence = 13 的時候,並檢視相關資料的恢復情況:
SQLPLUS中:
SYS:45@hongye > shutdown immediate
SYS:45@hongye > startup mount
RMAN 中執行不完全恢復:
RMAN> connect target /
connected to target database: HONGYE (DBID=2428382369, not open)
RMAN> run{
2> set until sequence 13;
3> restore database;
4> recover database;
5> }
. . . . . .
Finished recover at 12-APR-11
SQLPLUS 中檢視此次不完全恢復的情況是否和預期情況相符:
SYS:45@hongye > alter database open resetlogs;
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
no rows selected
沒有 current_* 的表和資料;
SYS:45@hongye > select group#,sequence#, status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 0 UNUSED
2 0 UNUSED
3 1 CURRENT
此時:注意到日誌已經歸零了,這是 resetlogs 的“後遺症”。
3、恢復到 sequence = 14 的時候,並檢視相關資料的恢復情況:
SQLPLUS 中:
SYS:45@hongye > shutdown immediate
SYS:45@hongye > startup mount
RMAN 中執行恢復操作:
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 HONGYE 2428382369 PARENT 1 30-JUN-05
2 2 HONGYE 2428382369 PARENT 446075 03-APR-11
3 3 HONGYE 2428382369 CURRENT 702481 12-APR-11
注意到,此時資料庫的生命期已經改變了,incarnation 換到下一個了,
將資料庫的生命期設定到2,這樣才能使用之前在生命期2中所作的備份
此時:要想繼續使用之前的備份和歸檔檔案,則必須將資料庫置於 incarnation=2 的生命週期中。
RMAN> reset database to incarnation 2;
database reset to incarnation 2
下面就可以進行不完全恢復,設定恢復的目標位置為: log sequence = 14 ;
RMAN> run{
2> set until sequence 14;
3> restore database;
4> recover database;
5> }
. . . . . .
Finished recover at 12-APR-11
SQLPLUS 中檢視恢復後的結果:
SYS:45@hongye > alter database open resetlogs;
Database altered.
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
TABLE_NAME
------------------------------
CURRENT_13
此時:表 CURRENT_13 已經被恢復了,因為current_13 表資訊的日誌記錄在 log sequence=13 的log中,
set until sequence 14,則 RMAN 會將日誌應用到 13 為止。
SYS:45@hongye > select * from hongye.current_13;
ID NAME
---------- ----------
1 name1
......
13 name13
13 rows selected.
4、恢復到 sequence = 15 的時候,並檢視相關資料的恢復情況:
SQLPLUS 中:
SYS:45@hongye > shutdown immediate
SYS:45@hongye > startup mount
RMAN 中執行恢復操作:
同樣,也需要在恢復之前,將資料庫的生命期設定到2,這樣才能使用之前在生命期2中所作的備份。
RMAN> reset database to incarnation 2;
using target database control file instead of recovery catalog
database reset to incarnation 2
RMAN> run{
2> set until sequence 15;
3> restore database;
4> recover database;
5> }
. . . . . .
Finished recover at 12-APR-11
SQLPLUS 中檢視恢復後的結果:
SYS:45@hongye > alter database open resetlogs;
Database altered.
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
TABLE_NAME
------------------------------
CURRENT_13
CURRENT_14
此時:表 CURRENT_13/14 都已經被恢復了,
因為current_13 表資訊的日誌記錄在 log sequence=13 的log中,
current_14 表資訊的日誌記錄在 log sequence=14 的log中,
set until sequence 15,則 RMAN 會將日誌應用到 14 為止。
SYS:45@hongye > select * from hongye.current_13;
ID NAME
---------- ----------
1 name1
......
13 name13
13 rows selected.
SYS:45@hongye > select * from hongye.current_14;
ID NAME
---------- ----------
1 name1
......
14 name14
14 rows selected.
5、恢復到 sequence = 16 的時候,並檢視相關資料的恢復情況:
SQLPLUS 中:
SYS:45@hongye > shutdown immediate
SYS:45@hongye > startup mount
RMAN 中執行恢復操作:
同樣,也需要在恢復之前,將資料庫的生命期設定到2,這樣才能使用之前在生命期2中所作的備份。
RMAN> reset database to incarnation 2;
using target database control file instead of recovery catalog
database reset to incarnation 2
RMAN> run{
2> set until sequence 16;
3> restore database;
4> recover database;
5> }
. . . . . .
Finished recover at 12-APR-11
SQLPLUS 中檢視恢復後的結果:
SYS:45@hongye > alter database open resetlogs;
SYS:45@hongye > select table_name from dba_tables where wner='HONGYE';
TABLE_NAME
------------------------------
CURRENT_15
CURRENT_13
CURRENT_14
此時:三張表的資料全部都在,由於最晚建立的表 current_15 對應的日誌序列號是15,
而本次恢復使用的 until sequence 16 ,RMAN就會應用到 log sequence = 15之後才會停止!
SYS:45@hongye > select * from hongye.current_13;
ID NAME
---------- ----------
1 name1
......
13 name13
13 rows selected.
SYS:45@hongye > select * from hongye.current_14;
ID NAME
---------- ----------
1 name1
......
14 name14
14 rows selected.
SYS:45@hongye > select * from hongye.current_15;
ID NAME
---------- ----------
1 name1
......
15 name15
15 rows selected.
SYS:45@hongye >
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24465008/viewspace-692363/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RMAN學習小結1:不完全恢復
- oracle實驗記錄 (恢復-不完全恢復)Oracle
- oracle實驗記錄 (恢復-rman恢復)Oracle
- RMAN全庫【完全恢復/不完全恢復brief version】
- Oracle Rman 資料庫的不完全恢復Oracle資料庫
- rman中三個不完全恢復場景
- Oracle 基於 RMAN 的不完全恢復(incomplete recovery by RMAN)Oracle
- RMAN一次RMAN將資料庫不完全恢復資料庫
- oracle實驗記錄 (恢復-rman catalog)Oracle
- oracle實驗記錄 (恢復-rman保留策略)Oracle
- RMAN恢復實踐
- oracle實驗記錄 (恢復-rman基於控制檔案的恢復)Oracle
- oracle實驗記錄 (恢復-rman維護(1))Oracle
- oracle實驗記錄 (恢復-rman維護(2))Oracle
- oracle實驗記錄 (恢復-rman增量備份)Oracle
- RMAN深入解析之--Incarnation應用(不完全恢復)
- 恢復到特定點(時間點、scn、日誌序列號),rman不完全恢復
- 備份與恢復:用rman方式基於日誌序列的不完全恢復
- RMAN恢復實踐(轉)
- 【實驗】從RMAN備份中恢復spfile檔案
- oracle實驗記錄 (恢復-rman reset incatnation(1))Oracle
- oracle實驗記錄 (恢復-rman操作delete(all) input )Oracledelete
- 【Mysql】完全恢復與不完全恢復MySql
- oracle實驗記錄 (恢復-表空間基於時間點恢復(rman))Oracle
- Oracle 不完全恢復Oracle
- oracle實驗記錄 (恢復-rman操作(設定&備份))Oracle
- RMAN異地恢復實戰
- RMAN恢復 執行重要檔案RMAN恢復
- 【RMAN】使用RMAN備份將資料庫不完全恢復到指定時間點資料庫
- [RMAN]使用RMAN備份將資料庫不完全恢復到指定時間點資料庫
- RMAN備份、恢復實驗室 之 備份篇 【rman: can't open target】
- 循序漸進oracle第7章:備份與恢復之RMAN映象拷貝不完全恢復Oracle
- Oracle 11g 手工不完全恢復 場景1:被動的不完全恢復(日誌缺失)Oracle
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- 利用rman做資料檔案丟失的恢復實驗
- 使用RMAN的不完全恢復-基於時間/SCN/日誌序列
- oracle實驗記錄 (恢復-完全恢復)Oracle
- rman恢復spfile和control和resetlogs建立控制檔案和不完全恢復疑點