oracle 闪回表定义,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

可以发现数据以恢复了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值