Dropped Partitions do not go in the Recycle Bin January 24, 2012
Posted by mwidlake in SQL.Tags: partitions, recyclebin, SQL
trackback
If you alter table TEST drop partition Q1, does it go in the recycle bin?
That is the question I was asked today. “Of course it….” Pause. More pause.
No, I did not know. I knew I’d seen partitions in the recyclebin on Oracle but I thought there was no option to state PURGE when you dropped a partition.
So, a quick test was needed.
First I tried a drop of a partition I knew I could live without {NB this is on version 11.2.0.3, I am 99.8% sure this is the same on 10}
mdw1123> alter table person_call drop partition d_20111205 purge 2 / alter table person_call drop partition d_20111205 purge * ERROR at line 1: ORA-14048: a partition maintenance operation may not be combined with other operations mdw1123> alter table person_call drop partition d_20111205 2 / Table altered. mdw1123> select count(*) from dba_recyclebin 2 / Any Key> COUNT(*) ---------- 0 1 row selected.
That’s pretty conclusive then, Oracle does not like the PURGE option when dropping a partitions, which suggests it does not go into the recyclebin, and in fact my recyclebin remains empty when I correctly drop the partition. {NB I had purged the recyclebin before this test}.
However, I want to make sure that it is indeed just the partition operation that does not go to the recyclebin (you can of course turn off the recyclebin and I have not proven that I have not done this). So:
mdw1123> create table mdw (id number,vc1 varchar2(10)) 2 partition by range (id) 3 (partition p1 values less than (10) 4 ,partition p2 values less than (20) 5 ,partition p3 values less than (30) 6 ,partition pm values less than (maxvalue) 7 ) 8 mdw1123> / Table created. mdw1123> insert into mdw 2 select rownum,'AAAAAAAA' 3 from dual 4 connect by level <40 5 / 39 rows created. mdw1123> select * from dba_recyclebin 2 / no rows selected mdw1123> alter table mdw drop partition p3 2 / Table altered. mdw1123> select * from dba_recyclebin 2 / no rows selected mdw1123> drop table mdw 2 / Table dropped. mdw1123> select * from dba_recyclebin; Any Key> OWNER OBJECT_NAME ORIGINAL_NAME ------------------------------ ------------------------------ -------------------------------- OPERATION TYPE TS_NAME CREATETIME --------- ------------------------- ------------------------------ ------------------- DROPTIME DROPSCN PARTITION_NAME CAN CAN RELATED BASE_OBJECT ------------------- ---------- -------------------------------- --- --- ---------- ----------- PURGE_OBJECT SPACE ------------ ---------- MDW BIN$DI/3ZwiMRneOxLrJ4jidyg==$0 MDW DROP Table Partition INDEX_01 2012-01-24:16:13:55 2012-01-24:16:15:33 2787392 NO NO 77672 77672 77672 1024 MDW BIN$DI/3ZwiMRneOxLrJ4jidyg==$0 MDW DROP Table Partition INDEX_01 2012-01-24:16:13:55 2012-01-24:16:15:33 2787392 NO NO 77672 77672 77672 1024 MDW BIN$DI/3ZwiMRneOxLrJ4jidyg==$0 MDW DROP Table Partition INDEX_01 2012-01-24:16:13:55 2012-01-24:16:15:33 2787392 NO NO 77672 77672 77672 1024 MDW BIN$DI/3ZwiMRneOxLrJ4jidyg==$0 MDW DROP TABLE 2012-01-24:16:13:55 2012-01-24:16:15:33 2787393 YES YES 77672 77672 77672 4 rows selected.
So, if you go and drop the wrong partition, you can’t go getting it back without some sort of restore or recovery (as there is nothing to get it back from) but you can if you drop the whole table. And I was not going mad, I had seen partitions in the Recyclebin (there is, after all, a PARTITION_NAME column in the table)
This seems a little odd to me, I would imagine that dropping the wrong partition is something you would want to use flashback query to fix (as you can with accidentally dropping a table) but there you go. You can’t.
Back to the day job….
Just as an FYI – this script functions the same way in 10.2.0.4. Strange indeed that there is a type for “Table Partition” but you can’t recover a dropped partition.
Thanks for testing this on 10.2.0.4 Craig and letting me know the results.
Speaking of can’t, see MOS 1303834.1
I thought the workaround was kind of entertaining, given the problem.