• 列出在執行表空間時間點恢復(TSPITR) 時會發生的操做
• 闡釋TSPITR 使用的術語的定義
• 肯定適合將TSPITR 用做解決方案的狀況
• 肯定時間點恢復的正確目標時間
• 肯定不能使用TSPITR 的狀況以及解決方法
• 執行自動TSPITR
• 經過執行TSPITR 可將一個或多個表空間快速恢復到之前的某個時間。
• 執行TSPITR 不會影響數據庫中其它表空間或對象的狀態。
使用RMAN 自動錶空間時間點恢復(TSPITR) 可將Oracle DB 中的一個或多個表空間快速恢復到之前的某個時間,而不會影響數據庫中其它表空間和對象的狀態。
• 目標時間:表空間恢復到的時間點或SCN
• 恢復集:組成要恢復的表空間的數據文件
• 輔助集:對恢復集執行TSPITR 時所必需的,但不屬於恢復集的數據文件。輔助集一般包括:
– SYSTEM表空間
– 還原段表空間
– 臨時表空間
• 輔助目標:存儲文件的磁盤位置
討論TSPITR 時使用瞭如下術語:
• 目標時間:執行TSPITR 期間表空間將恢復到的時間點或系統更改號(SCN)。
• 恢復集:組成要恢復的表空間的數據文件。
• 輔助集:對恢復集執行TSPITR 時所必需的,但自己不屬於恢復集的數據文件。輔助集一般包括:
- SYSTEM表空間的副本
- 包含來自目標實例的還原段的數據文件
- 某些狀況下從輔助實例導出數據庫對象期間使用的臨時表空間
• 輔助目標:執行TSPITR 期間在磁盤上存儲輔助實例的任何輔助集數據文件、控制文件和聯機日誌的位置。執行完TSPITR 以後可刪除輔助目標中存儲的文件。
圖表中顯示了下列TSPITR 實體:
• 目標數據庫:包含要恢復的表空間
• 控制文件:向RMAN 提供備份信息
• 備份集:來自目標數據庫,用做重建表空間的來源
• 歸檔重作日誌:來自目標數據庫,用做重建表空間的來源
• 輔助實例:在恢復過程當中用來執行恢復的Oracle DB 實例
RMAN 在執行表空間時間點恢復期間會執行下列步驟:
1.將目標時間以前某個時間點的備份控制文件還原到輔助實例。將恢復集的數據文件還原到目標數據庫,將輔助集的數據文件還原到輔助實例。
2.將還原的數據文件恢復到指定的時間點。
3.將已恢復表空間中對象的字典元數據導出到目標數據庫。
4.在目標數據庫上發出SWITCH命令,以使目標數據庫控制文件指向輔助實例上已恢復的恢復集中的數據文件。
5.將輔助實例中的字典元數據導入目標實例,以便能訪問已恢復對象。
• TSPITR 可在下列狀況下使用:
– 恢復因錯誤的TRUNCATE TABLE語句而丟失的數據
– 從表邏輯損壞中恢復
– 撤消隻影響部分數據庫的批做業或DML 語句的結果
– 將邏輯方案恢復到與物理數據庫其他部分不一樣的時間點
• TSPITR 使用可移動表空間和數據泵,提供瞭如下新功能和特性:
– TSPITR 可用於恢復已刪除的表空間
– 可反覆執行TSPITR 恢復到表空間聯機以前的多個時間點,而無需使用恢復目錄
RMAN TSPITR 可用來:
• 恢復因錯誤的TRUNCATE TABLE語句而丟失的數據
• 從表邏輯損壞中恢復
• 撤消只對數據庫子集有影響的不正確批處理做業或其它數據操縱語言(DML) 語句的結果
• 將邏輯方案恢復到與物理數據庫其它部分不一樣的時間點
在Oracle Database 11g發行版2 以前,TSPITR 使用導出和導入進行處理。TSPITR 如今使用可移動表空間和數據泵。因爲底層技術的這一變化,如今可以使用TSPITR 來恢復已刪除的表空間。此外,可反覆執行TSPITR 恢復到不一樣的時間點,而無需使用恢復目錄。
要爲TSPITR 作準備,請執行如下步驟:
• 肯定正確的目標時間。
• 肯定恢復集中須要的內容。
• 肯定並保留執行TSPITR 以後會丟失的對象。
在執行TSPITR 以前,須要肯定恢復的正確目標時間。須要肯定恢復集中是否還須要其它表空間。應估計哪些對象會在執行TSPITR 操做後丟失,而後肯定如何保留這些對象。
• 除非使用了恢復目錄,不然不能再次執行TSPITR。
• 執行TSPITR 並使表空間聯機之後,就不能使用更早時間的備份。
• 請使用下列方法肯定正確的目標時間:
– 閃回查詢
– 閃回事務處理查詢
– 閃回版本查詢
• TSPITR 的簡單替代方法:閃回數據(若是仍然可用做還原數據)。
選擇執行TSPITR 時的正確目標時間或SCN 極爲重要。執行TSPITR 並使表空間聯機後,就不能使用早於表空間聯機時的任何備份。實際上,這意味着第一次選擇了錯誤的目標時間後就不能再次嘗試執行TSPITR,除非使用了恢復目錄。可是,若是使用了恢復目錄,就可經過執行重複的TSPITR 操做來恢復到不一樣的目標時間。
若是不使用恢復目錄,當前控制文件就不會包含已恢復表空間的舊原型記錄。使用包含表空間的當前控制文件進行恢復時,不能使用在表空間聯機以前建立的備份。可是,經過將數據庫恢復到早於或等於表空間聯機時的任什麼時候間點,能夠對整個數據庫執行不徹底恢復,前提是可以從早於該時刻的時間點還原備份控制文件。
可使用Oracle 閃回查詢、Oracle 閃回事務處理查詢和Oracle 閃回版本查詢來查看對數據庫進行的更改,幫助肯定TSPITR 的正確目標時間。
注:有了閃回工具和仍然可用做還原數據的數據,使用閃回工具來還原不滿意的更改比使用TSPITR 進行還原更爲簡單。
• 使用TS_PITR_CHECK視圖來識別跨越恢復集邊界的關係。
• 若是要恢復表空間中的對象與其它表空間中的對象有關係,則能夠:
– 將包含相關對象的表空間添加到相應的恢復集中
– 在執行TSPITR 期間掛起該關係
– 刪除該關係
• 使用DBMS_TTS.TRANSPORT_SET_CHECK過程來肯定恢復集中的表空間是不是自包含的。
若是不能肯定是否已考慮了與要執行TSPITR 操做的表空間中的對象有關係的全部對象,可使用TS_PITR_CHECK視圖來識別任何其它對象。查詢這個視圖時,會顯示阻止繼續執行TSPITR 的任何對象的信息。表空間時間點恢復不能繼續進行的緣由顯示在TS_PITR_CHECK視圖的「REASON(緣由)」列中。
例如,若是打算對USERS和EXAMPLE表空間執行TSPITR,請經過執行如下查詢來肯定是否還存在未考慮的、與其它表空間中的對象的關係:
SELECT * FROM SYS.TS_PITR_CHECK WHERE (TS1_NAME IN ('USERS','EXAMPLE') AND TS2_NAME NOT IN ('USERS','EXAMPLE'))
OR (TS1_NAME NOT IN ('USERS','EXAMPLE') AND TS2_NAME IN ('USERS','EXAMPLE'));
執行TSPITR 以前,必須肯定恢復集。若是要恢復的表空間中的對象與其它表空間中的對象存在關聯,則須要對這些對象進行預配。
在Oracle Database 11g發行版2 以前的版本中,使用SYS.TS_PITR_CHECK視圖來肯定對象之間跨越恢復集邊界的關係。
如今你應使用DBMS_TTS.TRANSPORT_SET_CHECK過程並查詢TRANSPORT_SET_VIOLATIONS視圖。
DBMS_TTS.TRANSPORT_SET_CHECK ('USERS', 'EXAMPLE');
SELECT * FROM TRANSPORT_SET_VIOLATIONS;
注:RMAN TSPITR 自動爲恢復集表空間執行DBMS_TTS.TRANSPORT_SET_CHECK過程,並驗證針對TRANSPORT_SET_VIOLATIONS的查詢是否未返回行。若是該查詢返回行,RMAN 會中止TSPITR 處理,必須先解決全部違反表空間封閉性要求的問題,才能繼續執行TSPITR。也能夠做爲一項預防性措施來按如上所述執行該過程並查詢視圖。
• 目標恢復時間以後在表空間中建立的對象會丟失。
• 查詢TS_PITR_OBJECTS_TO_BE_DROPPED,肯定哪些對象在執行TSPITR 以後會丟失。
• 在執行TSPITR 先後分別使用導出和導入來保留並從新建立丟失的對象。
查詢TS_PITR_OBJECTS_TO_BE_DROPPED視圖,肯定是否存在執行表空間時間點恢復後會丟失的對象。
例如,要對USERS和EXAMPLE表空間執行TSPITR,目標時間爲2006 年4 月3 日上午8:30:00。
請經過發出如下查詢,肯定是否存在執行TSPITR 後會丟失的任何對象:
SELECT OWNER, NAME, TABLESPACE_NAME,
TO_CHAR(CREATION_TIME, 'YYYY-MM-DD:HH24:MI:SS')
FROM TS_PITR_OBJECTS_TO_BE_DROPPED
WHERE TABLESPACE_NAME IN ('USERS','EXAMPLE')
AND CREATION_TIME >
TO_DATE('2006-APR-03:08:30:00','YY-MON-DD:HH24:MI:SS')
ORDER BY TABLESPACE_NAME, CREATION_TIME;
• 徹底自動執行的TSPITR
– 指定輔助目標。
– RMAN 會管理TSPITR 的全部方面。
– 這是推薦的方法。
• 使用自動輔助實例的定製TSPITR
– 這是在徹底自動執行TSPITR 的基礎上進行的。
– 定製文件位置。
– 指定初始化參數。
– 指定通道配置。
• 使用您本身輔助實例的TSPITR
– 配置並管理輔助實例。
執行TSPITR 時有下列選項:
• 徹底自動執行的TSPITR:指定輔助目標,RMAN 會管理TSPITR 操做的全部方面。這是最簡單的執行TSPITR 的方法,建議採用這種方法,除非明確指出須要在執行
TSPITR 以後控制恢復集的位置,或者在執行TSPITR 期間控制輔助集文件的位置,或者須要控制輔助實例的通道配置或其它某個方面。
• 使用自動輔助實例的定製TSPITR:TSPITR 基於徹底自動執行的TSPITR 的行爲,可能仍使用輔助目標。能夠自定義其行爲的一個或多個方面,如輔助集文件或恢復集
文件的位置。能夠爲RMAN 建立並管理的輔助實例指定初始化參數或通道配置。
• 使用你本身輔助實例的TSPITR:設置、啓動、中止和清除在TSPITR 中使用的輔助實例。另外,能夠藉助使用自動輔助實例的定製TSPITR 中的一些方法來管理TSPITR 過程。
1. 配置在目標實例上執行TSPITR 所需的通道。
2. 使用AUXILIARY DESTINATION選項指定輔助目標。
RMAN> CONNECT TARGET
RMAN> RECOVER TABLESPACE users, example
> UNTIL TIME '2007-06-29:08:00:00'
> AUXILIARY DESTINATION
> '/u01/app/oracle/oradata/aux';
3. 備份恢復的表空間並使它們聯機。
RMAN>BACKUP TABLESPACE users, example;
RMAN> SQL "ALTER TABLESPACE users, example ONLINE";
執行徹底自動執行的TSPITR 時,還必須:
• 配置在目標實例上執行TSPITR 所需的任何通道
• 指定RMAN 用於數據文件輔助集和其它輔助實例文件的目標
在TSPITR 完成以後,備份恢復的表空間並使它們聯機。執行TSPITR 以後,不能使用TSPITR 以前建立的參與執行TSPITR 的表空間的備份。
注:此時間格式假定NLS_DATE_FORMAT設置爲'yyyy-mm-dd:hh24:mi:ss'且NLS_LANG設置爲AMERICAN_AMERICA.WE8MSWIN1252。
CONFIGURE AUXNAME由恢復集數據文件的SET NEWNAME替換:
RUN
{
SET NEWNAME FOR DATAFILE
'$ORACLE_BASE/oradata/orcl/users01.dbf'
TO '/backup/users01.dbf';
RECOVER TABLESPACE users UNTIL SEQUENCE 1300 THREAD 1;
}
能夠經過指示RMAN 使用恢復集和輔助集數據文件的現有映像副原本提高TSPITR 的性能。此項技術使RMAN 能夠跳過從備份中恢復數據文件這一步驟。
在Oracle Database 11g發行版2 以前的版本中,使用下列技術來指定數據文件現有的映像副本:
• 對恢復集數據文件或輔助集數據文件的映像副本,使用CONFIGURE AUXNAME命令
• 對輔助集數據文件的映像副本,使用SET NEWNAME命令
如今,你僅應該對輔助集數據文件的映像副本使用CONFIGURE AUXNAME命令。應該對恢復集數據文件或輔助集數據文件的映像副本使用SET NEWNAME命令。
- 使用Oracle Enterprise Manager 執行TSPITR
還可使用Oracle Enterprise Manager 執行TSPITR。導航至「Availability > Perform Recovery(可用性> 執行恢復)」。在「User Directed Recovery(用戶執行的恢復)」部分,從「Recovery Scope(恢復範圍)」下拉菜單中選擇「Tablespaces(表空間)」。
能夠對錶空間執行三種操做:
• 恢復到當前時間或過去某一時間點:若是須要,還原表空間的數據文件。此操做會經過重作來恢復到指定的時間:當前時間或過去某一時間。此操做是下列兩個操做
的組合。
• 還原表空間:僅還原表空間的數據文件。不執行恢復操做。
• 從之前還原的表空間恢復:僅對錶空間數據文件執行恢復(重作應用程序)。
RMAN 執行TSPITR 的步驟:
1. 建立輔助實例,啓動該實例,而後鏈接到該實例
2. 使要恢復的表空間脫機
3. 將目標時間以前某個時間點的備份控制文件還原到輔助實例
4. 將恢復集和輔助集的數據文件還原到輔助實例
5. 將已還原數據文件恢復到指定時間
6. 使用RESETLOGS選項打開輔助數據庫
7. 將已恢復表空間中對象的字典元數據導出到目標數據庫
8. 關閉輔助實例
9. 將輔助實例中的字典元數據導入目標實例
10.刪除全部輔助集文件
恢復集數據文件會恢復到指定目標時間所處的狀態。
執行RMAN TSPITR
• 重命名或重定位恢復集數據文件。
• 爲部分或所有輔助集數據文件指定不一樣於輔助目標的位置。
• 在執行TSPITR 以前建立數據文件的映像副本備份。
• 對輔助實例使用不一樣的通道配置。
• 爲RMAN 管理的輔助實例指定不一樣的初始化參數。
若是要自定義RMAN TSPITR,則可使用RMAN 管理的輔助實例並進行下列更改:
• 使用SET NEWNAME重命名恢復集數據文件,以便不在原始位置還原和恢復它們。
• 經過使用SET NEWNAME爲各個文件指定新名稱,並使用DB_FILE_NAME_CONVERT提供用於將目標數據庫中的數據文件名轉換爲輔助數據庫的數據文件名的規則,控制輔助集數據文件的位置。
• 爲了提升RMAN TSPITR 的性能,使用磁盤上的恢復集數據文件和輔助集數據文件的現有映像副本,而不是從備份中還原它們。
• 不推薦,但支持
• 請執行如下步驟:
1. 建立輔助實例的Oracle 口令文件。
2. 建立輔助實例的初始化參數文件。
3. 驗證到輔助實例的Oracle Net 鏈接。
4. 在NOMOUNT模式下啓動輔助實例。
5. 將RMAN 客戶機鏈接到目標實例和輔助實例。
6. 執行RECOVER TABLESPACE命令。
Oracle 建議經過RMAN 來管理在執行RMAN TSPITR 期間使用的輔助實例的建立和刪除。可是,咱們也支持建立並使用本身的輔助實例。
要建立適合用做輔助實例的Oracle 實例,請執行如下步驟:
1.使用orapwd實用程序建立輔助實例的Oracle 口令文件。
2.建立輔助實例的文本初始化參數文件。
3.使用有效的網絡服務名驗證到輔助實例的Oracle Net 鏈接。
要執行TSPITR,請完成下列步驟:
4.在NOMOUNT模式下啓動輔助實例。
5.將RMAN 客戶機鏈接到目標實例和輔助實例。
6.執行RECOVER TABLESPACE命令。
• 文件名衝突:確保使用SET NEWNAME、CONFIGURE AUXNAME和DB_FILE_NAME_CONVERT時沒有文件名衝突。
• RMAN 不能識別包含還原段的表空間:請使用UNDO TABLESPACE子句。
• 發生TSPITR 故障後從新啓動手動輔助實例:在NOMOUNT模式下關閉並從新啓動。
文件名衝突:若是因使用SET NEWNAME、CONFIGURE AUXNAME和DB_FILE_NAME_CONVERT致使輔助集或恢復集中的多個文件同名,則在執行TSPITR
期間會收到錯誤。要糾正問題,須要爲這些參數指定不一樣的值以免出現重複名稱。
RMAN 不能識別包含還原段的表空間:在執行TSPITR 期間,RMAN 須要有關哪些表空間包含TSPITR 目標時間還原段的信息。這種信息一般位於恢復目錄中(若是使用了恢復目錄)。若是沒有恢復目錄,或者若是恢復目錄中沒有這種信息,則RMAN 會繼續執行操做,並且假設包含目標時間還原段的表空間集與包含當前時間還原段的表空間集相同。若是此假定不正確,TSPITR 操做就會失敗,同時報告錯誤。爲防止此類錯誤發生,請在UNDO TABLESPACE子句中提供包含目標時間還原段的表空間列表。
發生TSPITR 故障後從新啓動手動輔助實例:若是管理本身的輔助實例而且TSPITR 出現故障,則在重試TSPITR 以前,必須關閉輔助實例、更正問題並將輔助實例從新置於NOMOUNT模式。
來源:http://blog.csdn.net/rlhua/article/details/12659769數據庫