不小心删除表或数据后,如何利用Oracle的闪回进行恢复

简介: 不小心删除表或数据后,如何利用Oracle的闪回进行恢复

闪回表以及闪回表中的数据

回收站功能

回收站这个特性主要的好处就是在误删除一个表时有一个恢复机制,不必通过数据库还原来实现。避免大量的人工误操作。以及数据库还原等复杂的操作。让数据库的管理、维护更加简单、方便。如果是SQL SERVER数据库,就必须还原整个数据库来找到被DROP掉的表。

TEST_USER表

表TEST_USER的数据.(当前北京时间 2021-07-21 12:58)

场景1:不小心删除了重要数据,如何进行闪回。

delete from test_user where id in (1,4,5);
commit;

表TEST_USER的数据.(当前北京时间 2021-07-21 13:00)

将表闪回到北京时间 2021-07-21 12:58

1.启用对应表的行移动功能

使用表所在用户进行执行,否则在执行闪回时,会报错:ORA-08189: cannot flashback the table because row movement is not enabled

alter table TEST_USER enable row movement;
2.执行闪回到具体的时间
FLASHBACK TABLE TEST_USER TO TIMESTAMP TO_TIMESTAMP('2021-07-21 12:58:00', 'YYYY-MM-DD HH24:MI:SS');

注意,当不小心在简单视图上删除了数据,需要分析创建视图的sql,并且找到基表进行数据恢复。

3.查看闪回结果

闪回成功。

场景2:不小心删除了TEST_USER表

删除前的数据

1.删除表
drop table test_user;
2.恢复表

恢复最近一次删除的表,需要尽快恢复,

flashback table test_user to before drop;

备注: 如果恢复时,表名已经存在了,可以使用 flashback table test_user to before drop rename to test_user2 进行重新命名;

场景3:不小心删除了多次TEST_USER表后,该如何选择性的恢复。

当前表的数据(时间:2021-07-23 13:37)

删除test_user表(时间:2021-07-23 13:37)

drop table test_user;

又创建了表test_user,放入一些内容,再删除了该表test_user。(时间:2021-07-26 13:00)

drop table test_user;

查看回收站,如下所示,虽然ORIGINAL_NAME一致,但是RECYCLEBIN NAME则有所不同。RECYCLEBIN NAME的命名规则为BING U I D GUIDGUIDVersion 其中GUID为GlobalUID,是一个全局唯一、24个字符长的标识对象,它是ORACLE内部使用的标识。 其中$version是ORACLE数据库分配的版本号。

指定RECYCLEBIN NAME进行恢复第一个表user_test(时间:2021-07-26 13:03)

flashback table "BIN$nNNucRqeQU+sjKjL7nIw6A==$0" to before drop;

恢复成功,查看当前表的内容(时间:2021-07-26 13:03)

清空回收站

1.如果希望完全删除该表,而不让该表放入回收站(在回收站中间将仍然占有空间),可以使用以下命令永久删除该表。当然这样操作后,也不能通过使用闪回特性闪回该表了。

DROP TABLE TABLE_NAME PURGE;

2.如果在删除名为 TEST 的特定表之后需要从回收站中清除它,可以执行如下sql,此命令将从回收站中删除表 TEST 及所有相关对象,如索引、约束等,从而节省了空间

PURGE TABLE TABLE_NAME;

或者

PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";

3.在回收站删除索引

PURGE INDEX IN_TEST1_O1;

4.删除表空间下的所有对象

PURGE TABLESPACE xxxxx;

5.数据仓库类型的环境中,用户创建和删除许多临时表,为该表空间中特定用户清空回收站。

PURGE TABLESPACE USERS USER SCOTT;

6.清除当前数据库下回收站所有的内容(DBA权限)

PURGE DBA_RECYCLEBIN

Flashback Drop注意事项

  1. 只能用于非系统表空间和本地管理的表空间。系统表空间中,表对象删除后就真的从系统中删除了,而不是存放在回收站中。
  2. 对象的参考约束不会被恢复,指向该对象的外键约束需要重建。
  3. 对象能否恢复成功,取决于对象空间是否被覆盖重用。
  4. 当删除表时,依赖于该表的物化视图也会同时删除,但是由于物化视图并不会放入recycle binzhong,因此当你执行flashback drop时,并不能恢复依赖其的物化视图。需要DBA手工重建。
  5. 对于回收站(Recycle Bin)中的对象,只支持查询。不支持任何其他DML、DDL等操作。

关注公众号:熊猫Jay字节之旅,了解更多 AI 技巧 ~

相关文章
|
3天前
|
SQL 数据采集 Oracle
实时计算 Flink版产品使用问题之如何读取oracle中的blob类型的数据
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之在进行Oracle数据库的全量同步时,只同步了一条数据而源表实际上包含多条数据,是什么原因
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4天前
|
Oracle 关系型数据库 数据库
实时计算 Flink版产品使用问题之连接到Oracle数据库但无法读取到数据,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4天前
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用问题之同步oracle表时,任务不报错,但是读不到数据,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
14天前
|
Oracle 关系型数据库 数据库
oracle误删除数据的恢复方法
oracle误删除数据的恢复方法
|
27天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之是否支持多并行度采集Oracle全量数据
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
27天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之从Oracle数据库同步数据时,checkpoint恢复后无法捕获到任务暂停期间的变更日志,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
27天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之如何SQL同步数据到Oracle数据库中
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
27天前
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用合集之同步Oracle数据时,一张表产生了大量的连接数,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
27天前
|
Oracle Java 关系型数据库
实时计算 Flink版产品使用合集之在同步Oracle数据时,需要下载并添加到项目中的jar包主要包括哪些
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。