云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Oracle 闪回特性(FLASHBACK & RECYCLEBIN)

Oracle 闪回特性(FLASHBACK & RECYCLEBIN)

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 23:49:11

简介

Flashback 系列包含:

1、 从Oracle 9i开始的flashback query 2、 从Oracle 9i开始的flashback exp 3、 Oracle 10g的flashback database 4、 Oracle 10g 的flashback table 5、 Oracle 10g 的flashback drop

6、 Oracle 10g 的flashback version query 7、 Oracle 10g 的flashback transaction query

flashback table 表名 to before drop:只能恢复drop的表,使用的是RECYCLEBIN。不需要开启数据库的flashback功能,但是需要开启session或者system级别的RECYCLEBIN,如alter session set RECYCLEBIN =on。

而以下基于scn/timestamp的闪回则需要开启数据库的flashback功能,即alter database flashback on flashback table 表名 to scn/timestamp--可以恢复delete、drop的表

flashback database to scn/timestamp –-可以恢复delete、drop、truncate的表

1.Drop 表的恢复

Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)

FLASHBACK DROP 特性允许在不丢失任何数据库的情况下将指定的表恢复至其被删除的时间点,并保持数据库为当前状态。闪回删除并不是真正的删除表,而是把该表重命名并放入回收站(recyclebin),类似于Windows的回收站一样。当某个活动对象需要使用该表所占用的recyclebin空间时,该表才会被真正删除。只要recyclebin空间未被复用,表即可恢复。本文主要讲述了FLASHBACK DROP特性以及闪回特性中回收站(RECYCLEBIN)的原理。

1.1 FLASHBACK DROP 的功能-- recyclebin

将先前删除的表恢复到删除之前的状态 恢复该表的索引以及触发器,授权

恢复该表的约束,包括唯一约束、主键约束、非空约束。外键约束不可恢复 可以实现基于系统和基于会话的flash drop操作

drop table(Oracle 10g)命令并不真正删除表,在内部被映射为rename命令,即是将其重命名之后放入回收站。

alter system set recyclebin = on | off;

alter session set recyclebin = on | off;--session级别若有设置,以session级别的设置为准

1.2 理解表重名的过程

scott@ORCL> create table tb_emp as select * from emp; --基于emp表来创建表tb_emp

scott@ORCL> alter table tb_emp add constraint empno_pk primary key(empno); --添加主键约束,将产生主键索引

scott@ORCL> alter table tb_emp add constraint ename_uk unique(ename); --添加唯一约束,将产生唯一索引

scott@ORCL> alter table tb_emp add constraint sal_ck check(sal>0); --添加check约束

scott@ORCL> alter table tb_emp modify job constraint job_nn not null; --添加非空约束

scott@ORCL> alter table tb_emp add constraint dept_fk --添加外键约束 foreign key(deptno) references dept(deptno) on delete cascade;

scott@ORCL> select constraint_name,constraint_type --查看tb_emp表上的所有约束 from user_constraints where table_name='TB_EMP';

CONSTRAINT_NAME C --------------- - EMPNO_PK P ENAME_UK U SAL_CK C JOB_NN C DEPT_FK R

--下面查看表tb_emp所在文件的id,块的起始id,大小,以及该对象的对象id等

sys@ORCL> select file_id,block_id,bytes from dba_extents where segment_name='TB_EMP'; FILE_ID BLOCK_ID BYTES ---------- ---------- ---------- 4 393 65536

sys@ORCL> select object_name,object_id from dba_objects --查看表tb_emp的对象ID where object_name = 'TB_EMP'; OBJECT_NAME OBJECT_ID -------------------- ---------- TB_EMP 54493

--对表进行重命名

scott@ORCL> alter table tb_emp rename to tb_employees;

sys@ORCL> select file_id,block_id,bytes from dba_extents --重命名后所在文件的id,块的起始id,大小没有发生变化 where segment_name='TB_EMPLOYEES';

FILE_ID BLOCK_ID BYTES ---------- ---------- ---------- 4 393 65536

sys@ORCL> select object_name,object_id from dba_objects --重命名后对象ID没有发生变化 where object_name = 'TB_EMPLOYEES';

OBJECT_NAME OBJECT_ID -------------------- ---------- TB_EMPLOYEES 54493

scott@ORCL> select index_name,index_type --重命名后索引和约束也没有发生变化 from user_indexes where table_name='TB_EMPLOYEES' union all

select constraint_name,constraint_type

from user_constraints where table_name='TB_EMPLOYEES';

INDEX_NAME INDEX_TYPE

------------------------------ --------------------------- EMPNO_PK NORMAL ENAME_UK NORMAL EMPNO_PK P ENAME_UK U SAL_CK C JOB_NN C DEPT_FK R

对于表的重命名仅仅是修改了表名,而对于表对象的ID,以及表存放的位置,块的起始,大小等并未发生实质性的变化。

1.3 删除表并实施闪回

-------------------------------------------------------------------------------------------------------- alter session set recyclebin = on; --或者alter system set recyclebin = on;

create table joy_test1 as select * from hr.employees t where t.employee_id <= 103 ;

alter table joy_test1 move tablespace users;--drop删除system表空间的表不进入回收站

--加上purge删除的表也不进入回收站 drop table joy_test1 [purge]; select * from user_recyclebin;

flashback table joy_test1 to before drop; purge recyclebin; --清空回收站

-------------------------------------------------------------------------------------------------------- 1.删除表tb_employees并查看回收站的信息

scott@ORCL> select object_name,original_name,can_undrop,base_object from user_recyclebin;

scott@ORCL> drop table tb_employees; --system表空间的表被drop后,不会存于回收站而是直接删除

OBJECT_NAME ORIGINAL_NAME CAN BASE_OBJECT ------------------------------ -------------------------------- --- ----------- BIN$k1zC3yEiwZvgQAB/AQBRVw==$0 TB_EMPLOYEES YES 54493 BIN$k1zC3yEhwZvgQAB/AQBRVw==$0 ENAME_UK NO 54493 BIN$k1zC3yEgwZvgQAB/AQBRVw==$0 EMPNO_PK NO 54493

scott@ORCL> select * from \可以使用回收站名来访问对象,但要对对象加双引号

2.实施闪回并查看闪回后的情况

fashback table to before drop [rename to ];

将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。

INDEX_NAME INDEX_TYPE

------------------------------ --------------------------- BIN$k1zC3yEgwZvgQAB/AQBRVw==$0 NORMAL BIN$k1zC3yEhwZvgQAB/AQBRVw==$0 NORMAL BIN$k1zC3yEcwZvgQAB/AQBRVw==$0 P BIN$k1zC3yEdwZvgQAB/AQBRVw==$0 U BIN$k1zC3yEewZvgQAB/AQBRVw==$0 C BIN$k1zC3yEfwZvgQAB/AQBRVw==$0 C

scott@ORCL> select index_name,index_type --查看闪回后索引,约束的情况,发现其名称仍然为BIN$名称 from user_indexes where table_name='TB_EMPLOYEES' union all

select constraint_name,constraint_type

from user_constraints where table_name='TB_EMPLOYEES';

scott@ORCL> select * from tb_employees; --闪回后表存在并且可以访问

scott@ORCL> flashback table tb_employees to before drop;--进行闪回,使用回收站中的OBJECT_NAME也可以 Flashback complete.

从上面的查询可以看出闪回之后索引约束的名字还是使用了以BIN开头,由系统生成的名字,可以将其改回,如alter inde

x \to EMPNO_PK; 但外键约束已经不存在了。

1.4 下面演示表空间不足时无法闪回表删除的问题

recyclebin中的table其实还是在tablespace中,只是不可见了而已。只有彻底删除了,实际才不会占用表空间。

TABLESPACE_NAME SUM(BYTES/1024/1024)||'M' ------------------------------ ---------------------------------

sys@ORCL> select tablespace_name,sum(bytes/1024/1024) ||' M' from dba_free_space where tablespace_name='TBS1'

group by tablespace_name; --表空间tbs1的可用空间为M

搜索更多关于: Oracle 闪回特性(FLASHBACK & RE 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

简介 Flashback 系列包含: 1、 从Oracle 9i开始的flashback query 2、 从Oracle 9i开始的flashback exp 3、 Oracle 10g的flashback database 4、 Oracle 10g 的flashback table 5、 Oracle 10g 的flashback drop 6、 Oracle 10g 的flashback version query 7、 Oracle 10g 的flashback transaction query flashback table 表名 to before drop:只能恢复drop的表,使用的是RECYCLEBIN。不需要开启数据库的flashback功能,但是需要开启session或者system级别的RECYCL

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com