防止在没有 SET AUTOCOMMIT OFF 的情况下自动提交 DROP

0 oracle sqlplus

我丢弃了我的表,我丢失了我的数据,我无法回滚它,因为DROP语句会自动提交。如何在DROP不使用的情况下防止自动提交操作SET AUTOCOMMIT OFF

Yas*_*irA 7

DROPTRUNCATE是数据定义语言命令,因此不能回滚。但是,在 Oracle 中,您可以使用以下技术来恢复您的表:

  1. 闪回掉落
  2. 闪回数据库
  3. 表空间时间点恢复
  4. 从备份中进行表级恢复(12c 中的新增功能)

闪回掉落

如果您的数据库中启用了回收站,您可以使用以下命令来恢复您的表(如果它仍在回收站中)。

SQL> flashback table1 to before drop;
Run Code Online (Sandbox Code Playgroud)

如果您的表不在回收站中(它被用户手动清除或由于空间压力),您可以尝试将数据库从备份恢复到另一台主机,并使用以下命令将数据和相关元数据导出/导入到生产数据库数据泵导出和导入命令(或DBMS_DATAPUMP包)。

闪回数据库

如果您启用了闪回数据库(检查视图中的flashback_databasev$database),您可以将数据库闪回到删除表之前的点。但是您必须确保闪回日志中有足够的数据,您可以使用v$flashback_database_log视图进行检查。

表空间时间点恢复

要使用表空间时间点恢复 (TSPITR) 恢复您的表,您可以使用该recover tablespace until ...命令。但是一定要通过查看SYS.TS_PITR_OBJECTS_TO_BE_DROPPED视图来检查正在恢复的表空间中可能丢失的对象。这些对象是在您在此命令中指定的恢复点之后创建的。您可以在 TSPITR 之前导出它们,并在 TSPITR 完成后重新导入。

从备份进行表级恢复

Oracle Database 12c 中的新功能是恢复单个表的能力。您可以通过recover table在 RMAN 中使用命令来使用它,它的工作方式与 TSPITR 非常相似——创建辅助实例——但在更细粒度的(表)级别上。

也可以看看。

  1. 数据库管理员指南中的使用闪回删除和管理回收站
  2. 使用数据库备份和恢复用户指南中的闪回数据库和还原点
  3. 数据库备份和恢复用户指南中的执行 RMAN 表空间时间点恢复 (TSPITR)
  4. Oracle Database 12c 第 1 版 (12.1.0.1) 新特性指南中的备份表级恢复
  5. Oracle 数据库备份和恢复用户指南》中的从 RMAN 备份恢复表和表分区