索引远程分区Oracle

时间:2019-03-01 14:11:41

标签: oracle oracle11g database-partitioning

我想索引表的一个分区,我不确定该怎么做,而且我无权访问数据库atm。

数据库是Oracle 11。 我的代码可以工作吗?

CREATE TABLE MARKET.PARTTABLE
(
  EXTRACT_DATE   DATE                   NOT NULL,
  LOAD_ID    NUMBER(10)                 NOT NULL,
  LOAD_DATE  DATE                       NOT NULL,
  NAME  VARCHAR2(200 BYTE)              NOT NULL
)
PARTITION BY RANGE (EXTRACT_DATE)
(   
    PARTITION PDEFAULT VALUES LESS THAN (MAXVALUE)
    NOLOGGING
    NOCOMPRESS 
    TABLESPACE MARKET_DAT
    PCTFREE    0
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                MAXSIZE          UNLIMITED
                BUFFER_POOL      DEFAULT
                FLASH_CACHE      DEFAULT
                CELL_FLASH_CACHE DEFAULT
               )
CREATE INDEX NAME_PARTTABLE ON PARTTABLE(NAME)
)
NOCACHE
NOPARALLEL
MONITORING;

运行此命令时,出现以下错误:

  

ORA-14020:可能未为表指定此物理属性   分区

这表明我有一个格式问题,但是实际上我找不到任何有用的文档来索引分区(或者也许我太愚蠢而无法理解它们)。

编辑: 我尝试过:

CREATE TABLE MARKET.PARTTABLE
(
  EXTRACT_DATE   DATE                   NOT NULL,
  LOAD_ID    NUMBER(10)                 NOT NULL,
  LOAD_DATE  DATE                       NOT NULL,
  NAME  VARCHAR2(200 BYTE)              NOT NULL
)
PARTITION BY RANGE (EXTRACT_DATE)
(   
    PARTITION PDEFAULT VALUES LESS THAN (MAXVALUE)
    NOLOGGING
    NOCOMPRESS 
    TABLESPACE MARKET_DAT
    PCTFREE    0
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                MAXSIZE          UNLIMITED
                BUFFER_POOL      DEFAULT
                FLASH_CACHE      DEFAULT
                CELL_FLASH_CACHE DEFAULT
               )
)
NOCACHE
NOPARALLEL
MONITORING;
CREATE INDEX NAME_PARTTABLE ON PARTTABLE(NAME)

它可以工作,但是我不确定索引是现在在分区上还是整个表上。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

您的第二条语句实际上并未在分区上创建INDEX。 分区索引应该定义为LOCALGLOBAL

由于您要创建的是非前缀索引(索引的最左列不是分区键),因此更好的选择是使用{{1 }}

LOCAL INDEX
  

..但是我不确定索引现在是否在分区上,或者   它在整个桌子上。

您可以查询数据字典视图CREATE INDEX NAME_PARTTABLE ON PARTTABLE(NAME) LOCAL; ALL_PART_INDEXES来检查索引名称。这些视图不会显示普通的非分区索引。

USER_PART_INDEXES

Partitioned Tables And Indexes