CREATE TABLE temp_table
(
id VARCHAR2(32) DEFAULT sys_guid() NOT NULL,
datetime DATE,
filepath VARCHAR2(500 BYTE),
filestate CHAR(1 BYTE),
areacode VARCHAR2(20 BYTE),
fancode VARCHAR2(20 BYTE)
)
partition by range(DATETIME) interval(numtoyminterval(1,'year'))
subpartition by list(areacode)
subpartition template
(
subpartition part_0001 values ('0001') tablespace MX,
subpartition part_0002 values ('0002') tablespace MX,
subpartition part_0003 values ('0004') tablespace MX,
subpartition part_0004 values ('0005') tablespace MX,
subpartition part_0005 values ('0006') tablespace MX,
subpartition part_0006 values ('0007') tablespace MX,
subpartition part_0007 values ('0008') tablespace MX,
subpartition part_0008 values ('0009') tablespace MX,
subpartition part_0012 values ('0012') tablespace MX,
subpartition part_0018 values ('0018') tablespace MX,
subpartition part_0019 values ('0019') tablespace MX,
subpartition part_0020 values ('0020') tablespace MX,
subpartition part_0021 values ('0021') tablespace MX,
subpartition part_0022 values ('0022') tablespace MX,
subpartition part_0023 values ('0023') tablespace MX,
subpartition p_other values (default)
)
(
partition sp1 values less than (to_date('2019-08-01', 'yyyy-mm-dd')) tablespace MX );
–创建局部前缀索引;分区键作为索引定义的第一列
create index local_prefixed_index on fan_temp (fcode) local;
–创建局部非前缀索引;分区键未作为索引定义的第一列
create index local_nonprefixed_index on fan_temp (fcode) local;
报的错误是:ORA-00907:错误是右括号;
说明:partition by range(substr(focde, 0,6))不可以用函数;如果确定要这样做,要新增加一个字段了,把这个字段的值通过(substr(fcode, 0,6)) 来增加进去(areacode),这样就可以利用这个字段来实现分区了;
查询表分区信息:
select * from user_tab_partitions a where
a.table_name=upper(‘temp_table’);//查询temp_table下的的分区信息;
select * from user_tab_subpartitions a where a.table_name=upper(‘temp_table’);查询temp_table下的的子分区信息;
查询表分区数据信息:
select * from temp_table PARTITION(sp1);//查询表分区名为“sp1”的数据信息;
select * from temp_table SUBPARTITION(SP1_PART_0006);//查询子分区名为“SP1_PART_00061”的数据信息;