RMAN表空間時間點恢復

2021-08-27 17:37:49 字數 2595 閱讀 1135

[img]

一直想做個基於時間點的表空間恢復,今天測試了一下,做個筆記,方面以後查閱!

環境:linux 5.2 10.2.0.1

rman tspitr 使用rman進行表空間基於時間點的恢復

例項說明:

(1)先建立2個表空間。

create tablespace user01 datafile '+dg1' size 1m;

create tablespace user02 datafile '+dg1' size 1m;

(2)在每個表空間上各建立一張表。

create table scott.customers

(cust_id int,cust_name varchar2(10)) tablespace user01;

create table scott.sales

(id int,cust_name varchar2(10),sales_amount number(8,2)) tablespace user02;

(3)在每個表中插入2條記錄,提交。檢查當前的時間點,待會表空間user01要恢復到當前時間點。

insert into scott.customers values(1,'soctt');

insert into scott.customers values(2,'smith');

insert into scott.sales values(1,'scott',8000);

insert into scott.sales values(1,'smith',10000);

commit;

alter system switch logfile;

alter system switch logfile;

alter system switch logfile;

date

2023年 02月 29日 星期三 22:53:57 cst

(4) truncate 表1,往表2中插入2條記錄。在表空間1中再建立乙個表。

truncate table scott.customers;

insert into scott.sales values(3,'scott',6000);

insert into scott.sales values(4,'blake',6700);

commit;

create table scott.employee(id int,name varchar2(10)) tablespace user01;

(5) 利用rman進行表空間1基於時間點的恢復。

--rman部分恢復表空間

recover tablespace user01

until time "to_timestamp('2012-02-29 22:53:57','yyyy-mm-dd hh24:mi:ss')" ----此處也可以通過scn來恢復,二者等價timestamp_to_scn

auxiliary destination '/home/oracle/backup';

(6)將表空間user01 聯機, 檢查表1的資料是否找回來,檢查表2的資料是否是4條,檢查新建立的表是否已經不存在。

alter tablespace user01 online; ---recover的時候會自動offline

select * from scott.customers;

cust_id cust_name

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

1 soctt

2 smith

select * from scott.sales;

id cust_name sales_amount

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

1 scott 8000

1 smith 10000

3 scott 6000

4 blake 6700

select * from dba_tables where owner = 'scott' and table_name='employee';

no rows selected

一切如我們所願,此時,表空間不完全恢復完成。

注意:只有自包含的表空間,才能基於單獨不完全恢復。所謂自包含,是指該錶空間中的物件不依賴於其它表空間中的物件,如該表空間中索引的基本在其它表空間,該表中某些表的lob列放在其它表空間。

如在上例中,執行:

create index scott.idx_customers on scott.customers(cust_name) tablespace user02;

begin

dbms_tts.transport_set_check('user02',true);

end;

select * from transport_set_violations;

begin

dbms_tts.transport_set_check('user01,user02',true);

end;

select * from transport_set_violations;

不會有任何提示,因為user01/user02表空間作為乙個集合,是自包含的。

RMAN基於時間點的不完全恢復

備份 全庫備份。啟動資料庫到archivelog模式 rman target rman rman rman backup database plus archivelog delete input 刪除兩個使用者及相關表後。恢復部分內容 基於時間點的恢復。root ccj 2009 10 22 ll...

oracle恢復表資料至某個時間點

oracle資料update,delete 後怎麼恢復到以前的資料 1 select from v sql where sql text like update map optcbl point 70 set shape 查出你需要恢復的時間點 2 create table t table reco...

基於時間點恢復 mysql binlog

data mysq mysqlbin.000026 mysqlbinlog檔案,恢復如下內容 注意 按照時間點恢復時,可能同乙個時間點有其他的操作,要結合上下文的時間選取 at 523 181113 17 15 44server id 161 end log pos 554 crc32 0x2ad4...