zoukankan      html  css  js  c++  java
  • oracle对已有表创建分区

    oracle根据已有表及数据创建表分区并导入数据
     
    假设情景: 
    现有System.Test表,数据量过千万,处于ts_Test表空间中。 
    表中有列A,将A=6与A小于6的数据进行分区 
      www.2cto.com  
    确保不会有外部程序修改需要建表分区的表 
     
    1. 对需要重建表分区的表进行备份,导出dmp,防止数据丢失 
    Sql代码  
    exp 用户名/密码@tns名 file=c:/test.dmp log=c:/test.log full=n rows=y buffer=10240000 tables=System.Test  
     
    2. 创建临时表,用来回导数据 
    Sql代码  
    create table system.Test_Bak  
    tablespace ts_Test  
    as  
    select * from System.Test;  
     
    3. 校验数据行数   www.2cto.com  
    Sql代码  
    select count('x') c1 from System.Test;  
    select count('x') c2 from System.Test_Bak;  
     
    如果行数不一致需查找原因 
     
    4. 重建表 
     
    Sql代码  
    truncate table System.Test;  
    drop table System.Test;  
     
     
    Sql代码  
    create table System.Test  
    tablespace ts_Test  
    PARTITION BY RANGE(A)  
    (  
      PARTITION P1 VALUES LESS THAN ('6')  
          TABLESPACE TS_TEST  
       ,  
      PARTITION P2 VALUES LESS THAN ('7')  
          TABLESPACE TS_TEST,  
      PARTITION P3 VALUES LESS THAN (MAXVALUE)  
          TABLESPACE TS_TEST  
    )  
    as  
    select   
      from System.Test_Bak;  
     
       第4步执行完之后,表里的数据就分散到了P1和P2分区中 
      www.2cto.com  
    5. 重建索引,将原有表中的索引再建到System.Test表中。 
     
    6. 检查分区 
    Sql代码  
       
      select decode(A,'1','1','2','1','3','1','4','1','5','1',a),  
    count('x') n  
      from System.Test  
     group by decode(A,'1','1','2','1','3','1','4','1','5','1',a)  
     order by decode(A,'1','1','2','1','3','1','4','1','5','1',a);  
     
    select count('x')  n1 from System.Test partition (p1);  
      
    select count('x')  n2 from System.Test partition (p2); 
  • 相关阅读:
    WCF ria services完美登陆功能(10)
    利用DYCOM快速建立wcf服务器端
    DYCom简要介绍
    断剑
    生命的价值
    飞翔的蜘蛛
    JSP中如何获取select标签选中的值
    wrapClass
    iconfont 在vue项目中的应用(iconcomponent组件)
    正则表达式
  • 原文地址:https://www.cnblogs.com/tangkai/p/2917100.html
Copyright © 2011-2022 走看看