设为首页 加入收藏

TOP

使用exchange方式切换普通表到分区表(二)
2014-11-24 01:08:33 来源: 作者: 【 】 浏览:16
Tags:使用 exchange 方式 切换 普通 分区表
N big_table2 FOR EACH ROW BEGIN :new.created_date := TO_CHAR (SYSDATE, 'yyyymmdd hh24:mi:ss'); END tr_bf_big_table2; /

4、使用exchange切换为分区表

--下面的这个命令就是通过exchange方式来直接将普通表来切换为分区表
ALTER TABLE big_table2
  EXCHANGE PARTITION big_table_2014
  WITH TABLE big_table
  WITHOUT VALIDATION
  UPDATE GLOBAL INDEXES;
  
SQL> select count(*) from big_table2;

  COUNT(*)
----------
     10000

DROP TABLE big_table;
RENAME big_table2 TO big_table;

ALTER TABLE big_table RENAME CONSTRAINT big_table_pk2 TO big_table_pk;
ALTER TABLE big_table RENAME CONSTRAINT bita_look_fk2 TO bita_look_fk;
ALTER INDEX big_table_pk2 RENAME TO big_table_pk;
ALTER INDEX bita_look_fk_i2 RENAME TO bita_look_fk_i;
ALTER INDEX bita_created_date_i2 RENAME TO bita_created_date_i;
ALTER TRIGGER tr_bf_big_table2 RENAME TO tr_bf_big_table;

5、使用split方式分割分区表

ALTER TABLE big_table
  SPLIT PARTITION big_table_2014 AT (TO_DATE('31-DEC-2012 23:59:59', 'DD-MON-YYYY HH24:MI:SS'))
  INTO (PARTITION big_table_2012 tablespace tbs1 ,
        PARTITION big_table_2014)
  UPDATE GLOBAL INDEXES;

ALTER TABLE big_table
  SPLIT PARTITION big_table_2014 AT (TO_DATE('31-DEC-2013 23:59:59', 'DD-MON-YYYY HH24:MI:SS'))
  INTO (PARTITION big_table_2013 tablespace tbs2,
        PARTITION big_table_2014)
  UPDATE GLOBAL INDEXES;

--收集统计信息,如果表很大的话,需要考虑使用并行度,采样值
--对于上述的操作中,本地分区索引和数据存储在指定的表空间,存在混用情形;对于全局索引则保存在缺省表空间,
--上面提到的2种情形,可以根据需要作相应调整
EXEC DBMS_STATS.gather_table_stats('LESHAMI', 'BIG_TABLE', cascade => TRUE);

--验证结果
SQL> col HIGH_VALUE format a45 wrapped
SQL> select table_name, partition_name,high_value,num_rows from user_tab_partitions
  2  where table_name='BIG_TABLE';

TABLE_NAME      PARTITION_NAME       HIGH_VALUE                                      NUM_ROWS
--------------- -------------------- --------------------------------------------- ----------
BIG_TABLE       BIG_TABLE_2012       TO_DATE(' 2012-12-31 23:59:59', 'SYYYY-MM-DD        3333
                                     HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

BIG_TABLE       BIG_TABLE_2013       TO_DATE(' 2013-12-31 23:59:59', 'SYYYY-MM-DD        3334
                                     HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

BIG_TABLE       BIG_TABLE_2014       MAXVALUE                                            3333     

本文参考:Partitioning an Existing Table using EXCHANGE PARTITION


Oracle 牛鹏社

更多参考

有关Oracle RAC请参考

有关Oracle 网络配置相关基础以及概念性的问题请参考:

有关基于用户管理的备份和备份恢复的概念请参考

有关RMAN的备份恢复与管理请参考

有关ORACLE体系结构请参考

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HBase-scanAPI通过scan读取表中数.. 下一篇数据库设计过程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: