本地分区索引如何确定表空间(1)

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

表和索引建立的时候如果不指定表空间,会建立在用户的默认表空间中。对于分区表和分区索引,则确定建立的表空间的规则要复杂一些,本文进行简单的总结

分区表的分区增加分区如果不指定表空间,会根据分区表的默认表空间,如果分区表没有指定默认表空间,则建立在用户的默认表空间上。参考例一。

复合分区表增加子分区如果不指定表空间,会根据分区上的默认表空间,如果分区上没有指定,则根据表上面的默认表空间,如果表上也没有指定,则建立在用户的默认表空间上。参考例二。

分区索引的情况比分区还要复杂一些。由于本地索引会随着增加分区的操作自动增加,因此,无法明确的为这个索引指定表空间。如果在建立分区索引时,给出了默认表空间,那么新增的索引分区所在表空间和新增表分区所在表空间保持一致。参考例三。

复合分区索引的情况和分区索引类似。当复合分区表增加子分区时,如果复合分区索引给出了分区默认表空间,则新建的索引子分区建立在索引分区默认表空间上,如果分区一级没有明确致命默认表空间,则依据索引一级的默认表空间创建新子分区,如果索引一级仍然没有设置明确设置表空间,则索引子分区的表空间和表中子分区的表空间保持一致。参考例四。

例一:分区表增加分区

SQL SELECT DEFAULT_TABLESPACE FROM USER_USERS;

DEFAULT_TABLESPACE

------------------------------

YANGTK

SQL CREATE TABLE TEST (ID NUMBER)

2

TABLESPACE USERS

3

PARTITION BY RANGE (ID)

4

(

5

PARTITION P1 VALUES LESS THAN (100)

6

TABLESPACE TEST

7

);

表已创建。

SQL CREATE TABLE TEST1 (ID NUMBER)

2

PARTITION BY RANGE (ID)

3

(

4

PARTITION P1 VALUES LESS THAN (100)

5

TABLESPACE TEST

6

);

表已创建。

SQL ALTER TABLE TEST ADD PARTITION P2 VALUES LESS THAN (200);

表已更改。

SQL ALTER TABLE TEST1 ADD PARTITION P2 VALUES LESS THAN (200);

表已更改。

SQL SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TAB_PARTITIONS

2

WHERE PARTITION_NAME = 'P2';

TABLE_NAME

TABLESPACE_NAME

------------------------------ ------------------------------

TEST

USERS

TEST1

YANGTK

SQL DROP TABLE TEST;

表已丢弃。

SQL DROP TABLE TEST1;

表已丢弃。

例二:复合分区表增加子分区

SQL SELECT DEFAULT_TABLESPACE FROM USER_USERS;

DEFAULT_TABLESPACE

------------------------------

YANGTK

SQL CREATE TABLE TEST (TIME DATE, STATE VARCHAR2(10))

2

TABLESPACE TOOLS

3

PARTITION BY RANGE (TIME) SUBPARTITION BY LIST (STATE)

4

(

5

PARTITION P1 VALUES LESS THAN (TO_DATE('2004-1-1', 'YYYY-MM-DD'))

6

TABLESPACE USERS

7

(

8

SUBPARTITION SP1 VALUES ('BJ')

9

TABLESPACE TEST

10

)

11

)

12

;

表已创建。

SQL CREATE TABLE TEST1 (TIME DATE, STATE VARCHAR2(10))

2

TABLESPACE TOOLS

3

PARTITION BY RANGE (TIME) SUBPARTITION BY LIST (STATE)

4

(

5

PARTITION P1 VALUES LESS THAN (TO_DATE('2004-1-1', 'YYYY-MM-DD'))

6

(

7

SUBPARTITION SP1 VALUES ('BJ')

8

TABLESPACE TEST

9

)

10

)

11

;

表已创建。

SQL CREATE TABLE TEST2 (TIME DATE, STATE VARCHAR2(10))

2

PARTITION BY RANGE (TIME) SUBPARTITION BY LIST (STATE)

3

(

4

PARTITION P1 VALUES LESS THAN (TO_DATE('2004-1-1', 'YYYY-MM-DD'))

5

(

6

SUBPARTITION SP1 VALUES ('BJ')

7

TABLESPACE TEST

8

)

9

)

10

;

表已创建。

SQL ALTER TABLE TEST MODIFY PARTITION P1 ADD SUBPARTITION SP2 VALUES ('SH');

表已更改。

SQL ALTER TABLE TEST1 MODIFY PARTITION P1 ADD SUBPARTITION SP2 VALUES ('SH');

表已更改。

SQL ALTER TABLE TEST2 MODIFY PARTITION P1 ADD SUBPARTITION SP2 VALUES ('SH');

表已更改。

SQL SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TAB_SUBPARTITIONS

2

WHERE SUBPARTITION_NAME = 'SP2';

TABLE_NAME

TABLESPACE_NAME

------------------------------ ------------------------------

TEST

USERS

TEST1

TOOLS

TEST2

YANGTK

SQL DROP TABLE TEST;

表已丢弃。

SQL DROP TABLE TEST1;

表已丢弃。

SQL DROP TABLE TEST2;

表已丢弃。

例三:本地索引分区

SQL SELECT DEFAULT_TABLESPACE FROM USER_USERS;

DEFAULT_TABLESPACE

------------------------------

YANGTK

SQL CREATE TABLE TEST (ID NUMBER, NAME VARCHAR2(30))

2

TABLESPACE USERS

3

PARTITION BY RANGE (ID)

4

(

5

PARTITION P1 VALUES LESS THAN (100)

6

TABLESPACE TEST

7

);

表已创建。

SQL CREATE TABLE TEST1 (ID NUMBER, NAME VARCHAR2(30))

2

PARTITION BY RANGE (ID)

3

(

4

PARTITION P1 VALUES LESS THAN (100)

5

TABLESPACE TEST

6

);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有