Hash分区表分区数与表空间不对应测试 - 循环使用表空间

测试环境:  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;

请使用浏览器的分享功能分享到微信等