您的位置:首页 > 其它

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

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

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

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

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

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

  例一:分区表增加分区

  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 );

表已创建。

  SQL> CREATE INDEX IND_TEST_1 ON TEST (ID) LOCAL;

  索引已创建。

  SQL> CREATE INDEX IND_TEST_2 ON TEST (NAME)

   2 TABLESPACE INDX LOCAL;

  索引已创建。

 SQL> CREATE INDEX IND_TEST1_1 ON TEST1 (ID) LOCAL;

  索引已创建。

  SQL> CREATE INDEX IND_TEST1_2 ON TEST1 (NAME)

   2 TABLESPACE INDX LOCAL;

  索引已创建。

  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> SELECT TABLE_NAME, A.INDEX_NAME, A.TABLESPACE_NAME

   2 FROM USER_IND_PARTITIONS A, USER_INDEXES B

   3 WHERE PARTITION_NAME = ’P2’

   4 AND A.INDEX_NAME = B.INDEX_NAME

   5 ORDER BY 1, 2;

  

  TABLE_NAME      INDEX_NAME      TABLESPACE_NAME

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

  TEST         IND_TEST_1      USERS

  TEST         IND_TEST_2      INDX

  TEST1        IND_TEST1_1     YANGTK

  TEST1        IND_TEST1_2     INDX

  

  SQL> DROP TABLE TEST;

  

  表已丢弃。

  

  SQL> DROP TABLE TEST1;

  

  表已丢弃。

  例四:复合分区索引

 

  SQL> SELECT DEFAULT_TABLESPACE FROM USER_USERS;

  

  DEFAULT_TABLESPACE

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

  YANGTK

  

  SQL> CREATE TABLE TEST (ID NUMBER, 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 (ID NUMBER, 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 (ID NUMBER, 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> CREATE INDEX IND_TEST_1 ON TEST (ID) LOCAL;

  

  索引已创建。

  

  SQL> CREATE INDEX IND_TEST_2 ON TEST (TIME)

   2 TABLESPACE INDX LOCAL;

  

  索引已创建。

  

  SQL> CREATE INDEX IND_TEST_3 ON TEST (STATE)

   2 LOCAL (PARTITION P1 TABLESPACE SYSTEM)

   3 TABLESPACE INDX;

  

  索引已创建。

  

  SQL> CREATE INDEX IND_TEST1_1 ON TEST1 (ID) LOCAL;

  

  索引已创建。

  

  SQL> CREATE INDEX IND_TEST1_2 ON TEST1 (TIME)

   2 TABLESPACE INDX LOCAL;

  

索引已创建。

  

  SQL> CREATE INDEX IND_TEST1_3 ON TEST1 (STATE)

   2 LOCAL (PARTITION P1 TABLESPACE SYSTEM)

   3 TABLESPACE INDX;

  

  索引已创建。

  

  SQL> CREATE INDEX IND_TEST2_1 ON TEST2 (ID) LOCAL;

  

  索引已创建。

  

  SQL> CREATE INDEX IND_TEST2_2 ON TEST2 (TIME)

   2 TABLESPACE INDX LOCAL;

  

  索引已创建。

  

  SQL> CREATE INDEX IND_TEST2_3 ON TEST2 (STATE)

   2 LOCAL (PARTITION P1 TABLESPACE SYSTEM)

   3 TABLESPACE INDX;

  

  索引已创建。

  

  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> SELECT TABLE_NAME, A.INDEX_NAME, A.TABLESPACE_NAME

   2 FROM USER_IND_SUBPARTITIONS A, USER_INDEXES B

   3 WHERE SUBPARTITION_NAME = ’SP2’

   4 AND A.INDEX_NAME = B.INDEX_NAME

   5 ORDER BY 1, 2;

  

  TABLE_NAME      INDEX_NAME      TABLESPACE_NAME

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

  TEST         IND_TEST_1      USERS

  TEST         IND_TEST_2      INDX

  TEST         IND_TEST_3      SYSTEM

  TEST1        IND_TEST1_1     TOOLS

  TEST1        IND_TEST1_2     INDX

  TEST1        IND_TEST1_3     SYSTEM

  TEST2        IND_TEST2_1     YANGTK

  TEST2        IND_TEST2_2     INDX

  TEST2        IND_TEST2_3     SYSTEM

  

  已选择9行。

转载自网络
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: