[20130425]删除分区与recycle bin.txt

[20130425]删除分区与recycle bin.txt

http://mwidlake.wordpress.com/2012/01/24/dropped-partitions-do-not-go-in-the-recycle-bin/

昨天别人删除一个分区,想恢复里面的信息。我想删除就是一个段,使用flashback drop应该可以恢复。
对方讲不行,自己感觉奇怪,做一个测试看看。

1. 建立测试环境:

SQL> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
create table t 
partition by range (id)
(partition p1 values less than (10)
,partition p2 values less than (20)
,partition p3 values less than (30)
,partition pm values less than (maxvalue)
) as select rownum id, cast ('test' as varchar2(10)) name from dual connect by level
SQL> show recyclebin
SQL> select * from user_recyclebin;
no rows selected
SQL> select table_name,composite,partition_name from dba_tab_partitions where table_owner=user and table_name='T';
TABLE_NAME COM PARTITION_NAME
---------- --- ---------------
T          NO  P1
T          NO  P2
T          NO  P3
T          NO  PM
SQL> select segment_name,partition_name,segment_type,blocks from dba_segments where wner=user and segment_name='T';
SEGMENT_NAME  PARTITION_NAME  SEGMENT_TYPE           BLOCKS
------------- --------------- ------------------ ----------
T             P1              TABLE PARTITION          1024
T             P2              TABLE PARTITION          1024
T             P3              TABLE PARTITION          1024
T             PM              TABLE PARTITION          1024

--可以发现4个段,另外注意占用块大小,1024块,占用8M(我写一个blog说明这种情况,链接如下):
http://space.itpub.net/267265/viewspace-757670
http://space.itpub.net/267265/viewspace-757871

2.删除分区:

SQL> alter table t drop partition p3;
Table altered.
SQL> select segment_name,partition_name,segment_type,blocks from dba_segments where wner=user and segment_name='T';
SEGMENT_NAME  PARTITION_NAME  SEGMENT_TYPE           BLOCKS
------------- --------------- ------------------ ----------
T             P1              TABLE PARTITION          1024
T             P2              TABLE PARTITION          1024
T             PM              TABLE PARTITION          1024
SQL> show recyclebin
SQL> select * from user_recyclebin;
no rows selected

--确实这样,不能使用flashback drop恢复单独一个分区。

3.如果删除这个表呢?

SQL> drop table t;
Table dropped.
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
T                BIN$2yYsUQ4EewDgQyhkqMClqg==$0 TABLE        2013-04-25:09:16:50
SQL> select * from user_recyclebin;
OBJECT_NAME          ORIGINAL_N OPERATION TYPE       TS_NAME    CREATETIME          DROPTIME               DROPSCN PARTITION_ CAN CAN    RELATED BASE_OBJECT PURGE_OBJECT      SPACE
-------------------- ---------- --------- ---------- ---------- ------------------- ------------------- ---------- ---------- --- --- ---------- ----------- ------------ ----------
BIN$2yYsUQ4EewDgQyhk T          DROP      TABLE                 2013-04-25:08:54:20 2013-04-25:09:16:50 3228526967            YES YES     273931      273931       273931
qMClqg==$0
BIN$2yYsUQ4EewDgQyhk T          DROP      Table Part USERS      2013-04-25:08:54:20 2013-04-25:09:16:50 3228526967            NO  NO      273931      273931       273931       1024
qMClqg==$0                                ition
BIN$2yYsUQ4EewDgQyhk T          DROP      Table Part USERS      2013-04-25:08:54:20 2013-04-25:09:16:50 3228526967            NO  NO      273931      273931       273931       1024
qMClqg==$0                                ition
BIN$2yYsUQ4EewDgQyhk T          DROP      Table Part USERS      2013-04-25:08:54:20 2013-04-25:09:16:50 3228526967            NO  NO      273931      273931       273931       1024
qMClqg==$0                                ition

SQL> flashback table t to before drop ;
Flashback complete.
SQL> select segment_name,partition_name,segment_type,blocks from dba_segments where wner=user and segment_name='T';
SEGMENT_NAME         PARTITION_ SEGMENT_TYPE           BLOCKS
-------------------- ---------- ------------------ ----------
T                    P1         TABLE PARTITION          1024
T                    P2         TABLE PARTITION          1024
T                    PM         TABLE PARTITION          1024
SQL> select count(*) from t;
  COUNT(*)
----------
        30

--无法恢复删除的分区。看来11G的flashback drop还是存在一些缺陷。

4.删除整个表,恢复单个分区看看?

SQL> drop table t;
Table dropped.
SQL> select * from user_recyclebin;
OBJECT_NAME          ORIGINAL_N OPERATION TYPE       TS_NAME    CREATETIME          DROPTIME               DROPSCN PARTITION_ CAN CAN    RELATED BASE_OBJECT PURGE_OBJECT      SPACE
-------------------- ---------- --------- ---------- ---------- ------------------- ------------------- ---------- ---------- --- --- ---------- ----------- ------------ ----------
BIN$2yYsUQ4FewDgQyhk T          DROP      TABLE                 2013-04-25:08:54:20 2013-04-25:09:31:05 3228527472            YES YES     273931      273931       273931
qMClqg==$0
BIN$2yYsUQ4FewDgQyhk T          DROP      Table Part USERS      2013-04-25:08:54:20 2013-04-25:09:31:05 3228527472            NO  NO      273931      273931       273931       1024
qMClqg==$0                                ition
BIN$2yYsUQ4FewDgQyhk T          DROP      Table Part USERS      2013-04-25:08:54:20 2013-04-25:09:31:05 3228527472            NO  NO      273931      273931       273931       1024
qMClqg==$0                                ition
BIN$2yYsUQ4FewDgQyhk T          DROP      Table Part USERS      2013-04-25:08:54:20 2013-04-25:09:31:05 3228527472            NO  NO      273931      273931       273931       1024
qMClqg==$0                                ition
--仔细查看手册,无法单独flashback某个分区。
SQL> select * from "BIN$2yYsUQ4FewDgQyhkqMClqg==$0" partition (p1);
        ID NAME
---------- --------------------
         1 test
         2 test
         3 test
         4 test
         5 test
         6 test
         7 test
         8 test
         9 test
9 rows selected.

--select倒是可以。

时间: 2024-09-29 12:05:18

[20130425]删除分区与recycle bin.txt的相关文章

c#删除移动硬盘中$RECYCLE.BIN的文件、建立索引文件

  using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Threading; namespace 为硬盘文件建立索引 {     public partial c

recycle.bin是什么?

  有不少网友咨询recycle.bin是什么?RECYCLE.BIN 文件是系统文件夹,也就是所谓的"回收站",是不能删除的. 只要在文件夹选项-查看 里勾选"隐藏受保护的操作系统文件"就看不到了的.如果你发现在某盘下 $RECYCLE.BIN文件内存占用很大(说明该文件回收的东西多了,确保没有你需要的重要程序或者文件),确实想删除,右键单击桌面上的 回收站 -属性-把"删除时不将文件移入回收站,而是彻底删除"那个选上,然后就可以进入任何盘把$

Windows 2008 R2活动目录的AD Recycle Bin功能

在Windows 2008或Windows 2003中,你必须用备份恢复的方法才能恢复一个被误删的AD对象.这个方法非常麻烦.现在,Windows 2008 R2引入一个新的功能:AD Recycle Bin.就如同普通的回收站一样,这个工具暂时保留了被删除对象,你可以随时从回收站中取回. 需要注意的几点注意事项: 1) 这是Windows 2008 R2才有的新功能 2) 这个功能默认是关闭的:必须手动启动. 3) 启用AD回收站的这个操作不可逆转(irrersible),也就是说,Enabl

Windows中回收站(Recycle Bin)的存取方法

本文配套源码 问题: 我想用CFile::Remove(或其它可行的方法)删除一个文件,但是只是想将它送到Recycle Bin里面,而不是永久性地删除它,这样我的用户就可以在必要的时候能恢复这个文件.我不通过编程能不能实现?如果必须编程,那如何在程序中存取Recycle Bin? 解答: 这个问题的答案是:外壳API函数--SHFileOperation,它定义在shellapi.文件中.为了使用 SHFileOperation,必须填写专用结构--SHFILEOPSTRUCT--告诉Wind

关于Recycle Bin是什么以及实验

关于Recycle Bin 一. Recycle Bin官方文档 The recycle bin is a data dictionary table containing information about dropped objects. Dropped objects and any dependent objects (such as indexes, constraints, nested tables, and so on) are not removed and still occ

Windows Server 2012 Recycle Bin corrupted

  在Windows Server 2012 上遇到了"The Recycle Bin On E:\ is corrupted. Do you want to empty the Recycle Bin for this drive?" . 一般对应的中文提示为"E:\上的回收站已经损坏.是否清空该驱动上的回收站?". 第一次遇到这种情况,也不清楚为什么出现这种情况.有种说法是删除大文件是会遇到这种情况.但是我测试了下,并没有出现(我删除的文件只有35G大小左 右)

[20141218]误操作删除dual表的恢复.txt

[20141218]误操作删除dual表的恢复.txt --没事,做一个误操作删除dual表的恢复,没想到不能按照网上介绍的方法恢复,做一个记录. 1.建立测试数据库: mkdir -p /mnt/ramdisk mount -t tmpfs -o size=8G tmpfs /mnt/ramdisk $ORACLE_HOME/bin/dbca -createDatabase -templateName General_Purpose.dbc -gdbName test -sid test -s

DiskGenius如何删除分区

先选择要删除的分区,然后点击工具栏按钮"删除分区",或点击菜单"分区 - 删除当前分区"项,也可以在要删除的分区上点击鼠标右键并在弹出菜单中选择"删除当前分区"项.程序将显示下面的警告信息: 点击"是"即可删除当前选择的分区.         注:更多精彩教程请关注三联电脑教程栏目

WINDOWS 7 磁盘管理工具创建和删除分区

  本文介绍利用WINDOWS 7系统自带的磁盘管理工具创建和删除分区,由于是系统工具,相比专业的分区创建和调整软件,比如Partition Magic.Acronis Disk Director Suite.Diskgenius还是有些限制,不过一般均可通过变通的方法达到相同效果.本文只介绍控制面板中的磁盘管理工具,命令行格式的下次补充总结.本文方法同样适用于Vista系统. 一.进入Windows 7磁盘管理工具 依次点击:开始菜单->控制面板,如果是在分类视图下,点击"系统和安全&q