测试环境: Oracle10.2.0.4 , Linux as 5.3
例子1:
create table t2 (id number, name varchar2(20))
partition by hash(id)
partitions 4
store in (base_data,log_data) ;
可以看到生成的脚本是:
CREATE TABLE DFMS.T2
(
ID NUMBER,
NAME VARCHAR2(20 BYTE)
)
TABLESPACE LOG_DATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
PARTITION BY HASH (ID)
PARTITIONS 4
STORE IN (BASE_DATA,LOG_DATA,BASE_DATA,LOG_DATA)
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
例子2:
create table t3 (id number, name varchar2(20))
partition by hash(id)
partitions 4
store in (base_data,log_data,wip_data) ;
生成的脚本如下:
CREATE TABLE DFMS.T3
(
ID NUMBER,
NAME VARCHAR2(20 BYTE)
)
TABLESPACE LOG_DATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
PARTITION BY HASH (ID)
PARTITIONS 4
STORE IN (BASE_DATA,LOG_DATA,WIP_DATA,BASE_DATA)
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
例子3:
create table t4 (id number, name varchar2(20))
partition by hash(id)
partitions 7
store in (base_data,log_data,wip_data) ;
生成后的脚本是:
CREATE TABLE DFMS.T4
(
ID NUMBER,
NAME VARCHAR2(20 BYTE)
)
TABLESPACE LOG_DATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
PARTITION BY HASH (ID)
PARTITIONS 7
STORE IN (BASE_DATA,LOG_DATA,WIP_DATA,BASE_DATA,LOG_DATA,WIP_DATA,BASE_DATA)
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
可以看出,对于给出的表空间,如果分区数目大于给出的表空间数目,那么
系统会遵循循环使用表空间的原则,比如表空间为TS1,TS2,TS3, 有5个分区,
那么对应5个分区的表空间使用顺序是TS1,TS2,TS3,TS1,TS2 .
如果表空间数量多于分区数(虽然我们不会这么做),也简单测试一下,
显然使用和分区数一样的前几个表空间 。
create table t2 (id number, name varchar2(20))
partition by hash(id)
partitions 2
store in (base_data,log_data,wip_data) ;
生成的脚本是(只用到前面两个表空间):
CREATE TABLE DFMS.T2
(
ID NUMBER,
NAME VARCHAR2(20 BYTE)
)
TABLESPACE LOG_DATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
PARTITION BY HASH (ID)
PARTITIONS 2
STORE IN (BASE_DATA,LOG_DATA)
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;