Flashback用于恢复用户误删除的对象(包括表,索引等), 不支持sys用户. system表空间下的对象,也不能从回收站里拿到。
故使用SYS 或者SYSTEM用户登陆时, show recyclebin 为空。
初始化参数recyclebin 用于控制是否启用recyclebin功能,缺省是ON, 可以使用OFF关闭。

SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on

禁用该功能:
SQL> alter system set recyclebin=off;
SQL> alter system set recyclebin=on;
SQL> alter session set recyclebin=off;
SQL> alter session set recyclebin=on;
禁用后删除的对象将直接删除,不会写到Recycle中,当然在删除时,指定purge 参数,表也将直接删除,不会写到recyclebin中。
SQL> drop table name purge;

表空间的Recycle Bin 区域只是一个逻辑区域,而不是从表空间上物理的划出一块区域固定用于回收站,因此Recycle Bin是和普通对象共用表空间的存储区域,或者说
是Recycle Bin的对象要和普通对象抢夺存储空间。当发生空间不够时,Oracle会按照先入先出的顺序覆盖Recycle Bin中的对象。也可以手动的删除Recycle Bin占用的
空间。
1). Purge tablespace tablespace_name : 用于清空表空间的Recycle Bin
2). Purge tablespace tablespace_name user user_name: 清空指定表空间的Recycle Bin中指定用户的对象
3). Purge recyclebin: 删除当前用户的Recycle Bin中的对象
4). Purge dba_recyclebin: 删除所有用户的Recycle Bin中的对象,该命令要sysdba权限
5). Drop table table_name purge: 删除对象并且不放在Recycle Bin中,即永久的删除,不能用Flashback恢复。
6). Purge index recycle_bin_object_name: 当想释放Recycle bin的空间,又想能恢复表时,可以通过释放该对象的index所占用的空间来缓解空间压力。 因为索引
是可以重建的。
7).PURGE TABLE TABLE_NAME; --删除回收站中指定对象
或者使用其回收站中的名称:
PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";

==============
1、回收站不支持sys和system表空间下的对象

SQL> show user;
USER 为 "SYS"
SQL> create table test as select * from scott.emp;表已创建。SQL> commit;提交完成。SQL> select * from test;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
1111 rusky dba 7839 2000 0 10
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
……
SQL> show parameter recyclebin;NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
SQL> drop table test;表已删除。SQL> show recyclebin;
SQL> select * from recyclebin; --sys用户删除的表不会进回收站

未选定行

2、普通用户使用flashback从回收站中还原删除的表

SQL> show user;
USER 为 "LXJ"
SQL> create table test as select * from scott.emp;表已创建。SQL> commit;提交完成。SQL> drop table test;表已删除。SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST1 BIN$Pv0yCIwaS9W2iDnPvOM3bQ==$0 TABLE 2015-02-13:14:42:48
SQL>

--RECYCLEBIN NAME的命名规则为BIN$GUID$Version 其中GUID为GlobalUID,是一个全局唯一、24个字符长的标识对象,它是ORACLE内部使用的标识。 其中$version是ORACLE数据库分配的版本号。

--还原回收站对象
还原回收站被删除的表、索引等对象, 是通过Flashback Drop实现的。如下所示。

SQL> flashback table test to before drop;闪回完成。

--如果两个相同名字的表TEST被删除了,此时闪回被DROP的表TEST,实质是闪回最后一个被删除的表(后进先出原则),如果此时继续闪回操作就会报ORA-38312错误。
SQL> flashback table test to before drop;
flashback table test to before drop
*
ERROR at line 1:
ORA-38312: original name is used by an existing object。

此时可以在闪回过程中对表名进行重命名解决问题

SQL> flashback table test to before drop rename to test2; --闪回到新的名字

闪回完成。

--如果回收站有两个被DROP掉的表TEST, 如果想闪回第一个被删除的表,直接指定RECYCLEBIN NAME进行闪回即可。

SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST BIN$lTMSl/ObRsKNPJ4yanuhyQ==$0 TABLE 2015-02-13:15:24:34
TEST BIN$5DYhICpRT9mWVJGsAumSaw==$0 TABLE 2015-02-13:14:49:42SQL> flashback table "BIN$lTMSl/ObRsKNPJ4yanuhyQ==$0" to before drop;

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

转载于:https://www.cnblogs.com/rusking/p/4290395.html

ORACLE Recyclebin管理及flashback recyclebin中的对象相关推荐

  1. oracle撤销管理的方法,Oracle9i中利用自动撤销管理的优点

    在9i中,对回滚段进行了重新命名,现在将其作为撤销日志.在传统的操作上,回滚段保存的撤销信息,直到系统发送一个响应或者回滚语句. 人工撤销管理在Oracle9i仍然被使用,但绝大多数的Oracle D ...

  2. 引子:C++中如何有效管理分配在堆中的对象

    考虑以下函数: void f() { Investment *pInv = createInvestment(); // call factory function ... // use pInv d ...

  3. Oracle 闪回特性(FLASHBACK DROP RECYCLEBIN)

    --============================================== -- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN) --= ...

  4. 在11g中alter system set recyclebin = off 报错 recyclebin 参数在11g和10g中的区别

    在Oracle 11g中,recyclebin参数发生了微小的变化. This supported parameter was introduced in Oracle 10.2.0 Version ...

  5. oracle之三闪回flashback

    闪回 flashback 5.1 flashback 的功能:1)利用undo data回溯或撤销提交的数据,2)flashback log 使database 可以恢复到过去某个时间点,可以作为不完 ...

  6. oracle 闪回操作(flashback)

    234390216 的留下学习 原文地址 http://haohaoxuexi.iteye.com/blog/1594391 Oracle的闪回功能可以在对数据库进行不完全恢复的情况下,对某一个指定的 ...

  7. oracle 日常管理小节

    资料编码    HBMDS        产品名称    业务与软件产品 使用对象    ORACLE技术支持.研发.生产    产品版本     编写部门    数据库DB组        资料版本 ...

  8. oracle flashback 功能,Oracle 11g 新特性 Flashback Data Archive 使用实例

    Flashback Data Archive(闪回日志归档)其实理解为长时间的保存undo数据,对于某些重要的表可以自定义它的历史记录保存期限,它的的种种行为与undo表空间十分相似,使用的时候也是完 ...

  9. oracle存储空间管理,Oracle存储空间管理

    Oracle存储空间管理 1.查看每个数据文件的剩余表空间(一个表空间只对应N个数据文件,N一般等于1) 主要是利用表dba_free_space(表空间剩余空间状况)和dba_data_files( ...

最新文章

  1. 梯度下降理解和梯度下降计算检查斯坦福
  2. AngularJS 指令
  3. 李洪强iOS经典面试题153- 补充
  4. python新手自学-新手自学python
  5. [Python]元组与列表的区别及内建用法
  6. docker实现宿主机和容器之间数据共享
  7. 2014值得期待的Erlang两本新书
  8. leetcode 410. 分割数组的最大值(二分法)
  9. Android 7.1 App Shortcuts使用
  10. mysql教程日志_MySQL日志
  11. 【OpenCV学习笔记】【编程实例】一(VS2010/MFC+OPenCV2.4.7读取图片和摄像头)
  12. Android listview局部刷新
  13. 【高颜值的盲打练习网站】彻底摆脱二指禅,刻意练习一星期后打字速度可提升20wpm!!!
  14. c语言程序设计mooc作业平台答案,C语言程序设计下mooc答案.docx
  15. 部署asp.net mvc_在ASP.NET 2.0上部署ASP.NET MVC
  16. android答辩问题,安卓毕业设计答辩(流程、准备、模板及注意事项)
  17. opencv图像形态学运算
  18. 微信小程序登录注册demo+java服务器(一)
  19. poi操作word文档总结
  20. ADB向手机安装APK失败

热门文章

  1. 肠里细菌“肚里蛔虫”:肠脑研究缘何越来越热
  2. AI企业下一个使命:让生物特征数据使用走向阳光透明
  3. 作弊阴影罩棋盘,人工智能咋避嫌?
  4. 微软为什么要公开AI系统测试数据集和度量指标?
  5. 随笔 | 抢红包不是一件小事
  6. java内外循环打印等腰三角*号
  7. 从零开始机器学习比赛经验(bird分享)
  8. [转载]datatable中只取前7条数据
  9. 洛谷P1194 买礼物
  10. IntelliJ IDEA中Maven插件无法更新索引之解决办法