【发布时间】:2019-03-01 14:11:41
【问题描述】:
我想为我的表的一个分区建立索引,但我不知道该怎么做,而且我无权访问我的数据库 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)
它有效,但我不确定索引现在是在分区上还是在整个表上。有人可以帮帮我吗?
【问题讨论】:
-
您真的要请人测试您的代码吗?如果是这样的话,我可以给你一个现行利率。
-
嗯,我现在不在工作,所以我无法访问数据库,但我的同事让我帮忙。我会对创建分区索引的正确语法感到满意。
-
谢谢,这确实有帮助。但是我收到错误 ORA-14020: this physical attribute may not be specified for a table partition 这对我没有多大帮助,我会测试更多..谢谢
-
我测试了一个不同的解决方案,它不会引发错误,但我不知道我现在是否只是对表进行了索引,或者我是否真的对分区进行了索引。你能帮我一些吗?很抱歉没有提前测试
标签: oracle oracle11g database-partitioning