Heim  >  Artikel  >  Datenbank  >  RMAN表空间时间点恢复

RMAN表空间时间点恢复

WBOY
WBOYOriginal
2016-06-07 17:12:001071Durchsuche

一直想做个基于时间点的表空间恢复,今天测试了一下,做个笔记,方面以后查阅!环境:Linux 5.2 10.2.0.1RMAN TSPITR 使用rman进

一直想做个基于时间点的表空间恢复,今天测试了一下,做个笔记,方面以后查阅! 

环境: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

2012年 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;

会提示:Index SCOTT.IDX_CUSTOMERS in tablespace USER02 points to table SCOTT.CUSTOMERS in tablespace USER01.

begin

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

end;

select * from transport_set_violations;

不会有任何提示,因为user01/user02表空间作为一个集合,是自包含的。

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn