`
jinghuainfo
  • 浏览: 1527162 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Oracle中recyclebin的保留策略

 
阅读更多
我们知道,Oracle 10g引入了recyclebin的概念,当我们删除一个表的时候,若不指定purge,系统只是将这个表重命名为BIN$开头的名称,并在数据字典中修改相关的数据。
Administrator's Guide中是这么描述recyclebin的:recycle bin实际上是一个包含了删除的对象的相关信息的数据字典表。被删除的表以及相关的对象(比如索引、约束、嵌套表等等)并没有被移除,并且依然占用着空间。它们会继续使用用户的空间配额,直到明确将它们从回收站中清除,或者是另一种很少见的情况:由于表空间的空间限制,数据库必须将它们清除。
由此我们可以知道,在Oracle 10g以后,若启用了recyclebin功能,当你drop一个表的时候,它会仍然占用着原来的空间。
我们可以使用user_recyclebindba_recyclebin来查看回收站中的对象信息,或者使用recyclebin,它是user_recyclebin的公共同义词。
文档中提到了,除了手动purge,这些回收站中的对象只有在表空间出现空间不足情况时才会被清除。我们可以做个测试(测试环境为RAC10.2.0.1+ASM)

新建一个表空间,给它20m的容量


然后我们在这个表空间上创建一个测试表a

一张表占用6M空间,我们再创建2张一样的测试表


此时表空间已经使用了18M。这时我们把这三张表都删除

可以看到,3张表到了回收站中,空间也没有释放。
此时20m的表空间还剩余2m可用,如果我再创建一张同样的表呢



可以看到,A表被干掉了。我们看看从trace文件里能找到些什么
执行create table前,系统先查询test1表空间是否online。执行create table时,先检查相同的命名空间中是否已经存在相同的名称。接下来开始更新相关的数据字典,准备插入数据。此时发现空间不够,怎么办?注意下面的信息:


select obj#, type#, flags, related, bo, purgeobj, con#
from
RecycleBin$ where ts#=:1 and to_number(bitand(flags, 16)) = 16 order
by dropscn

注意这个排序:order by dropscn

接下来Oracle做了什么呢:


drop table "W1"."BIN$r6HZooW+xpzgQKjAb01Spw==$0" purge

删除了这个表以后,更新相关的数据字典,并插入新的数据

我们可以得出这样的结论:当删除表的时候,若不指定purge,会将表放入到回收站中。在创建新的段时,若表空间中没有足够的剩余空间,Oracle会按dropscn顺序从回收站中删除一些对象。如果数据文件指定了autoextend,那么这个优先级次序是:先删除回收站中的对象,再扩展数据文件

在删除用户的时候,系统首先从回收站中purge相关的表,然后对用户下的表采用如下的删除命令


drop table "W1"."D" cascade constraints purge force

然后释放掉所占用的空间

分享到:
评论

相关推荐

    Oracle 闪回特性 FLASHBACK & RECYCLEBIN

    oracle数据库FLASHBACK系列功能介绍

    Oracle 10G中的回收站

    回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息。用 户进行Drop操作的对象并没有被数据库删除,仍然会占用空间。...DBA管理上的相关信息可以从USER_recyclebin(DBA_recyclebin)中获取。

    oracle中误删除表后恢复语句(FLASHBACK)

    您可能感兴趣的文章:Oracle误删除表数据后的数据恢复详解Oracle7.X 回滚表空间数据文件误删除处理方法Oracle7.X 回滚表空间数据文件误删除处理方法Oracle7.X 回滚表空间数据文件误删除处理方法误删除$ORACLE_HOME/...

    matlab开发-RecycleBin

    matlab开发-RecycleBin。除了将文件移动到所选文件夹并进行恢复外,对文件的工作方式与(删除)类似。

    AD RecycleBin.7z

    AD回收站恢复工具 ,可以恢复AD中被误的用户。用户组。计算机

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

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

    RecycleBin_src.zip_回收站

    获得系统内回收站的资源,并可以操作

    书签RecycleBin「Bookmark RecycleBin」-crx插件

    收藏夹RecycleBin可以帮助您恢复它们。 您只需要设置回收站文件夹。 *当您删除书签时,它们将被移到回收站。 *当您删除回收站中的书签时,它们将真正消失。 *当您删除回收站时,它将为空。 支持语言:English,中文 ...

    RECYCLEBIN_for_Linux:RECYCLEBIN_for_Linux

    RBIN is a software which acts as a RECYCLEBIN" to delete and restore the files in Linux. Restores the selected file/directory to its original location. And deletes the files perminantly whose ...

    Oracle管理 | 回收站

    目录一、作用二、回收站操作三、通过Purge删除回收站的...通过dba_recyclebin视图可查看回收站内容; 回收站中的对象名为BIN$打头,可以单独访问: SELECT * FROM "BIN$iB6Z3f+5QOGjw0iKVisLqg==$0" 2.开启/关闭回收站

    Docklets-RecycleBin

    可用于RocketDock和RK等模拟苹果系统的停靠栏。可以提高工作效率

    oracle drop table(表)数据恢复方法

    代码如下: –查看数据库回收站 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin; –恢复 FLASHBACK TABLE 表名 TO BEFORE DROP; 此举 可以恢复表结构,同时 ...

    oracle 数据库闪回相关语句介绍

    1\将表闪回到某一时间点: 闪回操作前启用行移动功能 Sql代码 alter ... 2\闪回回收站: Java代码 SQL>show recyclebin; SQL>drop table emp; SQL>show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME

    Bookmark RecycleBin-crx插件

    语言:English,中文 (繁體) ...收藏夹RecycleBin可以帮助您恢复它们。 您只需要设置回收站文件夹。 *当您删除书签时,它们将被移到回收站。 *当您删除回收站中的书签时,它们将真正消失。 *当您删除回收站时,它将为空。

    oracle误drop/update操作后的数据恢复测试

    1、drop表,如何进行恢复 代码如下: create table etl (id number);...SQL> SELECT OBJECT_NAME,ORIGINAL_NAME,CAN_UNDROP,CAN_PURGE FROM DBA_RECYCLEBIN WHERE ORIGINAL_NAME=’ETL’; OBJECT_NAME ORIGINAL

    Oracle闪回删除表原理分析

     Oracle 10g开始,drop table 命令的实现方式为:它实际上根本没有删除表,而只是重命名表,并把重命名的表放进回收站(每个用户都有一个回收站)可以在user_recyclebin数据字典中查看当前用户的回收站中的内容,...

    (0115)-iOS/iPhone/iPAD/iPod源代码-手势交互(Gesture)-Drag And Drop RecycleBin

    实现文件回收站效果。用户拖放某张图片在垃圾箱图标上,即可删除这张图片,并且有删除文件的粉碎效果。 注意:请在Mac下解压使用

    《Windows中回收站(Recycle Bin)的存取方法》配套VC源代码

    我想用CFile::Remove(或其它可行的方法)删除一个文件,但是只是想将它送到Recycle Bin里面,而不是永久性地删除它...如果必须编程,那如何在程序中存取Recycle Bin? 关键字:回收站,Recycle Bin,Shell API,外壳编程

    Drag And Drop RecycleBin(iPhone源代码)

    来源:Licence:BSD平台:iOS设备:iPhone / iPad作者:Hegaka  实现文件回收站效果。用户拖放某张图片在垃圾箱图标上,即可删除这张图片,并且有删除文件的粉碎效果。 Code4App编译测试,适用环境:Xcode 4.3,...

    Rally-Recycle-Bin-Utilities

    rally_recyclebin_report.rb 用于汇总给定工作区的回收站的全部内容的实用程序 此脚本可用于输出包含在回收站中的所有项目的汇总电子表格,包括以下字段: ID 对象ID 删除日期 名称 删除dBy 类型 回收站条目的 ...

Global site tag (gtag.js) - Google Analytics