您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

RMAN表空间时间点恢复

2024/3/10 5:53:31发布31次查看
一直想做个基于时间点的表空间恢复,今天测试了一下,做个笔记,方面以后查阅!环境: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表空间作为一个集合,是自包含的。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product