【问题标题】:How to Advance Compress Partition And Sub Partition in Oracle TableOracle表中如何推进压缩分区和子分区
【发布时间】:2020-01-16 17:31:43
【问题描述】:

如何在 oracle 表中推进压缩分区和子分区。 该表已经有数据,我需要压缩旧数据以及即将到来的新数据。 分区名称是系统生成的名称。 数据库是Oracle11g

表结构:

CREATE TABLE SCH.STU_DATA
(
  ROLL_NO          NUMBER,
  P_DATE    DATE
  S_VALUE  VARCHAR2(10 CHAR)
)
NOCOMPRESS 
TABLESPACE DATA_PARTS
RESULT_CACHE (MODE DEFAULT)
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            BUFFER_POOL      DEFAULT
            FLASH_CACHE      DEFAULT
            CELL_FLASH_CACHE DEFAULT
           )
PARTITION BY RANGE (P_DATE)
INTERVAL( NUMTOYMINTERVAL( 1, 'MONTH'))
SUBPARTITION BY LIST (ROLL_NO)
SUBPARTITION TEMPLATE
  (SUBPARTITION ROLL_1 VALUES (1),
   SUBPARTITION ROLL_2 VALUES (2),
   SUBPARTITION ROLL_3 VALUES (3),
   SUBPARTITION ROLL_4 VALUES (4),
   SUBPARTITION ROLL_5 VALUES (5)
    )
(  
  PARTITION VALUES LESS THAN (TO_DATE(' 2019-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    NOLOGGING
    NOCOMPRESS 
    TABLESPACE DATA_PARTS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                BUFFER_POOL      DEFAULT
                FLASH_CACHE      DEFAULT
                CELL_FLASH_CACHE DEFAULT
               )
    SUBPARTITIONS 5 STORE IN (DATA_PARTS,DATA_PARTS,DATA_PARTS,DATA_PARTS,DATA_PARTS),  
  PARTITION VALUES LESS THAN (TO_DATE(' 2019-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    NOLOGGING
    NOCOMPRESS 
    TABLESPACE DATA_PARTS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                BUFFER_POOL      DEFAULT
                FLASH_CACHE      DEFAULT
                CELL_FLASH_CACHE DEFAULT
               )
    SUBPARTITIONS 5 STORE IN (DATA_PARTS,DATA_PARTS,DATA_PARTS,DATA_PARTS,DATA_PARTS),  
  PARTITION VALUES LESS THAN (TO_DATE(' 2019-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    NOLOGGING
    NOCOMPRESS 
    TABLESPACE DATA_PARTS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                BUFFER_POOL      DEFAULT
                FLASH_CACHE      DEFAULT
                CELL_FLASH_CACHE DEFAULT
               )
               )
NOCACHE
NOPARALLEL
MONITORING;

当我在 sql 下运行时,出现以下错误:

ALTER TABLE SCH.STU_DATA MOVE PARTITION SYS_P812325 TABLESPACE DATA_PARTS compress for all operations ;

错误信息:

ORA-14020: this physical attribute may not be specified for a table partition

【问题讨论】:

  • 您使用的是哪个版本的 oracle 11g?已将所有操作更改为使用 OLTP 进行压缩。

标签: sql oracle oracle11g partitioning


【解决方案1】:

我认为问题在于您的表是子分区的。

不确定这是否可行 - 我现在没有时间测试它 - 但试试这个。为整个表启用压缩,然后移动子分区。

  1. ALTER TABLE SCH.STU_DATA compress for all operations ;
  2. ALTER TABLE SCH.STU_DATA MOVE SUBPARTITION whatever TABLESPACE DATA_PARTS;

手工写出来可能有点恶心,但您可以使用 ALL_TAB_SUBPARTITIONS 来生成脚本。

【讨论】:

    猜你喜欢
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2012-09-04
    • 2021-11-10
    • 2020-04-15
    • 1970-01-01
    相关资源
    最近更新 更多