<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    tbwshc

    DROP PARTITION為什么不進回收站

    前幾天在給公司的員工講一個案例的提到這個問題。

     

     

    其實當(dāng)時提到了這個特點,DROP TABLE會進入回收站,但是DROP PARTITION并不會,因此DROP PARTITION之后,數(shù)據(jù)無法簡單的回復(fù),只能通過邏輯或物理備份的方式來進行數(shù)據(jù)的回復(fù)。

    SQL> create table t_drop (id number);

    Table created.

    SQL> drop table t_drop;

    Table dropped.

    SQL> select object_name, original_name from recyclebin;

    OBJECT_NAME ORIGINAL_NAME
    ------------------------------ --------------------------------
    BIN$xJhZqpmfWZXgRDzZK0pZWw==$0 T_DROP

    SQL> create table t_part_drop (id number) partition by range (id)
    2 (partition p1 values less than (10),
    3 partition p2 values less than (20),
    4 partition p3 values less than (30),
    5 partition pmax values less than (maxvalue));

    Table created.

    SQL> insert into t_part_drop tb select rownum from user_objects;

    176 rows created.

    SQL> commit;

    Commit complete.

    SQL> alter table t_part_drop drop partition p1;

    Table altered.

    SQL> select object_name, original_name from recyclebin;

    OBJECT_NAME ORIGINAL_NAME
    ------------------------------ --------------------------------
    BIN$xJhZqpmfWZXgRDzZK0pZWw==$0 T_DROP

    本來只是普及一下這個常識,不過有人問我Oracle為什么沒有實現(xiàn)將刪除分區(qū)放在回收站中。這個問題問的很好,因為如果這個功能很容易實現(xiàn),那么Oracle肯定早就實現(xiàn)了,而到了11.2中Oracle仍然沒有實現(xiàn)這個功能,那么一定說明這個功能不是無法實現(xiàn),就是實現(xiàn)的困難太大。

    回收站的實現(xiàn)并不復(fù)雜,當(dāng)一張表被刪除的時候,Oracle沒有直接釋放表在表空間上的空間占用,而是將表簡單的打了個標(biāo)識,這樣在正常查詢數(shù)據(jù)字典時就不會看到這張被刪除的表,而如果需要恢復(fù)這張表時,只需要將標(biāo)識位改回來既可。

    那么同樣是修改數(shù)據(jù)字典,為什么不能將被刪除的分區(qū)通過標(biāo)識的方法放到回收站中呢,這是因為,對于表而言,刪除操作是將一個整理完全刪除。而對于分區(qū)的刪除,是刪除整體中的一個部分。對于刪除這個動作其實并沒有太大的影響,但是回收站的功能不是為了刪除,而是為了可以快速的恢復(fù)。對表而言,直接恢復(fù)整體不存在任何的問題,即使同名對象存在,也只需改個名字既可。而對于刪除分區(qū)的恢復(fù)而言, tb 問題就不那么簡單了。由于分區(qū)表并沒有刪除,因此這個表仍然可以繼續(xù)進行操作,雖然某個分區(qū)被刪除了,但是除非是范圍分區(qū)中的MAXVALUE分區(qū)和列表分區(qū)中的DEFAULT分區(qū),否則再插入原分區(qū)對應(yīng)的數(shù)據(jù)時,并不會報錯,而是會插入到其他分區(qū)中:

    SQL> select * from t_part_drop partition (p2);

           ID
    ----------
           10
           11
           12
           13
           14
           15
           16
           17
           18
           19

    10 rows selected.

    SQL> insert into t_part_drop values (5);

    1 row created.

    SQL> select * from t_part_drop partition (p2);

           ID
    ----------
           10
           11
           12
           13
           14
           15
           16
           17
           18
           19
            5

    11 rows selected.

    原表應(yīng)該插入分區(qū)P1的數(shù)據(jù),由于分區(qū)P1被刪除,因此現(xiàn)在滿足分區(qū)P2的條件,被插入到分區(qū)P2中,考慮這種情況下,如果直接恢復(fù)P1分區(qū)會怎樣。

    顯然這不是一個簡單的數(shù)據(jù)字典的修改就能解決的問題,不但涉及到分區(qū)數(shù)據(jù)改變的問題,還必然會帶來全局和本地索引失效的問題,更重要的是,可能帶來主鍵沖突的情況。

    這還只是分區(qū)表進行了DML的情況,如果刪除分區(qū)后,分區(qū)表又進行了DDL,比如新SPLIT了P1分區(qū),那么刪除分區(qū)的恢復(fù)操作就更無法進行了。

    如果一個功能覺得很簡單就可以實現(xiàn),但是Oracle卻一直沒有實現(xiàn),那么很可能實現(xiàn)這個功能并不像想象的那么簡單。

    posted on 2012-08-24 14:39 chen11-1 閱讀(793) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲狠狠狠一区二区三区| 亚洲AV午夜成人片| 亚洲另类无码专区首页| 国产精品视频免费一区二区| 色老板亚洲视频免在线观| 性感美女视频在线观看免费精品| 亚洲av午夜精品无码专区| 免费无码A片一区二三区| 亚洲精品无码少妇30P| 日本xxwwxxww在线视频免费 | 日韩午夜理论免费TV影院| 亚洲精品乱码久久久久久自慰 | 亚洲综合视频在线| 久久不见久久见免费视频7| 亚洲一级毛片免观看| 成年性午夜免费视频网站不卡 | 成人网站免费大全日韩国产| 国产亚洲AV夜间福利香蕉149| 免费无码一区二区三区蜜桃| 亚洲三级电影网址| 免费无码又黄又爽又刺激| 亚洲A∨精品一区二区三区下载| 日韩精品电影一区亚洲| 国产精品免费看久久久无码| 免费夜色污私人影院网站| 国产精品入口麻豆免费观看| 国产精品亚洲专区在线观看| 亚洲av无码乱码在线观看野外| 本免费AV无码专区一区| 亚洲综合综合在线| 大胆亚洲人体视频| 未满十八18禁止免费无码网站| 久久久久精品国产亚洲AV无码| 国产中文字幕免费观看| 男人j进入女人j内部免费网站 | 美女被暴羞羞免费视频| 亚洲国产综合专区电影在线| 成人免费a级毛片无码网站入口 | 日本免费无遮挡吸乳视频电影| 中文字幕无码免费久久9一区9 | 国产亚洲一区二区在线观看|