巢狀表段的等同分割槽

yangtingkun發表於2010-02-27

LOB段、OVERFLOW段類似,巢狀表的儲存段也可以實現等同分割槽。

 

 

看一個簡單的例子:

SQL> CREATE OR REPLACE TYPE T_ADDRESS IS TABLE OF VARCHAR2(100);
  2  /

型別已建立。

SQL> CREATE TABLE T_PART_LOCAL
  2  (ID NUMBER,
  3  NAME VARCHAR2(30),
  4  CREATE_DATE DATE,
  5  ADDRESS T_ADDRESS)
  6  NESTED TABLE ADDRESS LOCAL STORE AS ADDRESS_TAB
  7  PARTITION BY RANGE (CREATE_DATE)
  8  (PARTITION P1 VALUES LESS THAN (TO_DATE('2010-1', 'YYYY-MM')),
  9  PARTITION P2 VALUES LESS THAN (TO_DATE('2010-2', 'YYYY-MM')));

表已建立。

SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE, PARTITION_NAME, TABLESPACE_NAME
  2  FROM USER_SEGMENTS;

SEGMENT_NAME                   SEGMENT_TYPE       PARTITION_NAME  TABLESPACE_NAME
------------------------------ ------------------ --------------- ---------------
ADDRESS_TAB                    TABLE PARTITION    P2              USERS
T_PART_LOCAL                   TABLE PARTITION    P1              USERS
ADDRESS_TAB                    TABLE PARTITION    P1              USERS
T_PART_LOCAL                   TABLE PARTITION    P2              USERS
SYS_C0011175                   INDEX                              USERS
SYS_FK0000086750N00004$        INDEX                              USERS

已選擇6行。

SQL> SELECT TABLE_NAME, INDEX_NAME, UNIQUENESS
  2  FROM USER_INDEXES;

TABLE_NAME                     INDEX_NAME                     UNIQUENES
------------------------------ ------------------------------ ---------
T_PART_LOCAL                   SYS_C0011175                   UNIQUE
ADDRESS_TAB                    SYS_FK0000086750N00004$        NONUNIQUE

可以看到和LOB段、OVERFLOW段的等同分割槽類似,NESTED TABLE也可以建立針對分割槽表的等同分割槽。

不同的是,NESTED TABLE的段也可以不已等同分割槽的方式儲存,而是儲存在一個單獨的段中,只要將上面的LOCAL關鍵字替換為GLOBAL即可:

SQL> DROP TABLE T_PART_LOCAL PURGE;

表已刪除。

SQL> CREATE TABLE T_PART_GLOBAL
  2  (ID NUMBER,
  3  NAME VARCHAR2(30),
  4  CREATE_DATE DATE,
  5  ADDRESS T_ADDRESS)
  6  NESTED TABLE ADDRESS GLOBAL STORE AS ADDRESS_TAB
  7  PARTITION BY RANGE (CREATE_DATE)
  8  (PARTITION P1 VALUES LESS THAN (TO_DATE('2010-1', 'YYYY-MM')),
  9  PARTITION P2 VALUES LESS THAN (TO_DATE('2010-2', 'YYYY-MM')));

表已建立。

SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE, PARTITION_NAME, TABLESPACE_NAME
  2  FROM USER_SEGMENTS;

SEGMENT_NAME                   SEGMENT_TYPE       PARTITION_NAME  TABLESPACE_NAME
------------------------------ ------------------ --------------- ---------------
ADDRESS_TAB                    NESTED TABLE                       USERS
T_PART_GLOBAL                  TABLE PARTITION    P1              USERS
T_PART_GLOBAL                  TABLE PARTITION    P2              USERS
SYS_C0011177                   INDEX                              USERS
SYS_FK0000086759N00004$        INDEX                              USERS

可以明顯的看到,使用GLOBAL關鍵字後,巢狀表不再以分割槽表的方式儲存,而是變成單獨的一張表,這種儲存模式類似不分割槽的GLOBAL索引。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-628049/,如需轉載,請註明出處,否則將追究法律責任。

相關文章