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

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

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

    tbwshc

    分區(qū)表UNUSED列后的EXCHANGE PARTITION操作

    碰到一個有意思的問題,如果分區(qū)表執(zhí)行過SET UNUSED操作,那么是否還可以進行分區(qū)的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.

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

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

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

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

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


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲 无码 在线 专区| 国产高清免费在线| 亚洲国产精品无码AAA片| 一级毛片免费一级直接观看| 国产大片线上免费看| 亚洲av无码一区二区三区人妖| 大陆一级毛片免费视频观看i| 亚洲一线产区二线产区区| 德国女人一级毛片免费| 亚洲av乱码一区二区三区按摩 | 99精品视频免费在线观看| 亚洲第一福利视频| 最近新韩国日本免费观看| 亚洲精品韩国美女在线| 中文字幕av无码无卡免费| 一本色道久久88—综合亚洲精品| 成年男女男精品免费视频网站| 亚洲乱亚洲乱妇24p| 亚洲精品色婷婷在线影院| 丝瓜app免费下载网址进入ios| 亚洲欧洲日产国码久在线观看| 亚洲精品视频免费看| 亚洲av日韩av永久无码电影| 日韩一卡2卡3卡4卡新区亚洲| 99精品视频在线观看免费| 亚洲美女aⅴ久久久91| 免费看的一级毛片| aaa毛片免费观看| 亚洲视频一区二区三区| 国产极品粉嫩泬免费观看 | 亚洲精品无码久久千人斩| 6080午夜一级毛片免费看| 亚洲乱妇老熟女爽到高潮的片| 亚洲成A人片在线观看无码3D | 风间由美在线亚洲一区| 亚洲人成网77777亚洲色| 免费看男女下面日出水来| 黄人成a动漫片免费网站| 亚洲一区二区三区高清| 日韩精品视频免费网址| 日本高清免费观看|