实验 表空间时间点恢复TSPITR(Tablespace Point In Time Recovery)

130 篇文章 2 订阅
52 篇文章 0 订阅

表空间时间点恢复TSPITR(Tablespace Point In Time Recovery)

 

不完整恢复必须应用到整个数据库.

 

TSPITR:依据目标数据库的表空间的一个子集来创建辅助数据库,仅在此子集上执行不完整恢复

       然后使用辅助数据库的表空间来替代目标数据库中的表空间,最终结果看起来好像仅

       恢复了和还原了该子集,保持目标数据库其余部分是最新的,手动完成此任务很繁琐.

      

适用于:

  (1)在一个逻辑上独立的表空间中,重要表中的行数据受损或被删除;

     逻辑上独立指其他表空间中的对象与其不存在索引或父子表关系.

  (2)误用ddl更改了表空间中的一个或多个表的结构,因此无法使用闪回表来恢复这些表,比如truncate

  (3)使用purge选项删除了表.

不适用:

  (1)已删除的表空间

  (2)如果重命名的表空间,无法恢复到重命名之前的时间点

 

术语:

  目标时间:将表空间恢复到哪个时间点或scn.

  恢复集:包含将要予以恢复的表空间的数据文件组.

  辅助集:恢复表空间需要的其他数据文件,比如SYSTEM,UNDO,TEMP表空间数据文件

  辅助目标:存储辅助集的临时位置,存储辅助文件集的临时位置,包括联机重做日志,归档,和恢复过程中控制文件副本

 

步骤:

  (1)使用随机生成的名称自动启动辅助实例

  (2)将控制文件还原到辅助实例,加载辅助数据库

  (3)将恢复集的数据文件还原到辅助数据库

  (4)将辅助集的数据库文件还原到辅助数据库

  (5)将辅助集的数据库恢复到期望时间点

  (6)从辅助数据库中导出已恢复表空间的字典元数据

  (7)将恢复表空间的字典元数据导入到目标数据库

  (8)删除所有辅助文件

  (9)手动执行,将表空间联机

 

5 具体实验:

 

(1)创建测试数据

create tablespace pitr datafile '/u01/app/oracle/oradata/orcln/pitr.dbf' size 10m;

create tablespace pitr_ind datafile '/u01/app/oracle/oradata/orcln/pitr_ind.dbf' size 10m;

 

create user pr identified by pr default tablespace pitr;

grant connect,resource,dba to pr;

 

conn pr/pr

create table test (id number);

create index i_test on test(id) tablespace pitr_ind;

insert into test values(1);

commit;

 

select segment_name,segment_type,tablespace_name from user_segments;

 

(2)备份:

rman target /

RMAN> backup database plus archivelog;

 

删除表:

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

select sysdate from dual; 

2014-10-10 14:22:03

select dbms_flashback.get_system_change_number from dual;

1121027 

truncate table test ;

 

(3) 检查表空间的依赖性,是否自包含

 

检查名为test表空间的对象是否依赖其他表空间的任何对象,

以及其他表空间的对象是否依赖test表空间的对象

 

select * from sys.ts_pitr_check 

where (ts1_name in ('PITR','PITR_IND') and ts2_name not in ('PITR','PITR_IND')) 

or (ts1_name not in ('PITR','PITR_IND') and ts2_name in ('PITR','PITR_IND'));

 

select * from sys.ts_pitr_check 

where (ts1_name in ('PITR') and ts2_name not in ('PITR')) 

or (ts1_name not in ('PITR') and ts2_name in ('PITR'));

 

确定丢失对象可以先导出

select owner, name, tablespace_name,

       to_char(creation_time, 'yyyy-mm-dd:hh24:mi:ss')

  from ts_pitr_objects_to_be_dropped

 where tablespace_name in ('PITR', 'PITR_IND')

   and creation_time >

       to_date('2014-01-06 03:29:45', 'yyyy-mm-dd:hh24:mi:ss')

 order by tablespace_name, creation_time;

 

将表空间pitrpitr_ind ofline;

 

Alter tablespace pitr offline;

Alter tablespace pitr_ind offline;

 

(4)rman自动执行tspitr

 

Mkdir /home/oracle/pitr

 

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

rman target /

sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';

recover tablespace pitr,pitr_ind until time '2014-10-10 14:22:03' auxiliary destination '/home/oracle/pitr';

或者:

Recover tablespace pitr,pitr_ind until scn 1121027  auxiliary destination '/home/oracle/pitr';

 

(5)online tablespace

 

select tablespace_name,status 

from dba_tablespaces

where tablespace_name in ('PITR', 'PITR_IND');

 

alter tablespace pitr online;

alter tablespace pitr_ind online;

 

conn pr/pr 

select * from test;

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值