环境:
sys@ORCL> select * from v$version where rownum=1;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
sys@ORCL> !uname -a
Linux localhost.localdomain 2.6.18-308.el5xen #1 SMP Fri Jan 27 17:59:00 EST 2012 i686 i686 i386 GNU/Linux
1 recyclebin
在oracle 10g引入了recyclebin,对于一个对象的删除,oracle先通过修改数据字典,将其及其关联对象(索引、约束等)重命名,然后放入recyclebin。被删除的对象将占用创建时的同样的空间大小,当出现空间压力时,这个空间才会被慢慢回收。但是当对象被删除之后,这部分空间会计入free space,被看作是自由空间,可重用,在dba_free_space可查。如果能够确认删除对象,则可以使用purge命令完全删除,这样可以减少动态空间回收带来的性能代价。
每个用户都有属于自己的一个recyclebin。查看recyclebin的方法很多,最常用的是select * from recyclebin;最简单的是show recyclebin。需要注意的是show recyclebin只列出基表,被删除的表的关联对象则不显示。recyclebin里对象的名称也可以被当做普通名称一样使用,唯一区别是,无法被rename。
● 表空间无足够的空闲空间,并且没有新的空间可作扩展操作
● 该表空间又要创建新的对象,需要分配空间
在这种情形下就会造成recyclebin的空间压力,这是触发recyclebin主动删除对象的唯一原因。
清空recyclebin中对象
㈠ 修改初始化参数禁用或启用recyclebin,会话级或者实例级皆可。
缺省该参数是on
hr@ORCL> show parameter recyclebin
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
hr@ORCL> create table tt as select * from jobs;
Table created.
hr@ORCL> show parameter recyclebin
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
hr@ORCL> alter session set recyclebin=off;
Session altered.
hr@ORCL> drop table tt;
Table dropped.
hr@ORCL> select * from recyclebin;
no rows selected
㈡ drop ..purge;
㈢ 清空表空间现有对象
方式有三:
purge table original name或者recyclebin name
purge tablespace tbs_name
purge recylebin
2 注意事项
① flashback drop不能恢复参照完整性(即主外键关系),恢复之后,该约束为disable状态,需手动处理
② 所操作的表必须是本地表空间管理
③ 被恢复的表的关联对象(索引、约束等),其名称不会自动恢复成删除前的名称,而是系统自动生成。需DBA手动改名。另外,位图索引、物化视图不能被恢复。
④ 当空间不足时,被删除表的索引会优先被清理
⑤ flashback drop支持同时操作多个表,以逗号分隔
⑥ flashback drop只能恢复drop命令删除的表
3 实验
㈠ 最简单的删除表恢复
hr@ORCL> drop table t2;
Table dropped.
hr@ORCL> select object_name,original_name from recyclebin;
OBJECT_NAME ORIGINAL_NAME
------------------------------ --------------------------------
BIN$yUcFsAG7oGvgQAB/AQAjTg==$0 T2
hr@ORCL> flashback table t2 to before drop;
Flashback complete.
hr@ORCL> select count(*) from t2;
COUNT(*)
----------
19
hr@ORCL> select object_name,original_name from recyclebin;
no rows selected
㈡ 稍微复杂一点点的表恢复
如果要恢复的表在当前schema中已经存在同名的表,直接恢复会报错
hr@ORCL> drop table t2;
Table dropped.
hr@ORCL> create table t2 as select * from jobs;
Table created.
hr@ORCL> flashback table t2 to before drop;
flashback table t2 to before drop
*
ERROR at line 1:
ORA-38312: original name is used by an existing object
hr@ORCL> flashback table t2 to before drop rename to t2_recov;
Flashback complete.
hr@ORCL> select count(*) from t2_recov;
COUNT(*)
----------
19
㈢ 从多次删除中恢复
多个同名表一起进recyclebin,后进先出
hr@ORCL> drop table t2;
Table dropped.
hr@ORCL> alter table t2_recov rename to t2;
Table altered.
hr@ORCL> drop table t2;
Table dropped.
hr@ORCL> select object_name,original_name,droptime from recyclebin;
OBJECT_NAME ORIGINAL_NAME DROPTIME
------------------------------ -------------------------------- -------------------
BIN$yUcFsAG/oGvgQAB/AQAjTg==$0 T2 2012-09-09:23:47:12
BIN$yUcFsAHBoGvgQAB/AQAjTg==$0 T2 2012-09-09:23:48:42
hr@ORCL> flashback table t2 to before drop;
Flashback complete.
hr@ORCL> select object_name,original_name,droptime from recyclebin;
OBJECT_NAME ORIGINAL_NAME DROPTIME
------------------------------ -------------------------------- -------------------
BIN$yUcFsAG/oGvgQAB/AQAjTg==$0 T2 2012-09-09:23:47:12
hr@ORCL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
REGIONS TABLE
COUNTRIES TABLE
LOCATIONS TABLE
DEPARTMENTS TABLE
JOBS TABLE
EMPLOYEES TABLE
JOB_HISTORY TABLE
EMP_DETAILS_VIEW VIEW
LOGMNR_TEST TABLE
BIN$yUcFsAG/oGvgQAB/AQAjTg==$0 TABLE
T2 TABLE
11 rows selected.
hr@ORCL> drop table t2;
Table dropped.
hr@ORCL> select object_name,original_name,droptime from recyclebin;
OBJECT_NAME ORIGINAL_NAME DROPTIME
------------------------------ -------------------------------- -------------------
BIN$yUcFsAHDoGvgQAB/AQAjTg==$0 T2 2012-09-09:23:52:39
BIN$yUcFsAG/oGvgQAB/AQAjTg==$0 T2 2012-09-09:23:47:12
hr@ORCL> flashback table "BIN$yUcFsAG/oGvgQAB/AQAjTg==$0" to before drop;
Flashback complete.
hr@ORCL> select count(*) from t2;
COUNT(*)
----------
19
hr@ORCL> select object_name,original_name,droptime from recyclebin;
OBJECT_NAME ORIGINAL_NAME DROPTIME
------------------------------ -------------------------------- -------------------
BIN$yUcFsAHDoGvgQAB/AQAjTg==$0 T2 2012-09-09:23:52:39
分享到:
相关推荐
Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。
全面总结和解释了oracle flashback技术的使用,优势以及限制
Oracle_Flashback_技术_总结.pdf
BLOG_Oracle 回收站及flashback drop_LHR.pdfBLOG_Oracle 回收站及flashback drop_LHR.pdf
Oracle Flashback 技术总结
Oracle中FlashBack技术的应用 1: 闪回数据库; 2: 闪回drop掉的表; 3: 闪回对表数据的修改; 4: 闪回版本查询
mysqlbinlog的flashback
ORACLE flashback database测试,主要进行ORACLE flashbackup 闪回整个数据库的实现。
Flashback Query本身不会恢复任何操作或修改,也不能告诉你做过什么操作或修改,实际上Flashback Query特性实际应用时,是基于标准SELECT的扩展,借助该特性能够让用户查询到指定时间点的表中的记录,相当于拥有了...
Oracle 10g High Availability-Flashback技術介紹
Oracle Flashback技术总结.比较先进一些,这些内容很丰富的~
BB FlashBack Pro2.7.6.zip
BB FlashBack Pro 3.2.2 注册机
BB.FlashBack.Pro 五星屏录演示制作(BB.FlashBack.Pro)v4.0.0.2375 注册名 Any 注册码 随意挑一个吧 2SX7I-M6ERP-9P6C3-64TLN-JEM1 2SX7I-MRH4A-3N6VA-34TLF-12NP 2SX7I-MV21L-7PMHK-84TLJ-722K 2SX7I-MEARI-QN6J3-...
录屏软件BB flashback.rar 录屏软件BB flashback.rar 录屏软件BB flashback.rar 录屏软件BB flashback.rar
flashback全记录,所有可能遇到的各种情况的flashback操作
FlashBack Pro 5 Recorder 是一种屏幕记录器,能快速容易地创建视频。有详尽的软件阐述、屏幕演示、介绍、指南以及练习。,欢迎您下载。
oracle数据库FLASHBACK系列功能介绍
BB FlashBack Pro 3.2.2截图工具 亲测可用
Flashback_code-master.rar