Oracle创建普通表转换为分区表

     在oracle中要把表名重名名为字符串加上日期格式

   使用下面命令:  

 begin
 execute immediate 'alter table old_table_name rename to new_table_name'||to_char(sysdate, 'yyyymmdd');
 end;
 commit;

  利用交换表把普通表转换为分区表:


create table TABLE_NEW
(
  REQUEST_TIME DATE NOT NULL,
)
partition by range(REQUEST_TIME)
interval (numtodsinterval(1,'day'))
 (
    partition p_day_1 values less than (to_date('2014-1-15','yyyy-mm-dd'))
 )
;
这样创建一个新表。ALTER TABLE TABLE_NEW  EXCHANGE PARTITION p_day_1 WITH TABLE  TABLE_OLD,实现数据的交换。。交换后原来表中的数据将会分到

创建的第一个分区中。。

创建分区完成后,发现表的查询比原来慢了很多。。现在考虑创建分区索引来加快分区查询速度。。

CREATE INDEX IDX_ARD_S_RTM_PAR ON TABLE_NEW(REQUEST_TIME)  
  GLOBAL PARTITION BY RANGE(REQUEST_TIME)(  
         partition p_day_1 values less than (to_date('2014-1-15','yyyy-mm-dd')),
         PARTITION IDX_P3 values less than (MAXVALUE)  
  );  
创建测试数据: 

 begin
   for i in 1..12 loop
        insert into TABLE_NEW values(
trunc(to_date('2014-01-15','yyyy-mm-dd')+i));
    end loop;
  commit;
 end;

查看分区情况: 

select table_name,partition_name from user_tab_partitions where table_name='TABLE_NEW'; //注意要大写

查看分区数据:

select * From TABLE_NEW partition(p_day_1);

测试完毕可以重新命名:

rename table_name  to table_old;
rename table_new  to table_name;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值