本地分區(qū)索引如何確定表空間(1)
2024-07-21 02:38:03
供稿:網(wǎng)友
表和索引建立的時候假如不指定表空間,會建立在用戶的默認(rèn)表空間中。對于分區(qū)表和分區(qū)索引,則確定建立的表空間的規(guī)則要復(fù)雜一些,本文進(jìn)行簡單的總結(jié)
分區(qū)表的分區(qū)增加分區(qū)假如不指定表空間,會根據(jù)分區(qū)表的默認(rèn)表空間,假如分區(qū)表沒有指定默認(rèn)表空間,則建立在用戶的默認(rèn)表空間上。參考例一。
復(fù)合分區(qū)表增加子分區(qū)假如不指定表空間,會根據(jù)分區(qū)上的默認(rèn)表空間,假如分區(qū)上沒有指定,則根據(jù)表上面的默認(rèn)表空間,假如表上也沒有指定,則建立在用戶的默認(rèn)表空間上。參考例二。
分區(qū)索引的情況比分區(qū)還要復(fù)雜一些。由于本地索引會隨著增加分區(qū)的操作自動增加,因此,無法明確的為這個索引指定表空間。假如在建立分區(qū)索引時,給出了默認(rèn)表空間,那么新增的索引分區(qū)所在表空間和新增表分區(qū)所在表空間保持一致。參考例三。
復(fù)合分區(qū)索引的情況和分區(qū)索引類似。當(dāng)復(fù)合分區(qū)表增加子分區(qū)時,假如復(fù)合分區(qū)索引給出了分區(qū)默認(rèn)表空間,則新建的索引子分區(qū)建立在索引分區(qū)默認(rèn)表空間上,假如分區(qū)一級沒有明確致命默認(rèn)表空間,則依據(jù)索引一級的默認(rèn)表空間創(chuàng)建新子分區(qū),假如索引一級仍然沒有設(shè)置明確設(shè)置表空間,則索引子分區(qū)的表空間和表中子分區(qū)的表空間保持一致。參考例四。
例一:分區(qū)表增加分區(qū)
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 );
表已創(chuàng)建。
SQL> CREATE TABLE TEST1 (ID NUMBER)
2 PARTITION BY RANGE (ID)
3 (
4 PARTITION P1 VALUES LESS THAN (100)
5 TABLESPACE TEST
6 );
表已創(chuàng)建。
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;
表已丟棄。
例二:復(fù)合分區(qū)表增加子分區(qū)
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 ;
表已創(chuàng)建。
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 ;
表已創(chuàng)建。
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 ;
表已創(chuàng)建。
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;
表已丟棄。
例三:本地索引分區(qū)
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 );
表已創(chuàng)建。
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 );