Oracle中表数据行的恢复方式

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638    QQ号:47079569    邮箱:[email protected]

 

现在很多顾客使用导出 / 导入或数据块作为一个备份方法,以防丢失多年的表或内容 ,但是因为数据库大小增加了导出的大小,更成问题的是,导出所需要的时间也增加了,最近,我的一个顾客正面临一个问题,他对于普通备份指定的时间窗口,导出,部分批次已经不再足够,相反,当用户早上回来上班批处理尚未完成。

所以问题是:导出的时间是怎样减少的呢?

答案很简单: 不进行导出 – 这节省了很多时间!

不可能– 顾客说道!前段时间我们曾有一个批量处理的问题,所以我们不得不从导口数据恢复了一些表。

 

恢复单个(或多个)表的方法

 

使用 flashback 数据库

 

如果flashback 数据库启用,你可以简单地将数据库倒回到旧的时间点。

如果可以倒回整个数据库,这个方法就有帮助,如果在相同的数据库上运行多个应用程序,这可能是不可行的,也需要计算flashback日志的数量,某些情况下,它可能足以使用保证的还原点,即便未启用 flashback 数据库,该功能也是可用的,当推出新的应用或版本时也是有帮助的,一定的时间你可以倒回数据库到特定的时点,如果应用运行良好,你可以只移动复原点,不需要一定关心flashback 日志。

 

使用备用数据库

 

如果数据卫士或其他解决方案可作为灾难恢复解决方案,您可以简单地在备用数据库上停止重做应用,然后你可以只读模式打开数据库(或使用保证的还原点甚至读写),和卸载表或看看表数据,你只需要验证您的备用数据库尚未应用故障批次,但是这会完成,如果你在批次运行之前停止应用,运行成功完成之后,再次重启应用,在少数灾难正好发生的事件中,你还是可以切换到备用,在数据库已经恢复所有的归档日志之前,可能还需要再花费几分钟 。

 

使用 RMAN 备份

 

对 RMAN而言,带有 Oracle 12c的表恢复是一个“新” 功能,在很多情况下实际上是有用的,可以减少导出的需要,但是它是如何运行的呢?

不幸的是,仍然没有办法直接使用出于rman备份的对象,相反,与表恢复一起,创建了一个辅助数据库,基本表SYSTEM,SYSAUX和撤销以及带有恢复表的表空间。

下面是RMAN 表恢复的例子:

RMAN> RECOVER TABLE demo.personen_drop UNTIL TIME “to_date(‘31.05.2013 09:30:00′,’DD.MM.YYYY HH24:MI:SS’)” AUXILIARY DESTINATION ‘/u03/orabackup/recover’;

辅助目的地是强制性的,因为这是数据文件的路径,每个默认情况下,表将被创建,因此如果表仍然存在恢复将失败,为了避免故障,或许你只是想要比较表,可以指定下列选项:

  • NOTABLEIMPORT: 在这种情况下,只有数据泵转储在DP_DUMP_DIR目录中创建
  • REMAP TABLE: 原始表还是在原处,“恢复” 表将会使用新名称导入。

下面是恢复的导出,不需要导入表:

sql statement: create or replace directory TSPITR_DIROBJ_DPDIR as ”/u03/orabackup/recover”

Performing export of tables…

EXPDP> Starting “SYS”.”TSPITR_EXP_CeFE_accc”:

EXPDP> Estimate in progress using BLOCKS method…

EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

EXPDP> Total estimation using BLOCKS method: 256 KB

EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE

EXPDP> Processing object type TABLE_EXPORT/TABLE/IDENTITY_COLUMN

EXPDP> Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

EXPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

EXPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER

EXPDP> . . exported “DEMO”.”PERSONEN_DROP” 26.34 KB 576 rows

EXPDP> Master table “SYS”.”TSPITR_EXP_CeFE_accc” successfully loaded/unloaded

EXPDP> ******************************************************************************

EXPDP> Dump file set for SYS.TSPITR_EXP_CeFE_accc is:

EXPDP> /u03/orabackup/recover/tspitr_CeFE_69803.dmp

EXPDP> Job “SYS”.”TSPITR_EXP_CeFE_accc” successfully completed at Fri May 31 10:04:17 2013 elapsed 0 00:00:38

导出完成

时间点恢复之后不执行表导入

移动自动实例

关闭自动实例

Oracle 实例关闭

因为你知道成功和所需要的时间取决于将要创建的表空间的大小,如果你有 一个 20 GB 的表空间,因为审计,你需要改变策略,记住辅助数据库有自己的具有一定大小的实例,你需要检查与服务器配合。

但是如果与你为少数批次失败事件做出的努力相比较,这或许是较好的方法,即便你不在恢复表的12c 程序上,表也是可以为11g 数据库所用,数据库复制是简单地使用RMAN – 因为RMAN 是Oracle备份最好,最简单的方法!


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *