我丢弃了我的表,我丢失了我的数据,我无法回滚它,因为DROP
语句会自动提交。如何在DROP
不使用的情况下防止自动提交操作SET AUTOCOMMIT OFF
?
DROP
和TRUNCATE
是数据定义语言命令,因此不能回滚。但是,在 Oracle 中,您可以使用以下技术来恢复您的表:
如果您的数据库中启用了回收站,您可以使用以下命令来恢复您的表(如果它仍在回收站中)。
SQL> flashback table1 to before drop;
Run Code Online (Sandbox Code Playgroud)
如果您的表不在回收站中(它被用户手动清除或由于空间压力),您可以尝试将数据库从备份恢复到另一台主机,并使用以下命令将数据和相关元数据导出/导入到生产数据库数据泵导出和导入命令(或DBMS_DATAPUMP
包)。
如果您启用了闪回数据库(检查视图中的flashback_database
列v$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 非常相似——创建辅助实例——但在更细粒度的(表)级别上。
也可以看看。
归档时间: |
|
查看次数: |
1153 次 |
最近记录: |