在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;