Oracle RMAN進階恢複概述(三) 如何恢複資料表空間時間點

來源:互聯網
上載者:User

使用資料表空間時間點恢複(TSPITR)可以將一個或多個非SYSTEM資料表空間恢複到與資料庫其他部分不同的某個時間點上。這點和Flashback 有點類似。 比如使用者誤刪了3張表,我們就可以用TSPITR恢複。

先看TSPITR 的工作流程,如下圖所示:

(1) 在輔助執行個體上用target的備份組restore 資料檔案

(2) 在輔助庫上用target的歸檔檔案recover 資料檔案

(3) 在輔助庫上匯出相關資料

(4) 修改主庫的控制檔案

(5) 用輔助庫上匯出檔案匯入輔助庫上。

幾個相關相關的定義:

輔助執行個體(Auxiliary instance):我們建立的臨時執行個體,RMAN可以使用這個執行個體執行TSPITR,完成TSPITR操作後,可以刪除輔助執行個體。

次要資料庫(Auxiliary database):主要資料庫的一個複本或子集,用於資料表空間的臨時恢複。

主要資料庫(Primary database):需要TSPITR的資料庫。

恢複集(Recovery set):構成恢複到某一個時間點資料表空間的資料表空間或資料檔案,SYSTEM資料表空間資料檔案不能作為恢複集的一部分。

輔助集(Auxiliary set):需要執行TSPITR的其他目標資料庫檔案集。 輔助集包括備份控制檔案,復原和撤銷段資料表空間資料檔案,system資料表空間資料檔案,次要資料庫的聯機重做日誌,以及一個可選的位於次要資料庫中的臨時的資料表空間。

目標執行個體(target instance):包含將要恢複的資料表空間

一、執行自動的TSPITR

1、為TSPITR 做準備

在開始執行TSPITR之前需要完成一些步驟。

(1) 確定還原的時間點

這是最關鍵的因素。 我們需要認真對待這項操作,因為如果沒有使用恢複目錄,則資料表空間的恢複是一次性的過程。 如果錯誤地標識了恢複的時間點,則不能重新來過。 如果使用恢複目錄,則不存在這種限制。

(2) 確定傳送集中的對象是自包含的

應該使用TS_PITR_CHECK 視圖來確保恢複集是完整的,並且標識所有可能要用到的其他資料表空間。 首先需要檢查TS_PITR_CHECK 視圖來確保沒有其他相關的資料表空間。 比如我們檢查DAVE 資料表空間,範例程式碼如下:

/* Formatted on 2010/7/7 17:10:00 (QP5 v5.115.810.9015) */

SELECT   obj1_owner,

obj1_name,

obj1_type,

reason

 FROM   sys.ts_pitr_check

WHERE   (ts1_name IN ('BL') AND ts2_name NOT IN ('BL'))

OR (ts1_name NOT IN ('BL') AND Ts2_Name IN ('BL'))

如果沒有衝突,則不會返回任何行。 如果存在衝突,則會看到描述的每個衝突的行。如果有衝突,我們也需要還原關聯的資料表空間。

(3) 儲存可能丟失的對象或資料

如果我們將Dave資料表空間恢複之前的某個時間,那麼在這個時間以後的任何更改,如建立對象,更新,插入或者刪除,都會丟失。 丟失這些對象可能沒有問題,但假設我們需要儲存這些資料,則需要匯出將要儲存的資料,或者將資料複製到資料庫中的其他位置。 Oracle 提供了視圖 TS_PITR_OBJECTS_TO_BEDROPPED, 該視圖列出了將在恢複操作期間丟失的所有對象。 使用該視圖可以確定資料表空間中的對象在恢複之後的狀態。

SQL> col owner format a10

SQL> col name format a10

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

SQL> SELECT  *  FROM   ts_pitr_objects_to_be_dropped WHERE  tablespace_name = 'BL' ;

OWNER      NAME       CREATION_TIME       TABLESPACE_NAME

---------- ---------- ------------------- ------------------------------

BL         BL         2010-07-07 19:24:18    BL

2、 執行實際的TSPITR

Oracle Database 10g將為我們執行自動的TSPITR,這意味著它將建立輔助執行個體。 在這種情況下,我們只需要串連目標資料庫和可選的恢複目錄(如果有的話),並且執行recover tablespace 命令。 RMAN 將為我們完成剩餘的工作。

下面示範使用recover tablespace 命令恢複BL 資料表空間的樣本。 我們使用可選的auxiliary destination來指示RMAN 和 Oracle 應該在何處建立與次要資料庫關聯的檔案。 使用該參數使得該恢複成為一個具有自動化執行個體的自訂TSPITR。 如果沒有使用該參數,TSPITR 就稱為完全自動的TSPITR 恢複。

需要注意的是,如果使用auxiliary destination參數,則應該已經建立了目標目錄,並且Oracle 必須能夠寫入到該目標目錄。 在目標路徑名中沒有尾碼的斜杠(/或/),如果包含斜杠將會導致TSPITR失敗,並且獲得錯誤訊息無法確切地描述該問題。命令如下:

Recover tablespace BL until time "to_date('2010-7-7 20:38:18','yyyy-mm-dd hh24:mi:ss')" auxiliary destination 'F:/bl'

在執行這個命令之前有幾點注意的地方,因為TSPITR 會用已經存在的備份組和歸檔檔案來建立次要資料庫,所以在執行該命令之前需要確認target 資料庫有備份和歸檔,並且控制檔案也要有備份。

RMAN> Recover tablespace BL until time "to_date('2010-7-7 20:40:18','yyyy-mm-dd hh24:mi:ss')" auxiliary destination 'F:/bl';

啟動 recover 於 07-7月 -10

使用目標資料庫控制檔案替代恢複目錄

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: SID=145 裝置類型=DISK

RMAN-05026: 警告: 假定以下資料表空間集適用於指定的時間點

資料表空間列表要求具有 UNDO 段

資料表空間 SYSTEM

資料表空間 UNDOTBS1

使用 SID='iEfs' 建立自動執行個體  -- 這裡是系統自動建立的次要資料庫名

供自動執行個體使用的初始化參數:

db_name=BL

db_unique_name=iEfs_tspitr_BL

compatible=11.2.0.0.0

db_block_size=8192

db_files=200

sga_target=280M

processes=50

db_create_file_dest=F:/bl

log_archive_dest_1='location=F:/bl'

#No auxiliary parameter file used

啟動自動執行個體 BL

Oracle 執行個體已啟動

系統全域地區總計     292933632 位元組

Fixed Size                     1374164 位元組

Variable Size                100665388 位元組

Database Buffers             184549376 位元組

Redo Buffers                   6344704 位元組

自動執行個體已建立

對恢複集資料表空間運行 TRANSPORT_SET_CHECK

TRANSPORT_SET_CHECK 已成功完成

記憶體指令碼的內容:

{

# set requested point in time

set until  time "to_date('2010-7-7 20:40:18','yyyy-mm-dd hh24:mi:ss')";

# restore the controlfile

restore clone controlfile;

# mount the controlfile

sql clone 'alter database mount clone database';

# archive current online log

sql 'alter system archive log current';

# avoid unnecessary autobackups for structural changes during TSPITR

sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.