ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 嵌套表段的等同分区

嵌套表段的等同分区

原创 Linux操作系统 作者:yangtingkun 时间:2010-02-27 23:45:08 0 删除 编辑

和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博客 ” ,链接:https://blog.itpub.net/4227/viewspace-628049/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11077344