`
chinapkw
  • 浏览: 109107 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

男人oracle,分区表(一)

阅读更多
在做数据抽取时,我们可能会用分区表来做增量抽取,今天先看看分区表,简单创建,明天详细说明。

--创建一下范围分区表

CREATE TABLE t_partition 

(

       object_id NUMBER,

       object_name VARCHAR2(128)

)

PARTITION BY RANGE (object_id)

(

          PARTITION pMax VALUES LESS THAN (MAXVALUE) TABLESPACE users

);


--创建一个不含分区的表


CREATE TABLE t_no_partition as

select object_id,

       object_name

from dba_objects;


-- 将非分区表。快速转化为分区表,可加入without validation 不效验数据。会大大加快转化速度。


ALTER TABLE t_partition 

EXCHANGE PARTITION pmax WITH TABLE  t_no_partition;
/***********************************
 desc:   创建一个按时间分区的分区表
 time:   2010-1-6
 created:benson
***********************************/
--查看用户分区表状态
select * from user_tab_partitions;
--创建分区表按照时间分区
create table t_par(s_time date,id number)
partition by range(s_time)
(
    partition pmax values less than(maxvalue) tablespace users
);
--插入100条记录,100天的数据
insert into t_par select to_date('2010-12-31','yyyy-mm-dd')-mod(rownum,100),rownum from dba_objects where rownum<100;
--按时间分为两个区p1,pmax
alter table t_par 
split partition pmax at(to_date('2010-10-1','yyyy-mm-dd'))
into
(
    partition p1,
    partition pmax
);
--查看p1分区,可以看到p1分区为 2010-10-1以前的数据
SELECT * FROM t_par PARTITION(p1);
--插入一条2010-10-1日以前的数据。验证是否插入到了 partition p1中
insert into t_par values(to_date('2010-9-1','yyyy-mm-dd'),222);
--验证数据
SELECT * FROM t_par PARTITION(p1);

--小提示:


--如果有数据不符合分区条件为报ORA-14099 错误

ORA-14099:, all rows in table do not qualify for specified partition.

--有时我们在建造测试数据时,需要时间数据。可以这样创建。

select to_date('2009-12-31','yyyy-mm-dd')-mod(rownum,360) from dba_objects where rownum<365;

 

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics