此篇文章主要讨论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; --查看闪回区中已经没有数据
分享到:
相关推荐
在Oracle10g中,引入了一个回收站(Recycle Bin)的概念。回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息。被用户Drop的对象并没有被Oracle删除,仍然会占用空间。除非是用户手工进行Purge...
10.6.3 闪回回收站 10.6.4 闪回查询 10.6.5 闪回版本查询 10.6.6 闪回事务查询 10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路...
回收站,从原理上来说就是一个数据...相信随着10G的大范围应用,这种情形应该比较少见了,我们可以充分利用10g的闪回功能来避免大量的人工误操作。DBA管理上的相关信息可以从USER_recyclebin(DBA_recyclebin)中获取。
最近发现oracle中出现了这些奇怪的表名 上网查找后发现是oracle10g的回收站功能 并没有彻底的删除表 而是把表放入回收站 最后就出现了这样一堆奇怪的表名
在Oracle 10g数据库中,引入了一个回收站(Recycle Bin)的数据库对象。 回收站,顾名思义,它就是存储被删掉的东西。从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的...
10g 回闪试验文档, 可以体验10g的回收功能。
Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。 全书结构合理、内容翔实、示例丰富...
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 ...
8,查询菜单下有个【清理垃圾表】,是针对oracle中的回收站功能设定的,可以删去此方案中回收站中的表BIN$啥啥的。 输入时有闪动的问题暂时没能完美解决。 时间仓促很多功能还没有时间做完,希望大家多提意见。 ...
10.6.3 闪回回收站 10.6.4 闪回查询 10.6.5 闪回版本查询 10.6.6 闪回事务查询 10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.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 多路复用控制文件 ...
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 ...
Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...
2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat 3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行...
Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...
Oracle 9i 开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为大家快速的恢复数据,查询历史数据提供了很大的便捷方法。 本文主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本...
Oracle 在其技术白皮书上阐明,Oracle 10g数据库关键目标有二:1 降低管理开销,2 提高性能。 Oracle 10g的增强有对高可用性的增强、新的 Flashback 能力、支持回滚更新操作;对安全性的增强,便于管理大量的用户; ...
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存...
39. 解释$ORACLE_HOME 和$ORACLE_BASE的区别? 19 40. session与cookie的区别和联系? 19 41. Statement和PrepareStatement的区别 19 42. JSP的内置对象及方法。 19 43. JSP的常用指令 20 44. 四种会话跟踪技术 20 45...