筆記-backup and recovery-第二十一章 表空間基於時間點的恢復(TSPITR).txt

to_be_Dba發表於2013-06-18
第二十一章 表空間基於時間點的恢復(TSPITR)
一、綜述
1.目的
快速恢復一個或多個表空間到以前某個時間點,而不影響其他表空間。
應用領域:
1)當多個邏輯資料庫存在於相互分離的物理資料庫的表空間中時,將邏輯資料庫恢復到以其他物理資料庫不同的時間點。比如邏輯資料庫放在orders和personnel表空間中。
2)在DDL操作之後恢復資料結構和資料。由於結構變化,無法採用閃回恢復。
3)在用purge選項清除表之後恢復該表
4)恢復邏輯中斷的表
5)恢復刪除的表空間。即使不使用恢復編錄,rman也可以對刪除的表空間進行恢復。
閃回資料庫與之相比,需要閃回日誌的支援、只能對全庫進行閃回,並且受閃回視窗限制。
2.TSPITR基本概念
目標例項:包含待恢復表空間的例項
目標時間:TSPITR完成後的時間點或scn
輔助例項:用於恢復過程中的資料庫例項。
輔助目的地:rman用於臨時儲存輔助設定檔案的一個可選磁碟地址。輔助目的地只在rman管理的輔助例項中使用。在使用者管理的輔助例項中使用,會報錯。
恢復設定(recovery set):表空間中你打算恢復的資料檔案。
輔助設定(auxiliary set):需要TSPITR的資料檔案不是恢復設定的一部分,包括:
system和sysaux表空間
目標資料庫例項中包含回滾和撤銷段的資料檔案
臨時表空間
原資料庫的控制檔案
需要修復並覆蓋特定時間點的歸檔日誌
輔助例項的線上日誌。與源資料庫的線上日誌不一樣。是輔助例項用resetlogs模式開啟時建立的。
輔助設定不包括引數檔案、密碼檔案和network檔案

1)rman TSPITR的模式
通過recover tablespace命令執行TSPITR有三種執行模式:
a、完全自動 (預設的)
這種模式下rman管理整個TSPITR過程,包括輔助例項。你指定恢復設定的表空間、輔助目的地、目標時間,允許rman管理其他方面。
預設方式是推薦的,除非需要對TSPITR後的恢復設定檔案的位置,TSPITR過程中的輔助設定檔案,通道設定和引數或輔助例項的其他方面進行更多控制。
b、自動:使用者設定的rman管理的輔助例項
使用rman管理的輔助例項和目的地時可以忽略rmanTSPITR的一些預設設定。預設模式的這些變化將使你在一些rman tsitr制定了輔助設定位置或恢復設定檔案、初始化引數時提供更好的管理。
c、非自動:TSPITR和使用者管理輔助例項
這種模式需要設定和管理輔助例項的所有方面以及TSPITR過程的一些方面。該模式在你必須分配不同數量的通道或者在使用者管理的輔助例項中設定通道引數時比較有效。

TSPITR如何在rman管理的輔助例項上工作:
從恢復設定中選擇了表空間,輔助目的地和目標時間,你就可以準備進行完全自動的rman TSPITR了。
TSPITR自動進行如下操作:
1)如果恢復設定中的表空間未刪除,通過執行dbms_tts.transport_Set_check檢查對於恢復設定表空間其是否是自包含的。如果查詢返回了幾行,rman停止TSPITR過程。你必須在TSPITR之前解決表空間的包含問題。(也就是說待恢復的表空間不能包含其他表空間,也不能被其他表空間包含,導致資料不一致)
2)檢查是否有到使用者管理的輔助例項的連線。如果有,TSPITR就使用它;如果沒有,建立輔助例項,啟動並連線
3)在目標資料庫上將待恢復的表空間離線,如果在恢復設定中表空間沒有被刪除
4)在輔助例項中修復備份的控制檔案到目標時間點之前的一個時間
5)根據恢復設定和輔助設定為輔助例項修復資料檔案
修復的檔案可以在:
你為每個檔案本地指定的位置
檔案的原位置(對於恢復設定資料檔案)
輔助目的地(如果在recover tablespace中使用輔助目的地,並使用了rman管理的輔助例項)
6)在輔助例項中覆蓋修復的控制檔案到特定時間點
7)resetlogs方式開啟輔助資料庫
8)使輔助例項中的恢復設定表空間只讀
9)從輔助例項使用資料泵方式匯出恢復設定表空間,生成一個可傳輸表空間dump檔案
10)關閉輔助例項
11)從目標庫刪除恢復設定表空間
12)資料泵匯入可傳輸表空間dump檔案,將恢復設定表空間插入目標庫
13)使放在目標資料庫上的表空間為可讀寫模式,並立即使其離線
14)刪除所有輔助設定檔案
至此TSPITR就完成了。恢復設定資料檔案被返回到特定時間點,屬於目標資料庫。
恢復設定表空間是離線的,需要改為聯機狀態。最後一步是TSPITR後立即進行所恢復表空間的備份

二、TSPITR的限制,特例等
以下是不應該使用TSPITR的場景:
1)沒有歸檔日誌或執行在非歸檔模式
2)如果用於恢復一個重新命名的表空間到其改名之前,必須使用原名進行恢復
這時,TSPITR完成後目標資料庫包括兩個同一表空間的映象,原來的庫中是新資料庫名,TSPITR表空間是舊名。如果這不是你的目標,可以刪除新名稱的表空間
3)如果在表空間tbs2中包括tbs1表空間的約束,就不能只對tbs1進行恢復(需要和tbs2一起恢復)
4)不能用TSPITR覆蓋當前預設表空間
5)不能用TSPITR覆蓋包括如下物件的表空間:
有物化檢視、分割槽表等物件,除非所有這些物件都在恢復設定中
回滾或撤銷段
oracle 8 …………
sys使用者擁有的物件
1.TSPITR的限制
TSPITR完成後,rman將恢復設定中的資料檔案恢復到目標時間點。記住以下特例:
TSPITR不會覆蓋被恢復物件的查詢優化器統計資訊,需要在恢復後重新收集統計資訊
如果在某個表空間進行TSPITR,將表空間在時間t連線,在時間t之前的表空間備份對於當前控制檔案來說恢復時沒有用。你不能用當前控制檔案恢復資料庫到t時間或之前
如果恢復設定中一個或多個資料檔案有oracle managed file(OMF)名字目標資料庫版本是10.1或更早,rman不能重用資料檔案。該限制在未使用set newname時仍然成立。恢復設定資料檔案將建立新的OMF名字。該動作臨時將資料檔案需要的空間加倍了。由於db_create_File_dest有兩個資料檔案的映象(原資料檔案和TSPITR使用的資料檔案),知道從目標刪除表空間。

2.不使用恢復編錄時的特殊考慮
由於rman在控制檔案中沒有undo的歷史記錄,rman假設有撤銷或回滾段的表空間在恢復時的設定與當前一樣。如果表空間設定在此時間以後修改了,當前回滾段或撤銷段。

三、TSPITR的計劃和準備
1.選擇正確的目標時間
TSPITR後將表空間聯機,之後就不能在使用該時刻之前的備份了。
如果你有恢復編錄,可以通過多次操作將資料庫恢復到不同的目標時間點,因為編錄包含了表空間的歷史資訊。如果rman只使用控制檔案,只有在刪除表空間後才能進行多次的TSPITR,因為控制檔案沒有表空間歷史資訊。進一步講,rman只知道表空間的當前設定。進行TSPITR的資料庫的建立時間與聯機時間相同。
為了檢視資料原來的狀態來確定TSPITR的目標時間,可以使用閃回查詢、oracle transaction query、閃回版本查詢找到非預期修改發生的時間。
2.決定恢復設定
初始狀態下,恢復設定包括你打算回覆的表空間中的資料檔案。但是如果表空間中你需要的物件與其他表空間中的物件存在關係,如約束等,那麼必須將其考慮在內。有如下的解決方法:
1)將相關表空間一起恢復
2)刪除關聯
3)保持TSPITR期間的關係
TSPITR需要表空間自包含,且不包含sys使用者的物件。可以使用dbms_tts.transport_Set_check定位到表空間以外的冠樑物件。如果transport_set_check檢視有資料返回,必須檢查並修正該問題。
注意:如果恢復設定中的表空間被刪除了,rmanTSPITR無法執行dbms_tts.transport_set_check。這種情況下在資料泵匯出輔助例項時執行dbms_tts.transport_set_check。就想rman TSPITR,如果表空間非自包含的,匯出操作也會失敗。
記錄該步驟所有的動作,以便可以重建一些有疑問或者在完成TSPITR後刪除關聯。只有在transport_set_violations檢視為空後,才能進行基於表空間的恢復。
3.定位和保留TSPITR後失去的物件
進行TSPITR操作是,在目標恢復時間以後建立的物件會丟失。可以在進行TSPITR操作前將其匯出,TSPITR操作後再匯入。
要判斷哪些物件在TSPITR操作後丟失了,可以查詢sys.ts_pitr_objects_to_be_dropped檢視。
通過creation_time可以過濾出哪些物件將被刪除。
四、進行完全自動的TSPITR
預設模式下,rman在目標資料庫上基於儘可能多的TSPITR配置。在TSPITR過程中,恢復設定資料檔案被寫入到目標資料庫的當前位置。在從備份恢復檔案時,目標資料庫相同的通道配置被應用到輔助例項。輔助設定資料檔案和其他輔助例項檔案則被儲存到輔助目的地。
使用auxiliary destination引數設定rman的輔助設定資料檔案的位置。輔助目的地必須是磁碟上一塊足夠容納輔助設定資料檔案的空間。即使用其他技術重新命名了一些或全部的輔助設定資料檔案,指定auxiliary destination引數也會為未指定名稱的輔助設定資料檔案提供一個預設的位置。如果你刪除了一些輔助設定資料檔案,TSPITR也不會失敗。
要進行完全自動的TSPITR,使用者應該可以以作業系統驗證方式的sysdba身份登入。
步驟:
1.檢查21-5中提到的TSPITR的限制、特例等
2.進行21-6中提到的TSPITR的準備工作
3.開啟rman會話,連線目標庫,恢復編錄可選連線
注意:在啟動rman客戶端進行自動TSPITR時,不要連線輔助例項。如果rman在執行recover tablespace時連線到了輔助例項,rman就認為你在管理自己的輔助例項,就想21-19描述的那樣,並嘗試使用輔助來進行TSPITR
4.配置TSPITR需要的通道
5.執行recover tablespace命令,指定until子句和auxiliary destination引數
比如:
RECOVER TABLESPACE users, tools
UNTIL LOGSEQ 1300 THREAD 1
AUXILIARY DESTINATION '/disk1/auxdest';
根據結果執行以下操作:
1)如果未發生錯誤,執行第六步
表空間被rman離線,從備份修復並覆蓋到輔助例項的預期的時間點,然後重新匯入到目標資料庫。表空間保持離線。所有輔助設定資料檔案和其他輔助例項檔案從輔助目的地清除
2)如果在TSPITR過程中出錯,參考21-24 解決
6.如果TSPITR成功完成,需要在將其聯機之前備份覆蓋了的資料庫(recovered tablespaces)
在表空間上執行了TSPITR後,就不能再使用以前的表空間備份了。如果使用未備份的恢復的資料庫,就是在沒有這些表空間備份的情況下執行的了。
7.表空間連線
 
五、用使用者管理的輔助例項代替TSPITR預設的設定
可以定製以下方面的設定,其他大部分操作由TSPITR完成:
1)重新命名或修改恢復設定資料檔案的位置,以便組成恢復資料庫的資料檔案在TSPITR後不會放在原來的位置。如果原來包括表空間的那個磁碟已經不可用時這可能很有用。
在21-10"Renaming TSPITR Recovery Set Data Files with SET NEWNAME"中有描述
2)為一些或所有輔助設定資料檔案指定輔助目的地以外的位置。如果單個的磁碟沒有足夠的空間存放所有輔助設定檔案,可以使用該選項。
在"Naming TSPITR Auxiliary Set Data Files" on page 21-11.描述
3)用一個oracle  managed files格式命名檔案
in "Considerations When Renaming OMF Auxiliary Set Files in TSPITR"
4)提前設定輔助設定檔案的映象備份,以避免從TSPITR中恢復資料檔案
in "Using Image Copies for Faster RMAN TSPITR Performance"
5)為rman管理的輔助例項設定初始化引數
1.Renaming TSPITR Recovery Set Data Files with SET NEWNAME
你可能不想將恢復設定資料檔案修復並覆蓋到原來的位置。通過set newname命令可以指定新的位置。當你指定了恢復設定的一個新的位置時,rman不會將原資料檔案刪除。
要執行新的恢復設定檔名,建立一個run命令塊,其中使用set newname命令。確保註冊名稱與當前的資料檔名稱不衝突。
如:
RUN
{
.
.
.
SET NEWNAME FOR DATAFILE 'ORACLE_HOME/oradata/trgt/users01.dbf'
TO '/newfs/users01.dbf';
...other SET NEWNAME commands...
RECOVER TABLESPACE users, tools UNTIL SEQUENCE 1300 THREAD 1;
}
此例中,rman將每個指定的檔案恢復到新的位置;如果在特定位置存在映象備份,並且檢查點在特定時間點之前,就使用映象複製;將新回覆的資料檔案寫入到控制檔案中。
rman知道真正恢復時才檢查set newname與當前資料檔名的衝突。如果rman監測到衝突,TSPITR就失敗,rman報錯。合法的資料檔案不會被重寫。
2.命名TSPITR輔助設定資料檔案
與恢復設定資料檔案不同,輔助設定資料檔案不能對目標資料庫的原檔案進行重寫。如果未指定與原位置不同的輔助設定檔案地址,TSPITR會失敗。當rman在原資料庫上嘗試重寫相應檔案,發現檔案正在使用時將報錯。
最簡單的為輔助設定資料檔案提供地址的方式是為TSPITR指定輔助目的地。然而,rman為了控制輔助設定資料檔案,rman提供了以下之一:
set newname
configure auxname
db_file_name_convert
AUXILIARY DESTINATION argument to RECOVER TABLESPACE when using an RMAN-managed auxiliary instance
…………
3.使用映象複製提高TSPITR效能
……
4.為輔助例項設定初始化引數
…………
四、用自己的輔助例項進行TSPITR

五、問題解決
1.檔名衝突問題
2.通過撤銷段定位表空間
3.在TSPITR失敗後重啟手工輔助例項
如果自己管理輔助例項,在TSPITR過程中失敗了,不要在未解決錯誤的情況下重新嘗試TSPITR,應用以下方法:
1.定位並改正阻礙TSPITR成功的問題
2.啟動輔助例項到nomount狀態
3.再次執行TSPITR

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-764274/,如需轉載,請註明出處,否則將追究法律責任。

相關文章