首页 > 数据库 > Oracle > 基于表空间的时间点恢复(理论)
基于表空间的时间点恢复(Tablespace Point-In-Time Recovery, TSPITR)
我第一次接触这个恢复手段时很自然的产生了这样一个疑问:不是已经有了表空间恢复方法吗?怎么又来了个基于表空间的时间点恢复?二者有什么区别呢?
疑问还是需要我自己通过学习和思考才能解决:
在一本书上看到了这样一句话:“不能将单个表空间或数据文件还原至与数据库其余部分所处时间点不同的某个时间点。”我们一步一步来理解:
所谓“表空间恢复”首先肯定是完全恢复!是指利用最近的备份和完整的归档日志、在线日志将某个被损坏的表空间(或其中的数据文件)恢复到其正常状态。虽然是对某个表空间或数据文件进行恢复,但确实是将该表空间或数据文件恢复到与数据库中其他文件处于同一当前时间和状态。
因此这种“表空间恢复”能解决的情况是:数据库中某个表空间或数据文件损坏,将其恢复至当前可用状态。
而“基于表空间的时间点恢复”是指
因此这种“基于表空间的时间点恢复”能解决的情况是:将数据库中某个表空间恢复到过去某时间点的状态,而其余表空间仍然保持现有状态。
TSPITR中的术语:
主数据库:即生产数据库;
恢复集(recovery set):即在主数据库上需要执行TSPITR的表空间的集合。注意,当在恢复集的表空间上执行TSPITR时,要求这些表空间必须是自包含的。
辅助数据库(auxiliary database):即主数据库的一个副本数据库,其作用是在其上将恢复集中的表空间恢复到过去某时间点。辅助数据库的所有数据文件均来自主数据库,而且必须包括主数据库的system表空间,undo表空间,控制文件和恢复集中包括的所有表空间。
实现TSPITR的手段
用户管理方式和RMAN方式。
用户管理方式是完全手动的方式,对于了解TSPITR的全过程有帮助。
而RMAN方式有两种方式:自动化的TSPITR方式(其中还包括可配置选项)和纯手工方式。
准备TSPITR
1、 检查恢复集表空间是否为自包含
2、 检查是否存在恢复集表空间的数据文件备份
3、 检查是否存在辅助集的数据文件和文件备份
4、 检查执行TSPITR后丢失的对象
准备主数据库
主要工作就是准备构建辅助数据库所要用到的数据文件备份和控制文件备份等
TSPITR执行过程(纯手工方式)
1、 建立辅助数据库:
1) 建立辅助实例服务;
2) 建立辅助实例参数文件:利用SPFILE文件创建成文本格式的PFILE并修改其中相关参数;
3) 复制主数据库中恢复集数据文件和辅助集文件;
4) 启动辅助实例并加载辅助数据库;
5) 使恢复集和辅助集数据文件联机;
2、 恢复辅助数据库到TSPITR:
1) 在辅助数据库上执行不完全恢复将辅助数据库恢复到过去某时间点;
2) 并已resetlogs方式打开辅助数据库;
3) 在辅助数据库上建立临时表空间:因为在执行exp或expdp时需要执行排序从而用到临时表空间;
3、 利用已恢复的辅助数据库恢复主数据库:
1) 导出辅助数据库的恢复集表空间元数据:
set ORACLE_SID=auxi;
exp ‘sys/syspwd@auxi as sysdba’ point_in_time_recover=y tablespace=user01 file=user01.dmp
2) 使主数据库的恢复集表空间脱机,脱机后使用辅助数据库的恢复集数据文件覆盖主数据库原有的数据文件;
3) 导入恢复集表空间元数据到主数据库:
imp ‘sys/syspwd@oridb as sysdba’ point_in_time_recover=y datafiles=d:oridbuser01.dmp file=user01.dmp
4) 使恢复集表空间联机
4、 删除辅助实例和数据库
完成![@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14338195/viewspace-1052526/ ,如需转载,请注明出处,否则将追究法律责任。