[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...