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

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

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

    tbwshc

    分區表UNUSED列后的EXCHANGE PARTITION操作

    碰到一個有意思的問題,如果分區表執行過SET UNUSED操作,那么是否還可以進行分區的EXCHANGE操作。

     

     

    一個簡單的測試就可以說明這個問題:

    SQL> create table t_part_unused
     2 (id number, name varchar2(30), other varchar2(30))
     3 partition by range (id)
     4 (partition p1 values less than (10),
     5 partition pmax values less than (maxvalue));

    Table created.

    SQL> insert into t_part_unused
     2 select rownum, table_name, 'abc'
     3 from user_tables;

    48 rows created.

    SQL> commit;

    Commit complete.

    SQL> alter table t_part_unused set unused (other);

    Table altered.

    SQL> desc t_part_unused
     Name                                    Null?   Type
     ---------------------------------------- -------- ------------------------
     ID                                               NUMBER
     NAME                                             VARCHAR2(30)

    SQL> create table t_temp_unused as
     2 select *
     3 from t_part_unused
     4 where 1 = 2;

    Table created.

    SQL> desc t_temp_unused
     Name                                    Null?   Type
     ---------------------------------------- -------- ------------------------
     ID                                               NUMBER
     NAME                                             VARCHAR2(30)

    SQL> alter table t_part_unused
     2 exchange partition p1
     3 with table t_temp_unused;
    with table t_temp_unused
              *
    ERROR at line 3:
    ORA-14097: column type or size mismatch in ALTER tb TABLE EXCHANGE PARTITION


    SQL> alter table t_temp_unused add (other varchar2(30));

    Table altered.

    SQL> alter table t_part_unused
     2 exchange partition p1
     3 with table t_temp_unused;
    with table t_temp_unused
              *
    ERROR at line 3:
    ORA-14096: tables in ALTER TABLE EXCHANGE PARTITION must have the same number of columns


    SQL> alter table t_temp_unused set unused (other);

    Table altered.

    SQL> alter table t_part_unused
     2 exchange partition p1
     3 with table t_temp_unused;

    Table altered.

    很明顯執行了SET UNUSED操作后的表,和普通的表是存在區別的,這種區別導致要求進行EXCHANGE的表必須同樣執行SET UNUSED操作,否則就無法執行EXCHANGE的操作。

    當目標表中不包含SETE UNUSED的列時,EXCHANGE操作會出現ORA-14097的錯誤,而如果把列添加到目標表,則會報錯ORA-14096,必須在目標表同樣對列執行SET UNUSED操作,才能通過EXCHANGE之前的檢查。

    其實這也不難理解,執行SET UNUSED命令后,數據字典雖然發生了改變,但是tb表上的數據并沒有刪除,而EXCHANGE操作只是將兩個段的數據字典進行互換,因此如果目標表上缺少SET UNUSED列,是無法執行EXCHANGE操作的。

    解決問題的方法有兩個,第一個就是例子中展示的可以在目標表上建立列然后同樣的執行SET UNUSED操作;另外的一個方法就是對于SET UNUSED列執行DROP COLUMN操作,徹底刪除該列。

    posted on 2012-08-30 13:07 chen11-1 閱讀(826) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 国产精品玖玖美女张开腿让男人桶爽免费看 | 亚洲av无码一区二区三区四区 | 无码的免费不卡毛片视频| 天天看片天天爽_免费播放| 久久亚洲国产成人影院| 在线观看免费污视频| 亚洲暴爽av人人爽日日碰| 日韩成人在线免费视频| 国产亚洲精品美女久久久久 | 一级女性全黄久久生活片免费| mm1313亚洲精品无码又大又粗| 天黑黑影院在线观看视频高清免费| 亚洲av无码专区在线观看素人| 一级a性色生活片久久无少妇一级婬片免费放 | 日韩大片免费观看视频播放| 亚洲成?Ⅴ人在线观看无码| 亚洲精品视频免费| 久久精品夜色国产亚洲av| 又大又硬又爽又粗又快的视频免费| 亚洲国产成人91精品| 精品剧情v国产在免费线观看 | 亚洲精品国产电影| 福利免费在线观看| 久久精品国产亚洲AV无码娇色| 毛片a级毛片免费观看免下载| 无遮挡呻吟娇喘视频免费播放| 亚洲精品无码av人在线观看| 24小时日本韩国高清免费| 亚洲另类无码专区首页| 久久久久一级精品亚洲国产成人综合AV区 | 国产成人高清亚洲一区久久| 久久精品国产亚洲7777| 中文字幕免费视频一| 亚洲精品人成网线在线播放va| 亚洲午夜爱爱香蕉片| 中文字幕视频免费| 美女视频黄频a免费观看| 亚洲ⅴ国产v天堂a无码二区| 青青青国产免费一夜七次郎| 99热在线日韩精品免费| 亚洲熟妇无码AV不卡在线播放 |