incarnation在英文中是“化身”的意思。
那么在oracle中,它又是什么意思呢?有什么作用呢?
我們看一些基本概念
Current Incarnation(當前化身):數據庫當前正在使用的化身。
Parent Incarnation(父化身):數據庫當前化身的上一個化身。在父化身以 OPEN RESETLOGS 打開后,就生成當前化身。
Ancestor Incarnation(祖輩化身):在父化身之前,輾轉生成父化身的各個化身。
Direct Ancestral Path(直接祖輩路徑 / 宗譜):由數據庫的起始化身輾轉生成至當前化身的分支路徑,包含數據庫的歷代祖輩及父化身。
Orphan Incarnation(孤兒化身):不在數據庫當前化身的宗譜上的數據庫其它化身。
Orphaned Backups(孤兒備份):不是數據庫當前化身的宗譜上生成的數據庫備份。當前化身不能使
首先,我們可以來看一張圖,來對incarnation有個基本的了解
如圖,SCN1到SCN1000過程中,數據庫屬于incarnation 1,一直發展到橫向的SCN 2000,做了不完全恢復到了SCN 1000,此時SCN1000之后到橫向的SCN2000的便是(孤兒化身)。而SCN1000向上面的SCN2000發展形成incarnation 2。incarnation 1便是incarnation 2的(父輩化身)。
而SCN2000往上繼續發展到SCN3000時,又做了不完全恢復到SCN2000,SCN2000繼續橫向發展到SCN3000,形成incarnation 3.所以incarnation 1便是incarnation 3的(祖輩化身),incarnation 2便是incarnation 1的(祖輩化身)。
所有incarnation 1到 incarnation 3 的這條灰色軌跡便是Direct Ancestral Path。
Incarnation 1 中 SCN 1000 之后的所有備份 和Incarnation 2 中 SCN 2000 之后的所有備份便是孤兒備份。
自此應該能夠對Incarnation又大概的了解了吧。
下面我們來通過實驗來了解下
RMAN> backup as compressed backupset database plus archivelog delete all input;
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1446008355 PARENT 1 18-SEP-11
2 2 ORCL 1446008355 PARENT 787897 26-JUL-16
3 3 ORCL 1446008355 PARENT 885125 03-AUG-16
4 4 ORCL 1446008355 PARENT 886406 13-AUG-16
5 5 ORCL 1446008355 CURRENT 906785 15-AUG-16
[oracle@linfan ~]$ sqlplus / as sysdba
SQL> grant dba to scott;
grant succeeded.
SQL> begin
for i in 1 .. 10 loop
insert into test select current_scn from v$database;
commit;
end loop;
end; 2 3 4 5 6
7 /
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
1400132
1400135
1400138
1400141
1400144
1400147
1400150
10 rows selected.
rman target /
RMAN> run {
startup mount force;
set until scn 1400138;
restore database;
recover database;
alter database open resetlogs;
}
查看數據,發現還原成功
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
1400132
1400135
查看以下incarnation
RMAN> list incarnation ;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1446008355 PARENT 1 18-SEP-11
2 2 ORCL 1446008355 PARENT 787897 26-JUL-16
3 3 ORCL 1446008355 PARENT 885125 03-AUG-16
4 4 ORCL 1446008355 PARENT 886406 13-AUG-16
5 5 ORCL 1446008355 PARENT 906785 15-AUG-16
6 6 ORCL 1446008355 CURRENT 1400139 05-DEC-16
發現誕生了DB為6的incarnation,5號已經成為PARENT
再次執行之前的存儲過程
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
1400132
1400135
1400972
1400975
1400978
1400981
1400984
1400987
CUR_SCN
----------
1400990
1400993
1400995
1400999
15 rows selected.
再次進行不完全恢復
RMAN> run {
startup mount force;
set until scn 1400990;
restore database;
recover database;
alter database open resetlogs;
}
恢復成功,演化出了DB為7的incarnation
RMAN> list incarnation ;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1446008355 PARENT 1 18-SEP-11
2 2 ORCL 1446008355 PARENT 787897 26-JUL-16
3 3 ORCL 1446008355 PARENT 885125 03-AUG-16
4 4 ORCL 1446008355 PARENT 886406 13-AUG-16
5 5 ORCL 1446008355 PARENT 906785 15-AUG-16
6 6 ORCL 1446008355 PARENT 1400139 05-DEC-16
7 7 ORCL 1446008355 CURRENT 1400991 05-DEC-16
查看test表
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
1400132
1400135
1400972
1400975
1400978
1400981
1400984
1400987
11 rows selected.
此時,我們若是想還原到1400132的狀態,可以實現嗎?
注:1400132是DB為5的incarnation下的SCN
RMAN> run {
startup mount force;
set until scn 1400132;
restore database;
recover database;
alter database open resetlogs;
}
很遺憾地,爆出了RMAN-20208的錯誤。
Starting restore at 05-DEC-16
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 12/05/2016 17:10:14
RMAN-20208: UNTIL CHANGE is before RESETLOGS change
那么怎么解決RMAN-20208的錯誤呢
要回到DB為5的incarnation,再進行恢復
RMAN> reset database to incarnation 5;
database reset to incarnation 5
RMAN> run {
startup mount force;
set until scn 1400132;
restore database;
recover database;
alter database open resetlogs;
}
RMAN> list incarnation ;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1446008355 PARENT 1 18-SEP-11
2 2 ORCL 1446008355 PARENT 787897 26-JUL-16
3 3 ORCL 1446008355 PARENT 885125 03-AUG-16
4 4 ORCL 1446008355 PARENT 886406 13-AUG-16
5 5 ORCL 1446008355 PARENT 906785 15-AUG-16
8 8 ORCL 1446008355 CURRENT 1400133 05-DEC-16
6 6 ORCL 1446008355 ORPHAN 1400139 05-DEC-16
7 7 ORCL 1446008355 ORPHAN 1400991 05-DEC-16
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
由此可見,數據已經還原到之前狀態,演化出DB為8的化身,DB為6和7的化身變成了孤兒化身(ORPHAN),數據庫恢復成功。
總結:如果想要恢復到之前 incarnation 的 scn,就需要先切換到之前的 incarnation
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注本站行業資訊頻道,感謝您對本站的支持。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(相關資料圖)關于湖北移動合家歡怎樣收費的知識大家了解嗎?以下就是小編整理的關于湖北移動合家歡怎樣收費的介紹,希望可以給到大家一些參考,一起來了解下吧!1、超能合家歡頁面添加的流量共享成員不超過三人時,收取主卡賬戶每月10元功能費;超過三人時,收取主卡賬戶每月15元功能費,副卡不收取功能費。2、50GBWLAN流量僅限中國內地使用,最多支持3臺終端同時在線使用。認證賬號密碼統一使用主賬戶的手機號碼...
京東宣布回購股票是怎么回事?12月29日早間,京東在港交所公告稱,董事會已批準修改于2020年3月采納的現有股份回購計劃,據此,回購授權由20億美元增至30億美元,并延長至2024年3月17日。2020年3月17日,京東曾發布公告稱,將在未來24個月回購至多20億美元股份的計劃。有市場分析人士認為,京東此次將股份回購計劃授權擴大并延長,充分說明了管理層對于公司未來發展的堅定信心。股票回購前會打壓股...
第六套人民幣發行時間是什么時候?第六套人民幣發行時間表:早在2009年7月2日,央行就已經向媒體澄清,央行不會發行大量人民幣,人民幣發行是保密信息。網上發布的“發行新版500元人民幣”是網友捏造的假新聞,可能本意是搞笑,其實是違法的。相關負責人表示,不會發行大面額人民幣。他表示,面值500元人民幣的發行要根據實際需要。如果出現通貨膨脹,物價會迅速上漲。從國內的情況來看,暫時...