【问题标题】:How to pass all values into List Partition如何将所有值传递到列表分区
【发布时间】:2020-02-15 04:25:52
【问题描述】:

作为我的标题,我遇到了这样的麻烦:

我有一个名为 DISTRICT 的非分区表,现在我想使用 DBMS_REDEFINITION 将非分区表更改为分区表。

我创建了一个克隆表,该表具有与 DISTRICT TABLE 相同的数据类型:

CREATE TABLE PAR.DISTRICT_CLONE (
ID   NUMBER(10,0),
DISTRICT_NAME    VARCHAR2(1000) ,
STATUS     NUMBER(10,0),
LASTUPDATE DATE,
CREATEBY  VARCHAR2(1000) ,
UPDATEBY    VARCHAR2(1000),
CONSTRAINT PK_DISTRICT PRIMARY KEY (ID)
)
PARTITION BY LIST(DISTRICT_NAME)
(
PARTITION REGION_TOTAL VALUES('NY','LA','Washington','Cali','RD'........));

在 DISTRICT 表中,我在 DISTRICT_NAME 列有很多唯一值,我想对所有这些进行分区。

为此,我必须在那之后将 PARTITION REGION_TOTAL 中的所有值传递给 SPLIT。有没有办法让它变得更容易?

我正在使用 Oracle 12C

谢谢!

【问题讨论】:

  • 我只看到一个分区 REGION_TOTAL 将在一个分区中保存所有记录(因为您列出了分区键列 DISTRICT_NAME 的所有不同值)。这样的分区有什么用?无论如何,您的所有记录都只会放在一个分区中。为什么不使用 Hash 分区呢?
  • @ArtBajji 感谢您的建议。我知道我可以使用 Hash 分区而不是 List 分区。但这不是我预期的答案。我只想知道是否有任何方法可以替换所有值而不是传递每个值。

标签: oracle12c database-partitioning


【解决方案1】:

没有。不能在 CREATE TABLE 语法中替换 LIST PARTITION 的 VALUES 子句中的文字值,除非使用 NULL 或 DEFAULT。

查看here 了解详细语法。

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 2015-02-05
    • 2020-01-08
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多