1. 程式人生 > 資料庫 >ORACLE_OCP之執行基於時間點恢復(PIRT)

ORACLE_OCP之執行基於時間點恢復(PIRT)

ORACLE_OCP之執行基於時間點恢復(PIRT)

  • 文章目標:
    • 區分和描述表,表空間和資料庫的時間點恢復(PITR)
    • 在萬不得已時,確定PITR是一個好的解決方案
    • 列出執行時間點恢復時發生的操作
    • 確定時間點恢復的正確目標時間
    • 執行自動的TSPITR
    • 從備份執行表恢復

一、時間點恢復

  • 時間點恢復的好處:
    • 快速將一個或多個物件恢復到更早的時間
    • 對其他物件沒有影響
  • 恢復範圍:
    • Table Point-in-Time Recovery (TPITR)
    • Tablespace Point-in-Time Recovery (TSPITR)
    • Database Point-in-Time Recovery (DBPITR)

二、何時使用TSPITR

  • TSPITR可在以下情況下使用:
    • 恢復錯誤的TRUNCATE TABLE語句後丟失的資料
    • 從表的邏輯損壞中恢復
    • 撤消僅影響資料庫一部分的批處理作業或DML語句的影響
    • 將邏輯架構恢復到與物理資料庫其餘部分不同的位置
    • 恢復刪除的表空間
    • 可以在表空間聯機之前的某個時間點重複執行,而無需恢復目錄

三、PITR術語

  • 目標時間:將物件恢復到的時間點或SCN
  • 恢復集:對於表空間,要恢復的資料檔案
  • 輔助集:不屬於恢復集的必需資料檔案。 它通常包括:
    • SYSTEM表空間(元資料)
    • UNDO表空間 (原資料 前映象資料)
    • 臨時表空間
  • 輔助目標:儲存檔案的磁碟位置

四、表空間時間點恢復:體系結構

在這裡插入圖片描述

  • 1 建立輔助例項,啟動它並連線到它
  • 2 使將要恢復的表空間離線
  • 3 從目標時間之前的時間點將備份控制檔案還原到輔助例項
  • 4 將資料檔案從恢復集和輔助集還原到輔助例項
  • 5 將還原的資料檔案恢復到指定時間
  • 6 使用RESETLOGS選項開啟輔助資料庫
  • 7.將有關已恢復表空間中物件的字典元資料匯出到目標資料庫
  • 8.關閉輔助例項。
  • 9.將字典元資料從輔助例項匯入到目標例項
  • 10.刪除所有輔助設定檔案

五、為PITR做準備

  • 要準備PITR,請執行以下步驟:
    • 確定正確的目標時間。
    • 確定恢復集中需要什麼。
    • 識別並保留PITR之後將丟失的物件。

六、確定正確的目標時間

  • 在執行TSPITR並使表空間聯機之後,您將無法使用較早的備份(除非您正在使用recovery catalog)。
  • 使用以下方法確定正確的目標時間:
    • Flashback Query
    • Flashback Transaction Query
    • Flashback Version Query
  • TSPITR的簡單替代方案:閃回資料(如果仍可作為撤消使用)

七、確定恢復集的表空間

  • 如果要恢復的表空間中的物件與其他表空間中的物件有關係,則可以:

    • 將包含相關物件的表空間新增到恢復集中
    • 在TSPITR期間暫停和其他物件的關係
    • 刪除關係
  • 使用DBMS_TTS.TRANSPORT_SET_CHECK過程確定恢復集中的表空間是否是自包含的.

DBMS_TTS.TRANSPORT_SET_CHECK ('USERS', 'EXAMPLE');
SELECT *  FROM TRANSPORT_SET_VIOLATIONS;

八、識別將丟失的物件

  • 在目標恢復時間之後,在表空間中建立的一些物件將丟失。
  • 查詢TS_PITR_OBJECTS_TO_BE_DROPPED,以確定在TSPITR之後將丟失哪些物件。
  • 在TSPITR之前使用“匯出”,在TSPITR之後使用“匯入”以保留並重新建立丟失的物件。

九、執行RMAN TSPITR

  • 全自動TSPITR
    • 指定輔助目標
    • RMAN管理TSPITR的所有方面。
    • 這是推薦的方法。
  • 具有自動輔助例項的定製TSPITR
    • 這基於全自動的TSPITR。
    • 自定義檔案的位置。
    • 指定初始化引數。
    • 指定通道配置。
  • 使用您自己的輔助例項的TSPITR
    • 配置和管理輔助例項。

十、執行全自動TSPITR

  • 在目標例項上配置TSPITR所需的通道。

  • 使用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’;

  • 恢復指定的表空間並使它們聯機.

十一、改善TSPITR效能

RUN
{
SET NEWNAME FOR DATAFILE '$ORACLE_BASE/oradata/orcl/users01.dbf'
TO ‘/u01/backup/users01.dbf';

RECOVER TABLESPACE users UNTIL SEQUENCE 1300 THREAD 1;
}
  • 配置NEWNAME(AUXNAME)以獲取輔助集資料檔案映象副本的持久替代位置
  • 在RUN命令持續時間內將NEWNAME設定為其他位置(改變資料檔案路徑)

十二、使用RMAN管理的輔助例項執行RMAN TSPITR

  • 重新命名或重定位您的恢復集資料檔案。
  • 為一些或所有輔助設定資料檔案指定輔助目標以外的位置。
  • 在TSPITR之前建立資料檔案的映象副本備份。
  • 對輔助例項使用不同的通道配置。
  • 為RMAN管理的輔助例項指定不同的初始化引數。

十三、使用您自己的輔助例項執行RMAN TSPITR

  • 不推薦,但受支援
  • 執行以下步驟:
    • 1.為輔助例項建立一個Oracle密碼檔案。
    • 2.為輔助例項建立一個初始化引數檔案。
    • 3.驗證Oracle Net與輔助例項的連線。
    • 4.在NOMOUNT模式下啟動輔助例項。
    • 5.將RMAN客戶端連線到目標例項和輔助例項。
    • 6.執行RECOVER TABLESPACE命令。

十四、對RMAN TSPITR進行故障排除

  • 檔名衝突:使用SET NEWNAME,CONFIGURE AUXNAME和DB_FILE_NAME_CONVERT時,請確保沒有名稱衝突。
  • RMAN無法識別帶有UNDO段的表空間
  • TSPITR失敗後手工重新啟動輔助例項:關閉並以NOMOUNT模式重新啟動。

十五、從備份中恢復表

  • 何時從RMAN備份恢復表和分割槽表:
    • 少量表(no TSPITR)
    • 不在獨立的表空間中(no TSPITR)
    • Purged tables(no Flashback drop)
    • 超出可用的UNDO(no Flashback Table)
    • 在結構性DDL更改後(no Flashback Table)

十六、表恢復:圖形概述

在這裡插入圖片描述

  • 1 RMAN使用先前建立的備份將表和分割槽表恢復到指定的時間點。
    滿足前提條件,並使用RECOVER命令提供以下輸入(或提供以下引數):
    • 要恢復的表或分割槽表的名稱
    • 表或分割槽表需要恢復的時間點
    • 恢復的表或分割槽表是否必須匯入到目標資料庫中(資料泵匯入)
    • RMAN使用您的輸入來自動執行恢復指定表或分割槽表的過程。
  • 2 RMAN根據您的規範確定備份。
  • 3 RMAN建立一個輔助例項。
  • 4 RMAN會在指定的時間點之前將表或分割槽表恢復到該輔助例項中。
  • 5 RMAN建立一個包含已恢復物件的資料泵匯出轉儲檔案。(元資料 使用者資料等)
  • 6 RMAN將恢復的物件匯入目標資料庫。(資料泵匯入)

十七、前提條件和侷限性

  • 要從RMAN備份恢復表和分割槽表,目標資料庫必須是:
    • In read/write mode
    • In ARCHIVELOG mode
    • 設定為12.0或更高版本以恢復表或分割槽表。
  • 恢復的侷限性:無法恢復以下位置的表和分割槽表:
    • SYS SCHEMA
    • SYSTEM和SYSAUX表空間
    • 備用資料庫(DG ADG)

十八、指定恢復時間點

  • 通過指定表和表分割槽以使其恢復到原來的狀態:
    • UNTIL SCN integer:系統更改號(SCN)
    • UNTIL TIME 'date_string’:日期中的時間
    • 格式化:
      • NLS_LANG和NLS_DATE_FORMAT環境變數中的一個,(環境變數)
      • 日期常量,例如SYSDATE – 5
    • UNTIL SEQUENCE integer (THREAD integer):日誌序號和執行緒號

十九、表恢復的處理步驟

  • 1.執行計劃任務,並使用CONNECT TARGET命令啟動RMAN會話。

  • 2.輸入RECOVER TABLE命令。

  • 3.RMAN根據您的規範確定備份。

  • 4.如果指定了RMAN,則使用AUXILIARY DESTINATION子句建立一個輔助例項。

  • 5.RMAN會在指定的時間點之前將表或分割槽表恢復到該輔助例項中。

  • 6.RMAN建立一個數據泵匯出轉儲檔案,該檔案包含具有DUMP FILE = name和DATAPUMP DESTINATION = <OS path>的已恢復物件。

    注意:如果在必須建立轉儲檔案的位置中存在名稱為“ DUMP FILE”指定的檔案,則匯出將失敗。

  • 7.除非您指定了NOTABLEIMPORT,否則RMAN會將恢復的物件匯入目標資料庫。

  • 8.RMAN可以選擇使用REMAP TABLE和REMAP TABLESPACE子句重新命名已恢復的表或分割槽表。 (現有物件不變。)

注意:如果重新對映表,則從匯入中將排除相關物件。 您必須重新建立索引和約束