Oracle闪回表(笔记)

简介:
Flashback是ORACLE9i开始新特性,但9I只支持FlashQuery,即根据回滚段读取表某个时间点的数据。
到了10G,Oracle通过Recyle bin(回改站)与FlashArea(闪回区)实现快速恢复删除表((Flashback Table)
和数据库时间点恢复((Flashback Database)(不需要全备份哦)。本文只记录了Flashback Table方法与特性。
Oracle10g的Drop Table并不是直正的删除,而是更名。
SQL>create table gjj_test(id number,name varchar2(64));
SQL>create index gjj_test_idx on gjj_test(id);
SQL>begin for i in 1..1000 loop insert into gjj_test values(i,'gjj');end loop;end;
SQL> select RELATIVE_FNO,bytes,blocks,extents from dba_segments where segment_name='GJJ_TEST'
  2  /
RELATIVE_FNO      BYTES     BLOCKS    EXTENTS
------------ ---------- ---------- ----------
           4      65536          8          1
SQL>drop table gjj_test
SQL> select * from recyclebin
  2  /
 
OBJECT_NAME                    ORIGINAL_NAME                    
------------------------------ ---------------
BIN$HLWT85NWSGmsv4pq+aJFUw==$0 GJJ_TEST        
SQL> select RELATIVE_FNO,bytes,blocks,extents from dba_segments where segment_name='BIN$HLWT85NWSGmsv4pq+aJFUw==$0'
  2  /
 
RELATIVE_FNO      BYTES     BLOCKS    EXTENTS
------------ ---------- ---------- ----------
           4      65536          8          1
可以看到Drop Table并不是直正的删除,而是更名为BIN$HLWT85NWSGmsv4pq+aJFUw==$0,存储空间也没有发生变化。
依赖于原表的存储过程都失效了,而建在表上的索引和触发器也会被重新命名。
SQL>select INDEX_NAME from user_indexes where table_name='GJJ_TEST';
INDEX_NAME      
--------------
BIN$wgFf1rfqTHqFiyLpP1+Fxw==$0
SQL>flashback table gjj_test to before drop;
可以发现gjj_test已恢复正常,但是索引和触发器的名字并没有被改过来,只能通过alert index ..rename更改。
但位图索引不会放到recylebin中,所以无法恢复。
如果想DROP TABLE比较彻底,可以用drop table gjj_test purge。

有一些方法控制回收站,比如可以用对象的原有名字从回收站中清除指定对象,或者用对象被删除后系统自动重命名的名字来指定清除它:
PURGE TABLE GJJ_TEST,PURGE TABLE "BIN$HLWT85NWSGmsv4pq+aJFUw==$0"
清除表时,同时也会清除依赖这张表的约束,如索引。可以指定只清除表相应的约束,如:
PURGE INDEX IDX_TEST
此外,还可以将整个表空间的回收站内容全部清除:PURGE TABLESPACE Users
也可以清除某个表空间上的回收站中某个用户的对象:PURGE TABLESPACE Users USER GJJ
当用某个普通用户登录时,只会清除它自己的对象:PURGE RECYCLEBIN
当以DBA身份登录时,可以清除所有表空间上回收站 :PURGE DBA_RECYCLEBIN
还有一个,FLASHBACK TABLE还可以把表恢复到某个时间点(SCN)
如果未启用行移动功能, 不能闪回表,
SQL>alter table gjj_test  enable row movement
SQL>FLASHBACK TABLE GJJ_Test TO SCN 2299919
可以发现数据以恢复了。


本文转自 anranran 51CTO博客,原文链接:http://blog.51cto.com/guojuanjun/283501
相关文章
|
6月前
|
SQL Oracle 关系型数据库
不小心删除表或数据后,如何利用Oracle的闪回进行恢复
不小心删除表或数据后,如何利用Oracle的闪回进行恢复
|
6月前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
6月前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之oracle cdc 抽取新增一张表 可以从savepoint恢复吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之oracle无主键的表支持同步吗如何实现
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
47 3
|
5月前
|
Oracle 关系型数据库 数据库
oracle基本操作笔记分享
oracle基本操作笔记分享
40 0
|
6月前
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用合集之同步Oracle数据时,一张表产生了大量的连接数,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
Oracle 关系型数据库 数据库
Oracle闪回:时光倒流,数据重现的魔法
【4月更文挑战第19天】Oracle数据库的闪回功能如同时光机,借助撤销段保存数据旧版,实现数据丢失或误改后的恢复。包括闪回查询、闪回表、闪回删除和闪回数据库等,适用于不同场景。使用时注意撤销段空间、保留时间和定期备份。虽非万能,但在数据保护体系中扮演重要角色。
|
6月前
|
SQL 存储 Oracle
Oracle中的Dual表:数据世界的“神奇小盒子”
【4月更文挑战第19天】Oracle的Dual表是一个虚拟表,仅含一行一列,常用于执行SQL函数、数据类型转换、测试语句和动态SQL。它是测试和便捷操作的工具,如获取当前日期(`SELECT SYSDATE FROM DUAL`)、数字转字符串(`SELECT TO_CHAR(12345) FROM DUAL`)。在存储过程、函数和触发器中也发挥重要作用,是数据库管理员的得力助手。
|
6月前
|
Oracle 关系型数据库
oracle基本笔记整理及案例分析2
oracle基本笔记整理及案例分析2