【问题标题】:Oracle Partitioning Split Partition IssueOracle 分区拆分分区问题
【发布时间】:2019-07-04 15:04:43
【问题描述】:

我们有一个大约 2TB 的 VLDB,并且在每个日期对表进行分区。我们也有这些分区的索引映射。但是对于 2019 年,截至 2019 年 10 月 1 日的所有数据都进入了单个分区,因为由于拼写错误,创建了一个具有高值 2019 年 1 月 10 日的单个子分区。

我们正在尝试使用拆分分区来纠正此问题,即将 2019 年 2 月 10 日之前的数据移动到单个分区,然后删除空分区并为每个日期创建单个分区。这工作正常。

问题在于索引映射,因为从 10 月 1 日到 12 月 31 日已经存在映射,我们无法删除这些映射。因此,我们尝试从 2 月 11 日到 9 月 30 日创建映射。由于数据量大,此脚本需要很长时间。并且在此之后索引进入 UNUSABLE 状态,当我们尝试重建它需要很长时间!!

我们有什么更好的方法吗?

代码示例-

CREATE TABLE My_Table (
  id             NUMBER(9,0)  NOT NULL,
  source_system  VARCHAR(20),
  eod_date                  NUMBER(9,0)  NOT NULL,
  other columns
  )
  TABLESPACE XYZ001td
  PARTITION BY LIST (source_system)
  SUBPARTITION BY RANGE (
    eod_date
  )
  (
    PARTITION p_XYZ VALUES ('XYZ')
      NOCOMPRESS
      (
        SUBPARTITION XYZ_20181227 VALUES LESS THAN (20181228) TABLESPACE XYZ_20181227_td,
        SUBPARTITION XYZ_20181228 VALUES LESS THAN (20181229) TABLESPACE XYZ_20181228_td,
        SUBPARTITION XYZ_20181229 VALUES LESS THAN (20181230) TABLESPACE XYZ_20181229_td,
        SUBPARTITION XYZ_20181230 VALUES LESS THAN (20181231) TABLESPACE XYZ_20181230_td,
        SUBPARTITION XYZ_20181231 VALUES LESS THAN (20190101) TABLESPACE XYZ_20181231_td
        **SUBPARTITION XYZ_20191001 VALUES LESS THAN (20191002) TABLESPACE XYZ_20191001_td,**
        SUBPARTITION XYZ_20191002 VALUES LESS THAN (20191003) TABLESPACE XYZ_20191002_td,
        SUBPARTITION XYZ_20191003 VALUES LESS THAN (20191004) TABLESPACE XYZ_20191003_td,
      )
   )
/

CREATE INDEX inx_my_table_01
  ON My_table (
    source_system,
    eod_date    
  )
  TABLESPACE XYZ001td
  GLOBAL PARTITION BY HASH (
    source_system,
    eod_date
  )
  (
    PARTITION XYZ_20181227
      TABLESPACE XYZ_20181227_ti
      LOGGING,
    PARTITION XYZ_20181228
      TABLESPACE XYZ_20181228_ti
      LOGGING,
    PARTITION XYZ_20181229
      TABLESPACE XYZ_20181229_ti
      LOGGING,
    PARTITION XYZ_20181230
      TABLESPACE XYZ_20181230_ti
      LOGGING,
    PARTITION XYZ_20181231
      TABLESPACE XYZ_20181231_ti
      LOGGING
  )

【问题讨论】:

  • 如果您可以添加一些示例创建表和索引语句会有所帮助,这样我们就可以看到您的表和索引是如何创建的。我们也许可以提供帮助。
  • 为什么不能删除现有的索引映射?
  • 嗨 APC 我们收到 ORA-14330:无法删除全局哈希分区索引的分区有没有办法在不触及现有索引映射的情况下插入中间索引映射
  • @Boniest- 添加代码示例
  • 你是如何分割你的分区的,你是否在命令中更新全局索引?

标签: oracle indexing database-partitioning


【解决方案1】:

我不确定我是否完全理解这个问题。但我认为以下步骤可能会有所帮助

创建一个临时表并将所有 2019 年的数据复制到该表中 删除所有 2019 分区和索引。 重新创建分区并重新插入数据 创建本地索引

【讨论】:

  • 除了 INSERT 之外,您还可以交换分区 - 这可能会更快
【解决方案2】:

我们不能删除全局散列分区索引

ORA-14330: 无法删除全局散列分区索引的分区

有没有办法在不触及现有索引映射的情况下插入中间索引映射

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多