首页 > 代码库 > Oracle以TSPITR方式恢复表空间数据一例

Oracle以TSPITR方式恢复表空间数据一例

通常见到的还原操作,都是将所有的表空间和数据还原到相同的一个时间点上,无论是否是故障恢复点。而 TSPITR 则是以表空间为粒度单元,单独将 某个表空间内容还原到一个特定可恢复时间点上。

举一个例子:一个 Oracle 数据库运行在归档模式下,在夜间22点保留一份完全备份。早上8点时候,某个特定表空间上数据表(单个表独占表空间)发生一个误操作,数据损坏。要求在不伤害其他数据表数据的情况下,将表空间数据恢复到早上5点。 这样部分数据恢复的场景,就是 TSPITR 的典型应用。 在实际场景中,常常希望恢复部分的数据到过去时间点上。

TSPITR 目前最方便的方法是使用 RMAN 进行自动的恢复。

其使用前提为两个:

1. 必须存在相应的备份集合

2. 表空间对象是子包含的 ,也就是其他表空间中不包括与这个表空间对象相关的对象数据(互相独立)

恢复步骤和原理如下:

RMAN 三个对象集合: catalog 、 target 和 auxiliary 。 其中 auxiliary 就是用于辅助 target 各种备份还原要求的操作数据库 。这个库在 TSPITR 中扮演临时数据还原作用的;

首先完成数据检查工作,确定备份集合和表空间完整性 ;

当前时间是 T1 ,如果需要将数据还原为 T0 。 使用 RMAN 提取备份数据集合,还原到 auxiliary 上形成一个新的实例数据库。选择性应用归档日志序列,还原 auxiliary 到 TO 时间点 ;

使用 expdp 工具从 auxiliary 中导出目标表空间为 dump 对象 。注意:还原 auxiliary 并不是 100% 重建 target ,而是 选择系统运行表空间和目标表空间 ;

在 target 数据库中删除原表空间 。 使用 impdp 工具导入 dump 文件进入 target 数据库 ;

清理环境,将创建的 auxiliary 数据库删除 。

这种系列操作,如果使用 RMAN 命令系列是可以逐步完成的。自动化 RMAN 的 TSPITR 操作也是对这个过程的完全自动化运行。

下面通过实验来进行演示操作:

--创建测试用户zlm并赋予权限

    • 本文来自:Linux学习教程网

Oracle以TSPITR方式恢复表空间数据一例