`
tianshibaijia
  • 浏览: 1128249 次
文章分类
社区版块
存档分类
最新评论

oracle 10g回收站功能

 
阅读更多

此篇文章主要讨论oracle数据库的回收站功能,网上看到很多例子感觉比较乱,在此进行总结,下面有本人做的例子备参考,呵呵

oracle 10g中,引入了一个回收站(Recycle Bin)的概念
回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息.用户进行Drop操作的对象,并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉.数据库有了这样的功能,能够减少很多不必要的麻烦.常常看到开发人员误把表删除,急急忙忙找DBA来想办法的情况,相信,随着10G的大范围应用,这种情形应该比较少见了.
DBA管理上的相关信息可以从USER_recyclebin(DBA_recyclebin)中获取.

1.通过设置初始化参数recyclebin,可以控制是否启用回收站功能,默认是开启的。
SQL> alter session set recyclebin=off;
会话已更改。

SQL> alter session set recyclebin=on;
会话已更改。

系统回收站功能开启与关闭

SQL> alter system set recyclebin=on;
系统已更改。

SQL> alter system set recyclebin=off;
系统已更改。

2.以下几种DROP不会将相关对象放进RecycleBin

drop tablespace:会将RecycleBin中所有属于该tablespace的对象清除

drop user:会将RecycleBin中所有属于该用户的对象清除

drop cluster:会将RecycleBin中所有属于该cluster的成员对象清除

drop type:会将RecycleBin中所有依赖该type的对象清除


3.通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句
flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_table_name>];


将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。
若要彻底删除表,则使用语句:drop table <table_name> purge;


4.清除回收站里的信息
清除指定表:purge table <table_name>;
清除当前用户的回收站:purge recyclebin;
清除所有用户的回收站:purge dba_recyclebin;

=====================================================================================================
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 6月 17 11:23:56 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn scott/tiger
已连接。

SQL> select * from tab; --查看scott用户下所有的表
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE

SQL> create table t1 as select * from emp; --从emp表中创建t1表
表已创建。

SQL> create table t2 as select * from t1; --从t1表中创建t2表
表已创建。

SQL> select * from tab; --再次查看scott中所有表,此时已经有t1和t2表
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
T1 TABLE
T2 TABLE
已选择6行。

SQL> drop table t2; --删除t2表
表已删除。

SQL> select * from tab; --查看所有表,发现原来的t2表现在变成一堆乱码
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
T1 TABLE
BIN$pd/+ZvEpLAjgQAB/AQAu1Q==$0 TABLE
已选择6行。

SQL> select object_name, original_name, operation, type from user_recyclebin; --在来查看一下闪回区中的内容,发现上面的乱码对应闪回区中t2这张表
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE
------------------------------ -------------------------------- --------- -------------------------
BIN$pd/+ZvEpLAjgQAB/AQAu1Q==$0 T2 DROP TABLE

SQL> flashback table t2 to before drop rename to t3; --现在从闪回区中恢复t2表并且重命名为t3
闪回完成。

SQL> select * from tab; --再次查看scott用户拥有的所有表,此时已经多了一个t3表
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
T1 TABLE
T3 TABLE
已选择6行。

SQL> select object_name, original_name, operation, type from user_recyclebin; --因为t2已经从闪回区中恢复,此时闪回区中没有信息
未选定行

SQL> select * from t3; --数据已经完全恢复
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
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
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择14行。

SQL> drop table t3 purge; --加入purge删除表
表已删除。

SQL> select * from tab; --t3表已经删除
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
T1 TABLE

SQL> select object_name, original_name, operation, type from user_recyclebin; --闪回区中没有内容,证明此表已经完全删除
未选定行

SQL> drop table t1;
表已删除。

SQL> create table t1 as select * from dept;
表已创建。

SQL> drop table t1;
表已删除。

SQL> create table t1 as select * from emp;
表已创建。

SQL> drop table t1;
表已删除。

SQL> select original_name,droptime from user_recyclebin where original_name='T1' order by DROPTIME;
ORIGINAL_NAME DROPTIME
-------------------------------- -------------------
T1 2011-06-17:11:49:50
T1 2011-06-17:11:50:15
T1 2011-06-17:11:50:30

SQL> purge table t1;
表已清除。

SQL> select original_name,droptime from user_recyclebin where original_name='T1' order by DROPTIME;
ORIGINAL_NAME DROPTIME
-------------------------------- -------------------
T1 2011-06-17:11:50:15
T1 2011-06-17:11:50:30

结论:recyclebin中存在同名对象时,执行purge table table_name时,最先被删除的对象先被从recyclebin中释放

SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
BIN$pd/+ZvErLAjgQAB/AQAu1Q==$0 TABLE
BIN$pd/+ZvEsLAjgQAB/AQAu1Q==$0 TABLE
已选择6行。


SQL> select object_name, original_name, operation, type from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION
------------------------------ -------------------------------- ---------
TYPE
-------------------------
BIN$pd/+ZvEsLAjgQAB/AQAu1Q==$0 T1 DROP
TABLE

BIN$pd/+ZvErLAjgQAB/AQAu1Q==$0 T1 DROP
TABLE

SQL> purge table "BIN$pd/+ZvEsLAjgQAB/AQAu1Q==$0";
表已清除。

SQL> purge table "BIN$pd/+ZvErLAjgQAB/AQAu1Q==$0";
表已清除。

SQL> show recyclebin; --查看闪回区中已经没有数据

分享到:
评论

相关推荐

    关于oracle10供了类似操作系统中的回收站功能

    在Oracle10g中,引入了一个回收站(Recycle Bin)的概念。回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息。被用户Drop的对象并没有被Oracle删除,仍然会占用空间。除非是用户手工进行Purge...

    Oracle11g从入门到精通2

    10.6.3 闪回回收站 10.6.4 闪回查询 10.6.5 闪回版本查询 10.6.6 闪回事务查询 10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路...

    Oracle 10G中的回收站

    回收站,从原理上来说就是一个数据...相信随着10G的大范围应用,这种情形应该比较少见了,我们可以充分利用10g的闪回功能来避免大量的人工误操作。DBA管理上的相关信息可以从USER_recyclebin(DBA_recyclebin)中获取。

    oracle回收站

    最近发现oracle中出现了这些奇怪的表名 上网查找后发现是oracle10g的回收站功能 并没有彻底的删除表 而是把表放入回收站 最后就出现了这样一堆奇怪的表名

    ORACLE 回收站当前状态查询整理

    在Oracle 10g数据库中,引入了一个回收站(Recycle Bin)的数据库对象。 回收站,顾名思义,它就是存储被删掉的东西。从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的...

    Oracle中有后悔药卖吗?Oracle中的回闪查询: Oracle 10g 回闪实验文档

    10g 回闪试验文档, 可以体验10g的回收功能。

    Oracle11g从入门到精通

     Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。  全书结构合理、内容翔实、示例丰富...

    oracle10g课堂练习II(1)

    Oracle Database 10 g :为网格计算设计的数据库 1-7 数据库体系结构:概述 1-8 Oracle 内存结构 1-9 Oracle 进程 1-11 概述 Oracle 实例管理 1-12 物理数据库结构 1-14 Oracle Managed Files (OMF) 1-16 ...

    C# 写的数据库查看器 支持SQL2000和oracle10g 高亮语法输入提醒

    8,查询菜单下有个【清理垃圾表】,是针对oracle中的回收站功能设定的,可以删去此方案中回收站中的表BIN$啥啥的。 输入时有闪动的问题暂时没能完美解决。 时间仓促很多功能还没有时间做完,希望大家多提意见。 ...

    Oracle.11g.从入门到精通 (2/2)

    10.6.3 闪回回收站 10.6.4 闪回查询 10.6.5 闪回版本查询 10.6.6 闪回事务查询 10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路复用控制文件 ...

    Oracle.11g.从入门到精通 (1/2)

    10.6.3 闪回回收站 10.6.4 闪回查询 10.6.5 闪回版本查询 10.6.6 闪回事务查询 10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路复用控制文件 ...

    oracle10g课堂练习II(2)

    Oracle Database 10 g :为网格计算设计的数据库 1-7 数据库体系结构:概述 1-8 Oracle 内存结构 1-9 Oracle 进程 1-11 概述 Oracle 实例管理 1-12 物理数据库结构 1-14 Oracle Managed Files (OMF) 1-16 ...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

     Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat 3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

     Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...

    基于Oracle闪回详解(必看篇)

    Oracle 9i 开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为大家快速的恢复数据,查询历史数据提供了很大的便捷方法。 本文主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本...

    本科毕业设计开题报告(校园初恋网的设计与实现)

    Oracle 在其技术白皮书上阐明,Oracle 10g数据库关键目标有二:1 降低管理开销,2 提高性能。 Oracle 10g的增强有对高可用性的增强、新的 Flashback 能力、支持回滚更新操作;对安全性的增强,便于管理大量的用户; ...

    超级有影响力霸气的Java面试题大全文档

    GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存...

    java面试题

    39. 解释$ORACLE_HOME 和$ORACLE_BASE的区别? 19 40. session与cookie的区别和联系? 19 41. Statement和PrepareStatement的区别 19 42. JSP的内置对象及方法。 19 43. JSP的常用指令 20 44. 四种会话跟踪技术 20 45...

Global site tag (gtag.js) - Google Analytics